Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Си.doc
Скачиваний:
3
Добавлен:
15.11.2019
Размер:
2.72 Mб
Скачать

Int main()

{

Int month;

printf(“\nВведите номер месяца: ”);

scanf(“%d”, &month);

switch (month)

{

case 1: case 3: case 5:

case 7: case 8: case 10:

case 12: printf(“\n31 день”);

break;

case 4: case 6: case 9:

case 11: printf(“\n30 дней”);

break;

case 2: printf(“\n28 дней”);

break;

default: printf(“\nТакого месяца нет\n”);

}

return 0;

}

Часто встречающиеся ошибки программирования:

  1. Точка с запятой после скобок селектора:

switch (n);

{

case 0: оператор;

break;

. . . . . . . . . .

  1. Отсутствие фигурных скобок после слова switch :

switch (n)

case 0: оператор;

break;

. . . . . . . . . .

  1. Перечисление меток вариантов без слов case:

switch (n)

{

case 0, 1, 2: n++;

break;

. . . . .

  1. Перечисление меток вариантов через запятые:

switch (n)

{

case 0, case 1, case 2: n++;

break;

. . . . .

  1. Отсутствие оператора break после ветвей переключателя:

switch (n)

{

case 0: case 1: case 2: n++;

case 3: n--;

. . . . .

Циклы

Одним из самых ценных свойств компьютеров является их способность многократно повторять последовательность одинаковых или похожих действий - циклов.

Являясь наиболее мощными структурами алгоритмических языков, циклы подразделяются на:

  1. бесконечные циклы,

  2. циклы с предусловием (циклы типа ПОКА),

  3. циклы с постусловием (циклы типа ДО),

  4. циклы с параметром (циклы типа ДЛЯ).

Бесконечные циклы

Бесконечный цикл может быть представлен следующей схемой:

i=0;

label: i++; //эти три оператора образуют бесконечный цикл

i--;

goto label;

Как правило, появление в программе бесконечных циклов вызвано логическими ошибками, допущенными программистом при разработке алгоритма и кодировании (написании операторов программы) с использованием оператора безусловного перехода goto. Поэтому в современных алгоритмических языках этот оператор практически не используется, а заменяется циклами. Бесконечные циклы не выявляются транслятором при синтаксическом контроле и проявляются только после запуска программы на выполнение следующим образом:

  1. длительное время (десятки секунд) программа не выводит на устройство вывода никакой информации – программа зависает,

  2. на устройство вывода постоянно выводится одна и та же информация.

Таким образом, бесконечные циклы – это логические ошибки программиста. С ними сталкивается любой программист, и поэтому необходимо овладеть методами их поиска.

Циклы с предусловием

Как правило, некоторую цепочку операторов необходимо повторять не бесконечно, а до тех пор, пока выполняется некоторое условие:

ПОКА (условие) ВЫПОЛНЯТЬ

цепочка;

Т акой цикл называется циклом с предусловием (циклом ПОКА) и изображается следующей схемой:

Условие – это логическое выражение, зависящее от переменных, входящих в цепочку. Цикл повторяется до тех пор, пока условие истинно. Значит, данное условие является условием продолжения цикла. Выполнение цикла заканчивается, если операторы цепочки изменяют значения переменных, входящих в условие, и оно становится ложным.

Цикл не выполняется ни разу, если условие было ложным с самого начала.

Цикл ПОКА превращается в бесконечный, если условие подобрано так, что оно всегда истинно.

В Си цикл с предусловием реализуется оператором цикла while:

while (условие)

оператор;

или

while (условие)

{

оператор;

оператор;

. . . .

оператор;

}

Операторы, находящиеся между фигурными скобками, называются телом цикла.

Внимание! Условие всегда заключается в скобки и после него точка с запятой не ставится!

Если поставить точку с запятой после условия, то этот цикл, как правило, превращается в бесконечный, потому что в этом случае условие изменяться не будет.

Фигурные скобки используются в том случае, если после условия должна следовать цепочка операторов.

Действия оператора while:

  1. проверяется выполнение условия,

  2. если оно истинно, то выполняется оператор (цепочка), стоящий после него,

  3. после его выполнения снова проверяется условие, и если оно снова истинно, то цикл повторяется,

  4. если условие становится ложным, то цикл заканчивает работу.

Примеры:

  1. вычислить сумму ста первых натуральных чисел:

s = 1 + 2 + 3 + … + 98 + 99 + 100

Пусть s – искомая сумма,

i – очередное число (изменяется от 1 до 100).

Тогда алгоритм решения задачи можно описать следующим образом:

  1. обнуляем сумму s = 0,

  2. берем первое число: i = 1,

  3. добавляем в сумму это число: s = s + i,

  4. увеличиваем очередное число на единицу: i = i+ 1,

  5. если оно не больше 100, то снова добавляем его в сумму и повторяем цикл.

Представим этот алгоритм так:

s = 0;

i = 1;

ПОКА (i ≤ 100)

НАЧАЛО

s = s + i;

i = i + 1;

КОНЕЦ;

Программа:

#include <stdio.h>

#include <conio.h>

#include <math.h>