- •1. Лабораторная работа №1
- •1.1. Методическая часть Оператор if
- •Конструкция if-else
- •If (условное выражение)
- •Множественный выбор
- •If (условное выражение)
- •Множественный выбор - оператор switch
- •Операторы цикла
- •1.3. Варианты заданий
- •1.4. Контрольные вопросы
- •2.1. Методическая часть Функции. Аргументы функции.
- •1.2. Порядок выполнения работы.
- •2.2. Порядок выполнения работы.
- •2.3. Варианты заданий
- •2.4. Контрольные вопросы
- •3.1. Методическая часть Массивы как аргументы функции
- •Функции и многомерные массивы
- •3.2. Порядок выполнения работы.
- •3.3. Варианты заданий
- •3.4. Контрольные вопросы
- •4.1. Методическая часть Символьные строки
- •Строковые константы
- •Массивы типа char и их инициализация
- •Явное задание размера памяти
- •Массивы символьных строк
- •Указатели и строки
- •Ввод строк
- •Функция gets()
- •Функция scanf()
- •Функция puts()
- •Функции, работающие со строками Функция strcat() - string catenation
- •Функция strcmp() - string comparison
- •Функция strcmpi()
- •Функция strncmp()
- •Функция strcpy()
- •Функция strncpy()
- •Пример реальной программы сортировки строк
- •4.2. Порядок выполнения работы.
- •4.3. Варианты заданий
- •4.4. Контрольные вопросы
Множественный выбор
Часто бывает нужно осуществить выбор более чем из двух вариантов. В этом случае применяется конструкция if - else if – else. Конструкция имеет следующий вид:
If (условное выражение)
{ оператор [или набор операторов]; }
else if (условное выражение)
{ оператор [или набор операторов]; }
…………..
else { оператор [или набор операторов]; }
В этой конструкции выражения просматриваются последовательно. Если какое-то выражение оказывается истинным, то выполняется относящийся к нему оператор, и этим вся цепочка заканчивается. Управление передается на последний оператор, следующий за else, в том случае, когда ни одно из проверяемых условий не выполняется.
Множественный выбор - оператор switch
Оператор switch – переключатель осуществляет выбор одного из нескольких альтернативных действий.
switch (выражение)
{ case метка_1: оператор_1 [или набор операторов]; break;
…….
case метка_N: оператор_N [или набор операторов]; break;
default: оператор;
}
Результат выражения сравнивается последовательно с метками. При совпадении значений выполняется соответствующая последовательность операторов.
Результатом выражения и меткой может быть любая величина целого или символьного типа. Все метки должны быть уникальны.
После ключевого слова default размещаются операторы, выполнение которых осуществляется, если результат выражения не совпал ни с одной из меток. Наличие ключевого слова default не является обязательным.
Если в конструкции отсутствует оператор break, то выполняются операторы ветви case с соответствующей меткой и до конца оператора switch. Наличие оператора break в конструкции приводит к завершению оператора switch.
Рассмотрим программу подсчета числа вхождений каждого символа ‘А’, пробела, табуляции и новой строки.
# include <stdio.h>
# define STOP '*' /* дает символу * символическое имя STOP */
main()
{ char ch;
int ka = 0, kpr = 0, kost = 0 ;
puts(“Введите строку символов, заканчивающуюся символом ‘*’ ”);
while((ch=getchar())!=STOP)
switch(ch)
{ case ‘a’: case ‘A’: ka++ ; break ;
case ‘ ’: case ‘\t’: case ’\n’: kpr ++ ; break ;
default: kost ++;
}
printf("\n Было введено: \n букв А - %3d \n", ka);
printf("пробелов - %3d\nдругих символов - %3d ", kpr, kost);
getchar();
}
Ввод символа осуществляется с помощью функции getchar() в цикле while до тех пор, пока не будет введен символ ‘*’.
Переключатель вычисляет целое выражение в круглых скобках и сравнивает его со всеми случаями (case). Каждый случай должен быть помечен либо целой, либо символьной константой, либо константным выражением. Если значение константного выражения, стоящего после case, совпадает со значением целого выражения, то выполнение начинается с этого случая. Если не один из случаев не подходит, то выполняется оператор, стоящий после ключевого слова default.
Оператор break приводит к немедленному выходу из переключателя.
Операторы цикла
Операторы цикла позволяют реализовать циклическую структуру алгоритма, т.е. многократно выполнить предписанные действия.
while (выражение)
{ оператор [или набор операторов]; }
Оператор while создает цикл, который повторяется до тех пор, пока проверяемое выражение не станет ложным или нулем. Оператор while является циклом с предусловием, т.е. решение о прохождении цикла принимается перед его выполнением.
Тело цикла (оператор) может быть простым или составным.
# include <stdio.h>
# define STOP '*' /* дает символу * символическое имя STOP*/
main()
{ char ch;
while((ch=getchar())!=STOP)
putchar(ch);
}
Результат работы программы: оператор while будет осуществлять чтение и печать символов до тех пор, пока не поступит признак STOP.
for ( инициализация; проверка условия; коррекция )
{ оператор [или набор операторов]; }
Тело цикла выполняется до тех пор, пока проверяемое условие не станет ложным, или равным нулю.
В цикле for инициализации счетчика, сравнение его величины с граничным значением и увеличение значения счетчика при каждом прохождении тела цикла собраны вместе. Для этого в операторе for используются три выражения, управляющие работой цикла. Выражения разделены символами ";".
Инициализирующее выражение вычисляется только один раз до начала выполнения какого-нибудь из операторов цикла. Если проверяемое выражение оказывается истинным (или не равным нулю), тело цикла выполняется один раз. Затем вычисляется величина корректируемого выражения, и значение проверяемого выражения определяется вновь.
Оператор for - это цикл с предусловием: решение, выполнить в очередной раз тело цикла или нет, принимается до начала его прохождения. Поэтому может случиться так, что тело цикла не будет выполнено ни разу. Оператор, образующий тело цикла, может быть простым или составным.
Приведем фрагмент программы для
вычисления :
int n, i, k;
unsigned int fact;
float s, x;
printf(“Введите количество слагаемых: ”);
scanf(“%d”, &n);
printf(“Введите вещественное число х: ”);
scanf(“%f”, &x);
for (k=1, s=0; k<=n; k++)
{ for (i=1, fact=1; i<=2*k+1; i++)
fact *= i ;
s += pow(-1.0 , (float) k) * pow (x, (float) k) / fact;
}
do { оператор [или набор операторов]; }
while (выражение);
do-while - конструкция цикла с постусловием: решение, выполнять или нет в очередной раз тело цикла, принимается после его прохождения. Поэтому тело цикла будет выполнено хотя бы один раз. Оператор, образующий тело цикла, может быть как простым, так и составным.
do scanf("%d", &number);
while(number!=2);
