- •Алгоритм.
- •Множественный выбор switch.
- •Оператор do … while ( с постусловием ).
- •Do оператор ;
- •Оператор цикла for.
- •Использование операторов break и continue в циклах.
- •Функции ввода-вывода.
- •Общий вид программы.
- •Вложенные циклы.
- •Адреса и указатели.
- •Массивы.
- •Int a[10] ; // целочисленный вектор из 10 элементов.
- •Векторы.
- •Сортировка вектора.
- •Матрицы.
- •Строки.
- •Подпрограммы.
- •Директива препроцессора #define .
- •Области видимости.
- •Классы памяти.
- •Рекурсия.
- •Подготовка к зачету.
- •Структуры.
- •Int ball [4] ; // описание третьего поля – оценки.
- •Очередь.
- •Линейные списки.
- •Деревья.
- •Int n, k ; // ее размерности
- •Void print ( void ) // печать матрицы
- •Определение методов вне класса.
- •Частные и общие данные.
- •Конструктор.
- •Перегрузка операторов.
- •Неявный указатель *this.
- •Дружественные функции.
- •Класс множество.
- •Наследование.
- •Объекто-ориентированное программирование.
- •Список вопросов к экзамену.
- •Литература.
Множественный выбор switch.
Бывают случаи, когда нужно выбрать из большого числа различных вариантов, например задан номер i дня недели, записать какой это день словом.
switch(i)
{
case 1 : вывод « понедельник » ; break ;
case 2 : вывод « вторник » ; break ;
case 3 : вывод « среда » ; break ;
case 4 : вывод « четверг » ; break ;
case 5 : вывод « пятница » ; break ;
case 6 : вывод « суббота » ; break ;
case 7 : вывод « воскресенье » ; break ;
default : вывод « ошибка » ; break ;
}
Примечание. Оператор break нужно использовать, если после соответствующего выбора нужно прекратить проверять и закончить ближайший внешний оператор. Когда нужен один и тот же результат на разных «ветках» выбора запишется так:
case ‘E’ :
case ‘e’ : a=’e’ ; break ;
Задание: i – номер месяца, вывести время года.
ОПЕРАТОРЫ ЦИКЛА.
ОПЕРАТОР while ( с предусловием).
Общий вид оператора:
while ( условие ) оператор ;
Пока условие в скобках истинно выполняется оператор за скобкой, как только условие становится ложно, цикл заканчивает работу, передает управление следующему за ним оператору. Если же перед первым выполнением цикла условие в скобках окажется ложным, цикл, вообще, выполняться не будет.
Примеры.
Бесконечный цикл – while(1) ;
Задано а, найти количество слагаемых, при которых сумма превысит это число.
float a, sum=0 ;
int i=1 ;
ввод а ;
while (sum<a)
{
sum=sum+ 1/i ;
i++ ;
}
вывод i ;
Задание: найти две ошибки.
Оператор do … while ( с постусловием ).
Общий вид оператора :
Do оператор ;
while ( условие ) ;
Выполняется оператор до тех пор, пока условие в скобках не станет ложным. Отличие от предыдущего цикла в том, что оператор, составляющий тело цикла выполняется один раз даже, если условие изначально ложно.
Рассмотрим предыдущий пример с суммой .
float a, sum=0 ;
int i=0 ;
ввод а ;
do
{
i++ ;
sum=sum+1./(float) i ;
}
while ( sum<a) ;
вывод i ;
Эта задача сделана уже без ошибок, догадались какие они? Главная -1/i в целых числах всегда 0, нужно целое значение переменной i превратить в вещественное, а за тем только выполнять операцию деления. Вторая ошибка, скорее неточность – условие окончания цикла проверяется для предыдущего i, а печатается его последующее значение.
Оператор цикла for.
Общий вид оператора:
for ( выражение1 ; выражение2 ; выражение3 ) оператор ;
выражение1 – инициализация цикла;
выражение2 – условие его завершения;
выражение3 – шаг цикла, вычисляется после каждой итерации.
Каждое из этих выражений может состоять из нескольких операторов разделенных запятыми.
Любое из выражений может отсутствовать.
for ( ; ; ) ; - бесконечный цикл, так как отсутствующее условие всегда истинно.
И еще раз пример с суммой .
float a, sum ;
int i ;
for ( i=1, sum=0 ; sum<a ; i++)
sum+=1./(float)i ;
вывод i-1 ;
можно написать этот цикл, вообще, без тела:
for ( i=1, sum=0 ; sum<a ; i++, sum+=1./(float)i)
В языке С цикл for наиболее широк, можно записать любой цикл через него.
Рассмотрим еще несколько примеров:
Найти сумму 100 первых натуральных чисел.
int i, sum ;
for ( i=1, sum=0 ; i<100 ; i++)
sum+=i ;
Найти сумму 100 первых четных чисел.
for ( i=2, sum=0 ; i<200 ; i+=2)
sum+=i ;
Возвести
,
b
- целое, a-
любое.
float a, step=1 ;
int b, i ;
for ( i=1 ; i<=b ; i++) step*=a ;
вывод step ;
