
- •Федеральное агентство по образованию
- •Краткая история языка с
- •Особенности и основные понятия языка Си
- •Структура программы
- •Типы данных
- •Классификация типов данных
- •Вещественные
- •Логический
- •Диапазоны представления данных
- •Объявление переменных
- •Константы в языке Си
- •Операции языка Си. Приоритет операций
- •Операция присваивания
- •Арифметические операции
- •Операции отношения
- •Логические операции
- •Поразрядные операции
- •Операцияsizeof
- •Операция выбора по условию
- •Операция запятая
- •Приведение типов Неявное преобразование типов
- •Явное преобразование типов
- •Основные средства ввода-вывода на Си Понятие потока
- •Стандартные потоки
- •Функции потокового ввода-вывода
- •Функции ввода
- •Ввод символов
- •Ввод строк
- •Форматированный ввод
- •Операторы языка Си
- •Оператор if
- •Оператор switch
- •Оператор while
- •Оператор do while
- •Оператор for
- •Оператор break
- •Оператор continue
- •Функции вывода на экран
- •Вывод символов
- •Функция вывода строк puts()
- •Форматированный вывод
- •Указатели в языке Си
- •Адресная арифметика
- •Массивы
- •Функции в языке с
- •Прототипы функций
- •Указатели типа void
- •Функции, возвращающие указатели
- •Встраиваемые функции
- •Рекурсивные функции
- •Функции с переменным числом аргументов
- •Аргументы функции main()
- •Область действия и область видимости
- •Локальные переменные
- •Локальные переменные в функции Main()
- •Глобальные переменные
- •Классы памяти
- •Указатели на указатели
- •Указатели и многомерные массивы
- •Массивы указателей
- •Указатели на функции
- •Операции над строками символов Определение длины строки
- •Копирование строк
- •Поиск в строках
- •Преобразования символов в строках
- •Другие функции для работы со строками
- •Преобразования строк в числа
- •Преобразования чисел в строки
- •Функции анализа символов
- •Распределение памяти
- •Манипулирование блоками памяти
- •Типы, определяемые пользователем
- •Перечислимый тип
- •Структуры
- •Сложные структуры
- •Битовые поля в структурах
- •Объединения
- •Работа с файлами Связь между потоками и файлами
- •Типы дисковых файлов
- •Открытие файла
- •Запись и чтение данных
- •Форматированный ввод-вывод Форматированный вывод
- •Int fprintf (file *fp, char *fmt, ...);
- •Форматированный ввод
- •Символьный ввод
- •Символьный вывод
- •Блочный ввод-вывод
- •Закрытие файла
- •Директивы препроцессора
- •Директива #include
- •Директива #define
- •Директивы условной компиляции
- •Директива #undef
- •Предопределенные макросы
- •69 Лекции по курсу «Языки программирования» Часть III
Операторы языка Си
Оператор всегда заканчивается «;».
Пустой оператор – в отдельной строке «;»
Составной оператор или блок– группа из 2-х или более операторов заключенные в фигурные скобки ({}).
Простые выражения состоят из одного элемента: переменной численного типа, константы.
Сложные выражения состоят из простых выражений., соединенных знаками операций.
Оператор if
if (<выражение>)
<оператор>;
else <оператор>;
И в Паскале, и в Си else (иначе) – необязательная часть, а <оператор> может быть заменен блоком.
Оператор if и в Си и в Паскале может иметь сокращенную форму, когда отсутствует часть, начинающаяся с else.
Примеры.
if ( B==0 )
puts("c is undefined");
else {
c = a/b;
printf("c = %d\n",c);
}
if ((c = a * b) != 0)
c += b;
else c = a;
Оператор switch
switch (<выражение>) {
case <конст.1> : <операторы1>
case <конст.2> : <операторы2>
...
case <конст.N-1>: <операторыN-1>
default : <операторыN>
}
<конст> – всегда одно значение.
<выражение> должно быть целого, символьного или перечислимого типа.
После двоеточия может размещаться сколько угодно операторов.
После default нужно ставить двоеточие
После выполнения соответствующих совпавшему варианту действий, управление не обязательно передается в конец switch. Вместо этого, продолжается выполнение списка операторов (включая те операторы, которые располагаются после default) до тех пор, пока не буде достигнут конец оператора switch(). Это позволяет понимать каждый case <конст.>, как метку, на которую передается управление в случае, когда <выражение> оператора switch принимает значение <конст>. Если ни с одной из констант значение выражения не совпадает, то выполняются действия после метки default.
В операторе switch можно указать, что после выполнения действий, соответствующих определенному варианту, дальнейшее выполнение оператора switch надо прекратить. Для этого надо последним действием для данного варианта сделать оператор break:
switch (выражение)
{
case конст1: оператор1;
оператор2;
......... с этого места выполнение
break;--------- оператора switch может
case конст2: ........... быть прервано (при совпадении
........... значения выражения и конст1)
}
Оператор while
while (<выраж>)
<оператор>;
<выражение> условие продолжения цикла. Если =0, то false, иначе true.
Оператор do while
while (<выраж>)
<оператор>;
Цикл do...while выполняется пока <выраж> истинно.
Оператор do...while требует блок для нескольких операторов.
Оператор for
Формат этого цикла следующий:
for(<выраж1>;<выраж2>;<выраж3>)
<оператор>;
В Си оператор for - это просто специальный случай оператора
while:
<выраж1> |
while (<выраж2>) { | Отсюда виден
<оператор>; | порядок выполнения
<выраж3>; | оператора цикла for
} |
где <выраж1> используется для инициализации,
<выраж2> для определения конца цикла,
<выраж3> для изменения параметра(ов) цикла.
Хотя <выраж1>, <выраж2> и <выраж3> могут быть пропущены по отдельности или все вместе, однако соответствующие им точки с запятой должны оставаться. В пределе заголовок оператора for может принять вид for (;;)
Если пропущено <выраж1>, то выполнение цикла начнется с текущего значения параметра цикла. Если <выраж2> пропущено, то получится бесконечный цикл. Если же пропущено <выраж3>, то цикл будет выполняться при неизменном параметре цикла.
Шаг изменения параметра цикла может быть любым (целым).
Пример.
for (i = i;i<=10;i++)
{
printf("i = %2d ",i);
printf("i*i = %4d ",i*i);
printf("i**3=%6d\n",i*i*i);
}