Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






С Т Р У К Т У А С И - П Р О Г Р А М М Ы






 

Программа на Си, каких бы размеров она ни была, состоит из функций и переменных. Функции содержат инструкции, описывающие вычисления, которые необходимо выполнить, а переменные хранят значения, используемые в процессе этих вычислений.

Обычная СИ-программа представляет собой определение функции main, которая для выполнения необходимых действий вызывает другие функции. Обычно можно давать любые имена для своих функций, но “main" - особое имя: любая программа начинает свои вычисления с первой инструкции функции main. Кроме функций, которые разрабатываются самим программистом, может использоваться большое количество функций, включенных в библиотеки Си.

Пример Си-программы, в которой с клавиатуры вводится значение вещественной переменной x, вычисляется y=x2 и распечатывается на экране.

// Возведение числа в квадрат

//Заголовочные файлы включаемых библиотек

#include < stdio.h>

#include< conio.h>

#include< windows.h>

//Функция возведения вещественного числа в квадрат

double Sqr(double x)

{

return x*x; //возведения х в квадрат

}

//Главная функция программы

int main()

{

//Определение переменных

double x, y;

/*Функции для подключения кириллицы в консольном окне

при вводе/выводе данных*/

SetConsoleOutputCP(1251);

SetConsoleCP(1251);

//Ввод значения аргумента

printf(" \n Введите значение x= ");

scanf(" %lf", & x);

//Возведение x в квадрат, запись его в y

y=Sqr(x);

//Печать результата

printf(" \n Квадрат х=%-9.3lf составляет y=%-9.3lf", x, y);

//Ожидание нажатия клавиши

getch();

return 0;

}

В тексте программы использованы комментарии для пояснения хода выполнения вычислений, которые значительно облегчают понимание и сопровождение программы.

В примере используются 2 функции Sqr() и main(), определенные в программе. Скобки (), стоящие после идентификатора, указывают на то, что это функция. Также используются функции, определенные в библиотеках Си. Для того, чтобы сообщить компилятору, что он должен включить информацию о подключаемых библиотеках, в первых 3-х строках программы используются директивы препроцессора, начинающиеся с инструкции #include. В директивах указаны имена заголовочных файлов библиотек. Для функций pintf() и scanf() подключается заголовочный файл стандартной библиотеки ввода-вывода stdio.h, в котором они определены. Функции SetConsoleOutputCP(1251) и SetConsoleCP(1251) используются для подключения кодовой страницы 1251 (кириллические символы) при вводе/выводе данных в консольном окне. Они определены в файле windows.h. Функция getch(), определенная в файле стандартной библиотеки работы с консолью conio.h, ожидает ввода символа с клавиатуры и возвращает его код.

В языке СИ все переменные должны быть определены до их использования. Определения устанавливают соответствие имени и атрибутов переменной, функции или типа. Определение переменной вызывает выделение памяти для хранения ее значения.

Строка double Sqr(double x) является определением функции с именем Sqr. Один из способов передачи данных между функциями состоит в том, что функция при обращении к другой функции передает ей список значений, называемых аргументами. Этот список берется в скобки и помещается после имени функции. Функции Sqr в качестве параметра передается значение вещественного аргумента (double x). Слово double перед именем функции указывает на то, она возвращает значение вещественного типа.

Функция - имеет { " блок" } в фигурных скобках. Блок - это инструкции, написанные на языке Си. Он определяет, что делает функция. Знак «;» после блока в определении функции не ставится. Блок содержит последовательность объявлений, определений и операторов. Возведение аргумента в квадрат выполняется в операции x*x. Оператор return возвращает из функции вычисленное значение. Поэтому блок функции Sqr() содержит только 1 оператор.

Главная функция программы main() не ждет никаких аргументов, что отмечено пустым списком ().Онаначинается с определения переменных. При определении переменных указывается тип, после которого задается список переменных данного типа, заканчивающийся знаком "; ":

тип < список переменных>;.

В функции main() определены две переменные double x, y;. При определении переменных их можно проинициализировать (задать начальное значение). Определение double x, y=0.0; указывает, что переменной y будет присвоено значение 0.

Функция вызывается по имени, после которого, в скобках, указывается список аргументов. Таким образом, приведенные ниже строки - это вызов функций с аргументом " 1251":

SetConsoleOutputCP(1251);

SetConsoleCP(1251);.

Эти функциииспользуются для подключения кириллицы в консольном окне при вводе/выводе данных. При вызове функции SetConsoleOutputCP(1251) выполнение main() приостанавливается, и управление передается на первый оператор вызванной функции. После завершения работы вызванной функции управление возвращается в main() на следующий оператор.

При вводе значения х функцией printf() в консольном окне будет напечатано переданное ей в параметрах приглашение «Введите значение x=». Функция scanf() приостановит выполнение программы, открывает консольное окно и ожидает окончания ввода данных. Если ввести, например, 123.54 и нажать < Enter>, выполнение программы продолжится.

После ввода значения аргумента х выполняется оператор присваивания:

y=Sqr(x);

В нем вызывается функция Sqr(), которой в параметре передается значение х. Функция возвращает значение х2, которое будет сохранено в переменной y.

Далее функцией printf() результат распечатывается на экране монитора. На экран выводятся значения х и у= х2, отформатированные на ширину поля из 9-и знаков с 3-мя знаками после десятичной точки, и выровненные по левому краю:

Квадрат х=123.540 составляет y=15262.132.

 

При вызове функции getch(), вновь откроется консольное окно, и будет ожидаться ввод символа с клавиатуры. Пока ожидается ввод символа, консольное окно остается открытым. В это время можно просмотреть полученные результаты. После чего нажимается любая клавиша. Функция getch(), вернет код нажатой клавиши. Но, так как он в программе использоваться не будет, он не сохраняется в переменной.

Работа функции main() заканчивается оператором

return 0;

Функция возвращает операционной системе значение 0 – признак успешного завершения программы.

Таким образом, можно сказать, что программа на языке Си состоит из функций, определений и директив. Одна из функций должна иметь имя main. Общая структура программы на Си следующая:

директивы_препроцессора

определения_объектов;

определение_функции_1

определение_функции_2

...

определение_функции_N

Определение функции и имеет структуру:

тип имя_функции(< список параметров>)

{

определения_объектов;

исполняемые_операторы;

}

 

 
 

 

 


 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.