Для запуска программы на выполнение необходимо в среде программирования выбрать пункт меню "Run". При этом выполняется три операции: предкомпиляция, компиляция и компоновка. На рис. 1 показана схема получения загрузочного модуля из исходного текста программы prog1.c.
На этапе предкомпиляции специальная программа - препроцессор производит преобразования в исходном тексте программы (файл с расширением.с) согласно директив препроцессора (начинаются с #).
В процессе компиляции специальная программа – компилятор языка С просматривает исходный текст программы, проверяет его на наличие синтаксических ошибок (нарушений правил языка С). Если ошибки есть, то об этом выдаются соответствующие сообщения и компиляция прекращается. Если ошибок нет, то формируется объектный модуль программы (файл с расширением.obj), который представляет собой результат перевода операторов языка С в наборы машинных команд в двоичном коде.
На этапе компоновки специальная программа – компоновщик просматривает объектный модуль и определяет наличие вызовов стандартных функций, подключает необходимые библиотеки языка С (файлы с расширением.lib). В результате формируется загрузочный модуль – выполняемая программа (файл с расширением.exe), в который включены машинные коды из объектного модуля и необходимые стандартные функции из библиотек.
нет ошибок
|
|
|
|
|
|
|
есть ошибки
сообщения об ошибках
Рисунок 1 – Схема получения загрузочного модуля из исходного текста программы
|
Пример простой программы на языке C
Ниже приведен исходный текст простой программы, составленной на языке C, в которой производится описание вещественного массива x из 20 элементов, вычисление значений его элементов, определение их среднего арифметического значения и вывод результатов на экран.
# include <stdio.h> /* Включение файла с описанием функций ввода-вывода */
# include <math.h> /* Включение файла с описанием математических функций */
# include <conio.h> /* Включение файла с описанием функций управления консолью*/
void main ()
{
int i;
float x[20], s;
clrscr();
printf(“ Массив X \n”);
for (i=0; i<20; i++)
{ x[i]=i*1.5*cos(2.1*i);
s+=x[i];
printf(“%.1f”,x[i]);
}
s/=20;
printf(“Среднее значение S=%.3f \n”,s);
getch(); /* Ожидание нажатия любой клавиши*/
}
Операторы языка С
Операторы предназначены для выполнения в программах различных операций: арифметических, логических, ввода, вывода.
Оператор присваивания
Данный оператор производит присвоение переменной, указанной в левой его части, значения выражения, стоящего в правой части оператора.
Формы записи оператора:
а) простой оператор
V = a;
где V – переменная;
= – операция присваивания (положить равным);
а – арифметическое выражение.
Примеры:
X = 1.8;
Y = 2.7*exp(sin(x + 5.1));
б) многоместный оператор
C = D = M = … = X = V = a;
x = a = f = 2.7; → x=2.7; a=2.7; f=2.7;
в) совмещенный оператор
v+ = a; → v = v + a;
v- = a; → v = v – a;
v* = a; → v = v * a;
v/ = a; → v = v / a;
v%= a; → v = v % a;
Примеры:
X+ = 0.5; → X = X + 0.5;
P* = y; → P = P * y;
Составной оператор
Используется для объединения нескольких операторов в один блок.
Форма записи:
{
оператор 1;
…………
оператор N;
|
}
Пример:
{
k++;
s+ =y;
}
Вывод данных на дисплей
Используется стандартная функция printf (…);
В начале программы необходимо записать директиву препроцессора
#include <stdio.h>
Форма записи:
printf (“ управляющая строка “, список вывода);
В управляющей строке записываются:
- форматы - % тип
- текст – записывается прямо в управляющей строке
- управляющие символы:
‘\n’ – перевод курсора на начало следующей строки;
‘\t’ - табуляция (курсор сдвигается вправо на 6 позиций)
Список вывода – перечень переменных, выражений, значения которых будут выведены на экран:
printf (“…”, a, x, f, z);
Форматы данных
1. Для целых значений (чисел):
%d – десятичное число с знаком
%u – десятичное число без знака (положительное)
%o – восьмеричное число
%x – шестнадцатеричное число
2. Для вещественных чисел:
%f – вещественное число с точкой xxx.yyy
%e – вещественное число с порядком xxx.yyyE±pp
%g – вывод по формату %f или %e (автоматически)
3. Для символьных значений
%c – один символ
%s – строка
Пример:
Описания: int n = -125;
unsigned k = 10;
float t = 29.361, v = -3.692E-5;
char q = ‘!’, mc[10] = “компьютер”;
Вывод: printf (“ Исходные данные: \n”);
printf (“ n = %d k = %u t = %f \n”, n, k, t);
printf (“ v = %e q = %c mc = %s \n”, v, q, mc);
Получим на экране:
Исходные данные:
n = -125 k = 10 t = 29.361000
v = -3.692000E-05 q =! mc = компьютер