
- •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.9. Оператор продолжения цикла (continue)
Он пропускает оставшуюся часть витка цикла и передает управление на следующий виток (есть существенная разница: для циклов while и do while следующим витком является на проверку условия, для for на модификацию переменной).
Требуется посчитать сумму всех положительных значений функции.
s=0;
x=a;
while(x<b)
{
printf(“. . .”);
F(x)>0
x+=dx;
if (F(x))<0) continue;
//Если все нормально
}
Программа зациклится при обнаружении отрицательного числа.
for (x=a;s=s2=s0,0;x+=dx)
4.10. Множественный выбор
Если альтернативных действий не очень много, можно воспользоваться вложенными конструкциями if и else. Оператор переключения switch используется для целочисленных условий.
switch(выражение)
{
case (константа1): операторы; break;
case (константа2): операторы; break;
. . .
default:операторы;
}
Вначале вычисляются значения выражения, затем оно поочередно сравнивается с константами после case до первого совпадения. Если совпадение обнаружено, то выполняются операторы после ветки case. Ветки case обозначаются как метки 0.
Глава 5. Типовые приемы в программировании
5.1. Использование счетчиков
В программах часто приходится подсчитывать количество каких либо объектов или событий. Для этого используются так называемые счетчики. Т.е. целочисленные переменные, инкрементируемые каждый раз при увеличении числа объектов, уменьшаемые при уменьшении числа объектов.
Пример: Посчитать количество отрицательных значений функции на исследуемом отрезке.
int n;
double x,x1,x2,dx;
. . .
for (x=x1,n=0;x<=x2;x+=dx)
{
if(f(x))<0 n++;
}
printf(“Obnarygena %d otricatel’nyx znacheniy”,n);
Счетчик надо перед началом счета обнулить.
5.2. Вычисление суммы и произведения.
При вычислении суммы или произведения описываются переменные того же или большего типа, чем суммируемые величины.
Пример. Вычислим сумму положительных синусов от X, а также произведение функции f
int n;
double x,x1,x2,dx,sum,proizv,sinus;
. . .
for (x=x1,sum=0,proizv=1;x<=x2;x+=dx)
{
if(sin(x)>0) sum+=sin(x);
proizv*=f(x);
}
printf(“Summa=%7.2lf\nProizv=%%7.2lf\n”,sum,proizv);
Чтобы не приходилось вычислять значения sin на каждом витке, ветвление можно записать следующим образом
if(sinus=sin(x)>0) sum+=sinus;
proizv*=f(x);
5.3. Вычисление минимума и максимума последовательностей.
Пример: посчитать максимальное и минимальное значение функции.
Для вычисления максимума перебирается вся последовательность и каждое значение сравнивается с текущим кандидатом на максимум. И если оно превышает значение кандидата, то его записывают в переменную max.
ввод x1,x2,dx
x=x1 x<=x2
Вывод max
max<f(x)
max=f(x) x=x+dx
Для инициализации максимума можно использовать заведомо очень маленькое(меньшее чем все в последовательности) . Но лучше одно из тестируемых значений последовательности. Тогда это одинаково подходит и для минимума и для максимума.
double x,x1,x2,dx,min,max;
. . .
for(x=x1,max=min=f(x1);x<=x2;x+=dx)
{
if(f(x)<min)min=f(x);
else max=f(x);
}