Алфавит. В алфавит языка Си входят:
- прописные и строчные буквы латинского алфавита;
- цифры;
- специальные знаки “ , {} | [ ] ( ) + - / % \ ; ‘ . : ? < = > _ ! & * # ~ ^
- неизображаемые символы, например, пробел, табуляция.
Идентификатор. Последовательность букв, цифр, символов подчеркивания, начинающаяся с буквы или символа подчёркивания, считается идентификатором языка Си. Например, Lab_1, size22, _min, TIME, time.
Прописные и строчные буквы различаются, т.е. два последних идентификатора различны. Идентификаторы могут иметь различную длину, но компилятор учитывает не более 31-го символа.
Переменная – это именованная область памяти. Отличительная особенность переменной – возможность связывать с её именем различные значения, совокупность которых определяется типом переменной. Каждая переменная перед её использованием в программе должна быть определена, т.е. для неё должна быть выделена память. Размер участка памяти зависит от типа переменной.
Основные типы переменных и их предельно допустимые значения:
char -128…127 1 байт
unsigned char 0…255 1 байт
int -32768…32767 2 байта
unsigned int 0…65535 2 байта
long -2147483648…2147483647 4 байта
unsigned long 0…4294967295 4 байта
float 3.4E-38…3.4E+38 4 байта
double 1.7E-308…1.7E+308 8 байт
long double 3.4E-4932…1.1E+4932 10 байт
1). Операция присваивания : “=”.
2). Аддитивные операции : “ +”,”-“;
3). Мультипликативные : “*”,”/”,”%”; % - получение остатка от деления,
“/” - целочисленное деление (остаток отбрасывается);
4). Логические операции : && (and), || (or), ! (not);
5). Операции отношения : == (равно), != (не равно), < (меньше), > (больше), <=
(меньше или равно), >= (больше или равно);
6). Операции модификации : *= присваивание после умножения (p *= 2;
эквивалентно p=p*2;) /= присваивание после деления (p /= 2; эквивалентно
p=p/2; ) += присваивание после суммирования (a += b; эквивалентно a=a+b;)
-= присваивание после вычитания (a -= b; эквивалентно a=a-b;) %=
присваивание после деления по модулю (n %= 3; эквивалентно n=n % 3;)
a++ (--) постфиксное изменение (a++; эквивалентно a=a+1; значение а
сначала используется, затем изменяется) ++(--)a префиксное изменение
(++a; эквивалентно a=a+1; значение а сначала изменяется, затем
используется).
1). Оператор вывода :
printf(<форматная строка>, переменные);
Форматная строка может включать текст для вывода на экран, спецификаторы формата, управляющие символы. Список переменных должен быть согласован со спецификаторами формата по типу и количеству.
Спецификатор формата:
%[флаг] [ширина] [. точность] [l]
[флаг] : “-“ или “+” ; ”-“ выравнивает текст вывода по левому краю; “+” выводит знак для положительных и отрицательных значений;
[ширина] : минимальный размер поля вывода;
[.точность] : для вещественных чисел количество знаков после десятичной точки;
[l] : для вывода целых чисел типа long;
При выводе переменных различных типов используются следующие форматы:
%c – char;
%d – целое десятичное:
%u – беззнаковое целое;
%o – целое восьмеричное;
%x – целое шестнадцатеричное;
%s – строка;
%f – вещественное число с фиксированной точкой;
%e – вещественное число в экспоненциальной форме;
%g – вещественное число ( выводится в формате %f или %e , что более компактно).
Управляющие символы:
\n – перевод строки;
\t – табуляция;
\v – вертикальная табуляция;
\b – возврат на 1 символ;
\r – возврат на начало строки;
\a – звуковой сигнал.
2). Оператор ввода :
scanf(<форматная строка>, адреса переменных);
В отличие от printf () форматная строка должна включать в себя только форматы (если их несколько, они разделяются пробелами). Количество форматов определяется количеством переменных. Форматы при вводе переменных различных типов такие же, как и при выводе. Перед именами строк и массивов операция взятия адреса & не ставится, т.к. имя строки или массива само определяет их адрес.
Чаще всего линейные алгоритмы используются для программирования вычислений по формулам. В этом случае удобно использовать набор стандартных функций Си, содержащихся в библиотеке и доступных при подключении заголовочного файла math.h :
sin (x) - sin x; cos (x) – cos x ; tan(x) - tg х ; log (x) - ln x; log10(x) – lg x; exp(x) - показательная функция ex ; sqrt (x)- корень квадратный от х; роw(x, y) – x в степени y; abs(x)- модуль x.; acos(x) – arccos x; asin(x) – arcsin x; atan(x)- arctg x; sinh(x)- sh x; cosh (x) – ch x; tanh(x)-th x.
Для тригонометрических функций аргумент х измеряется в радианах и имеет тип double, как и значения функций.
Пример программы линейной структуры:
Вычислить площадь и стороны прямоугольного треугольника, если известны гипотенуза c и угол x. Для вычислений воспользуемся формулами :
a=c• sin x; b=c• cos x; S=ab;
Программа вычислений имеет вид:
// вычисление сторон и площади треугольника #include <stdio.h> //заголовочный файл для организации ввода-вывода #include <math.h> //заголовочный файл математических функций main() //главная функция { float a,b,c,x, S; //описание переменных вещественного типа printf ("\n Введите гипотенузу и угол треугольника "); scanf ("%f%f ",&c,&x); // ввод значений вещественного типа a=c*sin(x); b=c*cos(x); S=a*b; printf ("\n Результаты: a=%7.2f b=%7.2f S=%7.2f ",a, b, S); return 0; }
Комментарий в программе не влияет на компиляцию программы, а служит для разъяснения действий основных блоков текста и программы в целом. Однострочный комментарий действует от двух символов // до конца строки. Многострочный комментарий заключается в пары символов /* и */.
Вторая строка программы #include <stdio.h> является директивой компилятора для включения заголовочного файла stdio.h для доступа к средствам ввода-вывода (связи с внешними устройствами), отсутствующими в самом языке Си. Третья строка - #include<math.h> является директивой компилятора для включения заголовочного файла math.h, обеспечивающего выполнение математических функций.
Программа на языке Си состоит из ряда функций, из которых функция main (главная) является обязательной и служит точкой входа в программу. В круглые скобки заключаются параметры функции, причем наличие круглых скобок обязательно, если даже список параметров пуст. В фигурные скобки заключаются составной оператор (несколько операторов). Для придания тексту программы наглядности открывающая и соответствующая ей закрывающая фигурные скобки печатаются на одном уровне, а заключенный между ними текст сдвигается на 1-2 символа вправо, вложенный блок также сдвигается вправо и т.д. Образуется иерархия вложенных блоков, придающая программе на Си характерный вид.
В программе описаны переменные a, b, c, х, S вещественного типа (float). В отличие от других языков в Си учитывается регистр при определении имени переменной, т.е. s и S – разные переменные. Функции printf и scanf доступны при подключении заголовочного файла stdio.h и служат для вывода на экран и ввода с клавиатуры соответственно. Управляющие символы \n в функции printf служат для перевода на новую строку. Символ & в функции scanf указывает на адрес вводимой переменной. Ввод и вывод переменных вещественного типа производится в формате f. Признаком форматного вывода в функции printf является %. При выводе между знаком процента и форматной переменной f можно включить общую ширину поля вывода и число позиций после десятичной точки. Оператор return 0; служит для выхода из функции main , 0 является признаком успешного окончания программы. Завершает текст программы закрывающая фигурная скобка, означающая конец функции main.
Экран интегрированной среды содержит 4 основные части: главное меню, окно редактирования, окно сообщений, строку состояния. Главное меню содержит пункты: File (Файл), Edit (Редактирование), Search (Поиск), Run (Исполнить), Compile (Компиляция), Debug (Отладка), Project (Проект), Options (Параметры), Window (Окно), Help (Помощь). Рассмотрим основные.
Меню File содержит команды: Open (Открыть существующий программный файл), New (Создать новый файл), Save (Сохранить редактируемый файл), Save as (Сохранить как - файл сохраняется под новым именем), Change dir (Изменить каталог - задаются входные и выходные каталоги, где хранятся тексты программ), Quit (Выход из Среды). В меню File приведены также соответствующие “горячие “ клавиши для этих команд.
Меню Edit содержит команды Cut (Вырезать), Copy (Копировать), Paste (Вставить), Clear (Очистить).
Меню Compile содержит команды Compile (Компиляция) - клавиши [Alt]+[F9]. Меню Run содержит пункт Run (Исполнить) - клавиши [Ctrl] +[F9]. Меню Help позволяет обратиться к справочной системе, содержащей пункты Contents (Содержание), Index (Предметный указатель), Topic search (Тематический поиск). Клавиша [F1] приводит к открытию окна подсказки. Для получения справки о конкретной функции надо установить курсор на любой символ имени функции и нажать [CTRL]+[F1].
Для запуска Си можно использовать меню программы Far ([F2]). Входим в меню File ([F10] - File - Change dir) и устанавливаем в пункте Input Directory (Входной каталог) имя рабочего каталога, например С:\temp\P_64.
Затем набираем программу lab1.c, которая находит стороны и площадь треугольника. Расширение .c является для компилятора признаком того, что программа составлена на языке Си, расширение .cpp - признак программы на языке Си++, объектно-ориентированном расширении языка Си.
Набрав текст программы, сохраните ее, нажав F2 и указав имя программы. Компилируем программу, нажав ALT+F9. После исправления ошибок запустим программу на выполнение, нажав CTRL+F9. Будет выдано сообщение: “Введите гипотенузу и угол треугольника ”. Вводим числа через пробел, на экране появляется результат. Для просмотра экрана пользователя с результатами нажимаем ALT+F5. После просмотра нажимаем любую клавишу для возврата в Интегрированную Среду.
1. Понятие идентификатора.
2. Определение переменной. Основные типы переменных.
3. Типы операций в языке Си.
4. Структура программы на языке Си.
5. Для чего используются заголовочные файлы?
6. Как откомпилировать программу?
7. Как выполнить программу?
8. Как просмотреть результат выполнения?