- •1.2. Правила записи программ на языке с
- •1.3 Правила формального описания синтаксиса языка программирования
- •1.5.3. Описание данных в языке с
- •1.5.4 Правила записи констант различных типов
- •1.5.5. Символьные строки
- •Глава 2. Понятие функции
- •2.1. Стандартная функция printf
- •2.2. Стандартная функция scanf
- •Перед каждым аргументом, не являющимся строкой (адресом) ставится знак & и трактуется как вычисление адреса.
- •2.3. Стандартные математические функции
- •2.4. Простейшие функции, определяемые программистом
- •3.5. Дополнительные арифметические операции
- •3.6. Дополнительные операции присваивания
- •3.7. Битовые операции
- •3.8. Операторы отношения
- •Глава 4. Структурное программирование и язык с
- •4.2. Операторы языка с
- •4.3. Оператор цикла while
- •4.4. Оператор цикла do – while (цикл с постусловием)
- •4.5. Условный оператор и условная операция
- •4.6. Оператор цикла for (цикл с известным числом повторений)
- •4.7. Запись алгоритмов при помощи диаграмм Несси-Шнейдермана
- •4.8. Оператор прерывания цикла
- •4.9. Оператор продолжения цикла (continue)
- •4.10. Множественный выбор
- •Глава 5. Типовые приемы в программировании
- •5.1. Использование счетчиков
- •5.2. Вычисление суммы и произведения.
- •5.3. Вычисление минимума и максимума последовательностей.
- •5.4. Использование флагов
- •Глава 6. Простейшая графика
- •6.1.Графические режимы
- •6.2. Идеология bgi и WinBgi
- •6.3.Основные графические функции
- •6.3.1. Управление графическими режимами
- •6.3.2. Графические примитивы
- •6.3.3. Установки и их проверка
- •6.3.4. Работа с текстом
- •Глава 7. Модульное программирование
- •7.2. Библиотеки функций
- •Глава 8. Массивы
- •8.1. Описание массива
- •8.2. Ввод – вывод массивов
- •8.3. Инициализация массива
- •8.6. Двумерные массивы
- •8.6.1. Инициализация двумерного массива
- •8.7. Многомерные массивы
- •Глава 9. Работа с файлами
- •9.1. Открытие и закрытие файлов
- •Глава 10. Структуры языка с
- •10.1. Описание структур
- •10.2. Трактовка имени структуры
- •10.2.1. Доступ к полям структуры
- •10.3. Инициализация структур
- •10.4. Структуры и функции
- •10.5. Поля бит в структурах
- •10.6. Объединение
- •Глава 11. Дополнительные сведения о функциях
- •11.1. Области видимости.
- •Глава 12. Анимация
- •Глава 13. Рекурсия
- •13.1. Понятие рекурсии
- •13.2. Вычисление факториала
- •13.3. Числа Фибоначчи
- •13.4. Замена итерационных алгоритмов рекурсивными
- •13.5. Применение рекурсии в графике
4.2. Операторы языка с
Оператор – это часть программы, которая может быть отдельно выполнена. В языке С выделяют несколько видов операторов:
Пустой оператор (;) отдельно взятая точка с запятой.
Простой оператор (выражение с точкой с запятой на конце)
a=5;
Составной оператор (ноль, один или несколько операторов, взятых в фигурные скобки {…})
Структурные операторы (служат для организации управляющих структур и начинаются с зарезервированных слов. Зарезервированные слова – это такие имена, которые определены для обозначения структурных операторов, типов данных и их запрещено переопределять пользователю. Имена стандартных функций не являются зарезервированными словами)
4.3. Оператор цикла while
Это цикл с предусловием, имеющим следующую структуру:
while (выражение) оператор
выражение – условие, которое пока истинно, то выполняется.
Вначале проверяется условие, а потом уже выполняется тело цикла. Если его значение отлично от нуля, выполняется оператор или тело цикла. Затем снова вычисляется выражения условия и так до тех пор, пока результат выражения отличен от нуля.
Везде, где может быть использован этот оператор, может быть использован любой из их видов.
Пример: программа выводит таблицу значений синус и косинус.
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main();
{
double x;
x=0.0;
while (x<3.0)
{
printf(“%9.3lf%9.3lf%9.3lf/n”,x,sin(x),cos(x));
x+=0.2;
}
system(“PAUSE”);
return 0;
}
В цикле обязательно должны быть предусмотрены действия по изменению цикловых переменных в сторону нарушения условия.
Все вложенные операторы составного оператора записываются с дополнительным отступом в 1 табуляцию.
4.4. Оператор цикла do – while (цикл с постусловием)
Иногда тело цикла удобнее выполнять до проверки условия. В таком случае оно гарантированно выполнится хотя бы одни раз.
Рассмотрим задачу вычисления квадратного корня введенного пользователем числа, в которой запрашиваться число будет до тех пор, пока пользователь не введен что –то допустимом
double x;
do
{
printf(“Enter x>=0/n”);
scanf(“%lf”,&x);
}
while(x<0);
prinf(“/n Sqrt(x)=%lf7.3”,sqrt(x))
4.5. Условный оператор и условная операция
Условный оператор предназначен для выбора одного из двух альтернативных действий и имеет следующую форму записи:
усл_опер=”if(“выражение”)”
оператор_если_да “;”
else
оператор_нет;
Может быть использована альтернативная форма записи:
”if(“выражение”)”
оператор_если_да “;”
Ключевое слово else всегда относится к ближайшему сверху if.
if(b>a)
if(c<d) k=sin(x);
else t=cos(x);
Несмотря на кажущееся отношение else к верхнему if, это не так. Он относится к вложенному ближайшему оператору. Поэтому следует выровнять это следующим образом
if(b>a)
if(c<d) k=sin(x);
else t=cos(x);
Чтобы избежать недопонимания(не со стороны компилятора, а других людей и себя) следует применять фигурные скобки.
if(b>a)
{
if(c<d) k=sin(x);
else t=cos(x);
}
Для того, чтобы else относился к верхнему оператору if, надо записать это так:
if(b>a)
{
if(c<d) k=sin(x);
}
else t=cos(x);
1) В случае множественного ветвления, обычно выравнивают следующим образом:
if (a==6) {. . .}
else if(a==8) {. . .}
else if(a==10) {. . .}
. . .
else {. . .}
2) В случае коротких операторов:
if(b>a) k=sin(x);else k=x*x;
Первый способ менее используется, чаще используется данный метод:
if(b>a) k=sin(x);
else k=x*x;
3) Группы коротких операторов:
if(a<0) {. . .} else {. . .}
4) Длинные группы операторов:
if(a<0)
{
. . .
. . .
}
else
{
. . .
. . .
}
В некоторых случаях вместо оператора if удобно использовать условную операцию: ?:
выр1?выр2:выр3
Операнды могут быть любые. Вначале вычисляется выр1. Если его выражение истинно, то результатом операции является выр2 . В противном случае значением всей операции является значение выр3. Какое бы из этих двух выражений не дало результат операции, другое выражение не будет вычисляться.
Вычисление модуля
if x<0 y=-x;
else y=x;
x<0?-x:x;
if (a<b) a++;
else b++;
Если надо, чтобы обе переменные были увеличены, то так записывать нельзя.
a<b?a++:b++;