1.1. Алфавит и идентификаторы языка Си

Алфавит. В алфавит языка Си входят:

- прописные и строчные буквы латинского алфавита;

- цифры;

- специальные знаки “ , {} | [ ] ( ) + - / % \ ; ‘ . : ? < = > _ ! & * # ~ ^

- неизображаемые символы, например, пробел, табуляция.

Идентификатор. Последовательность букв, цифр, символов подчеркивания, начинающаяся с буквы или символа подчёркивания, считается идентификатором языка Си. Например, Lab_1, size22, _min, TIME, time.

Прописные и строчные буквы различаются, т.е. два последних идентификатора различны. Идентификаторы могут иметь различную длину, но компилятор учитывает не более 31-го символа.

 

1.2. Переменные

Переменная – это именованная область памяти. Отличительная особенность переменной – возможность связывать с её именем различные значения, совокупность которых определяется типом переменной. Каждая переменная перед её использованием в программе должна быть определена, т.е. для неё должна быть выделена память. Размер участка памяти зависит от типа переменной.

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

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.3. Операции

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.4. Операторы ввода/вывода

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 () форматная строка должна включать в себя только форматы (если их несколько, они разделяются пробелами). Количество форматов определяется количеством переменных. Форматы при вводе переменных различных типов такие же, как и при выводе. Перед именами строк и массивов операция взятия адреса & не ставится, т.к. имя строки или массива само определяет их адрес.

 

1.5. Программирование алгоритма линейной структуры на языке Си

Чаще всего линейные алгоритмы используются для программирования вычислений по формулам. В этом случае удобно использовать набор стандартных функций Си, содержащихся в библиотеке и доступных при подключении заголовочного файла 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.

 

1.6. Интегрированная Среда Borland C

Экран интегрированной среды содержит 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].

 

1.7. Ввод и выполнение программ в Интегрированной Среде Borland C

Для запуска Си можно использовать меню программы Far ([F2]). Входим в меню File ([F10] - File - Change dir) и устанавливаем в пункте Input Directory (Входной каталог) имя рабочего каталога, например С:\temp\P_64.

Затем набираем программу lab1.c, которая находит стороны и площадь треугольника. Расширение .c является для компилятора признаком того, что программа составлена на языке Си, расширение .cpp - признак программы на языке Си++, объектно-ориентированном расширении языка Си.

Набрав текст программы, сохраните ее, нажав F2 и указав имя программы. Компилируем программу, нажав ALT+F9. После исправления ошибок запустим программу на выполнение, нажав CTRL+F9. Будет выдано сообщение: “Введите гипотенузу и угол треугольника ”. Вводим числа через пробел, на экране появляется результат. Для просмотра экрана пользователя с результатами нажимаем ALT+F5. После просмотра нажимаем любую клавишу для возврата в Интегрированную Среду.

1.8. Контрольные вопросы

1. Понятие идентификатора.

2. Определение переменной. Основные типы переменных.

3. Типы операций в языке Си.

4. Структура программы на языке Си.

5. Для чего используются заголовочные файлы?

6. Как откомпилировать программу?

7. Как выполнить программу?

8. Как просмотреть результат выполнения?