Вы находитесь на странице: 1из 7

Лабораторная работа №2

Написание программы с использованием операторов условия и цикла.

Цель занятия
1. Приобретение навыков написания программы с использованием операторов
условия и цикла.
Постановка задачи
1. Написать на языке C программу с использованием операторов условия и цикла.
Теоритические сведения
Оператор ветвления языка Си if
Оператор ветвления if (англ. «если») необходим в тех случаях, когда надо решить,
должна ли быть выполнена конкретная инструкция программы .
Рассмотрим синтаксис условного оператора:
Самый простой вариант оператора:
if (условие)
оператор1;
Если условие истинно, то будет выполняться следующий за ним оператор. Если
условие не выполняется (ложно), то компилятор пропускает инструкцию, записанную
после if, и переходит к следующим командам программы.
- непосредственно условие заключается в круглые скобки;
- точка с запятой ставится не после условия, а только в конце всей конструкции;
- Си — язык программирования свободного формата, поэтому условие и
инструкцию можно помещать в одной строке. Разделяя их, программа выглядит более
удобной для чтения.
Операторы отношения, используемые в условии:

Оператор Значение Пример

== равно if (x == 0.06)

> больше if (s > 40)


< меньше if (s < 40)

>= больше или равно if (y >= 10000)

<= меньше или равно if (t <= l)

!= не равно if (count != 1)

С помощью условия if можно проверять значения числовых и символьных


переменных, значения строк проверять нельзя.
Например, при компиляции следующего кода сообщения об ошибке не возникнет,
но и нужный результат получен не будет :
gets(name);
if (name == "Петя")
puts("Приходи в гости");
Строковые переменные подробно обсуждаются в одном из последующих уроках.
Если возникает необходимость, чтобы при выполнении одного условия
выполнялось несколько команд, следует использовать составной оператор:
Составной оператор:
if (условие)
{
оператор1;
оператор2;
}
В ситуации, когда при истинности условия должен быть выполнен один набор
инструкций, а в противном случае — другой, используется конструкция if...else:
if (условие)
оператор1;
else
оператор2;
Циклом называется блок кода, который для решения задачи требуется повторить
несколько раз. Каждый цикл состоит из блока проверки условия повторения цикла, тела
цикла. Цикл выполняется до тех пор, пока блок проверки условия возвращает истинное
значение. Тело цикла содержит последовательность операций, которая выполняется в
случае истинного условия повторения цикла. После выполнения последней операции тела
цикла снова выполняется операция проверки условия повторения цикла. Если это условие
не выполняется, то будет выполнена операция, стоящая непосредственно после цикла в
коде программы. В языке Си следующие виды циклов:
while — цикл с предусловием;
do…while — цикл с постусловием;
for — параметрический цикл (цикл с заданным числом повторений).
Цикл с предусловием while
Общая форма записи
while (Условие)
{ Блок Операций;}
Если Условие выполняется (выражение, проверяющее Условие, не равно нулю), то
выполняется БлокОпераций, заключенный в фигурные скобки, затем Условие проверяется
снова. Последовательность действий, состоящая из проверки Условия и
выполнения БлокаОпераций, повторяется до тех пор, пока выражение,
проверяющее Условие, не станет ложным (равным нулю). При этом происходит выход из
цикла, и производится выполнение операции, стоящей после оператора цикла. При
построении цикла while, в него необходимо включить конструкции, изменяющие
величину проверяемого выражения так, чтобы в конце концов оно стало ложным (равным
нулю). Иначе выполнение цикла будет осуществляться бесконечно (бесконечный цикл).
while — цикл с предусловием, поэтому вполне возможно, что тело цикла не будет
выполнено ни разу если в момент первой проверки проверяемое условие окажется
ложным.
Цикл с постусловием do...while
Общая форма записи
do {БлокОпераций;}
while (Условие);
Цикл do...while — это цикл с постусловием, где истинность выражения,
проверяющего Условие проверяется после выполнения Блока Операций, заключенного в
фигурные скобки. Тело цикла выполняется до тех пор, пока выражение,
проверяющее Условие, не станет ложным, то есть тело цикла с постусловием выполнится
хотя бы один раз. Использовать цикл do...while лучше в тех случаях, когда должна быть
выполнена хотя бы одна итерация, либо когда инициализация объектов, участвующих в
проверке условия, происходит внутри тела цикла.
Параметрический цикл for
Общая форма записи
for (Инициализация; Условие; Модификация)
{ БлокОпераций;}
for — параметрический цикл (цикл с фиксированным числом повторений). Для
организации такого цикла необходимо осуществить три операции:
Инициализация - присваивание параметру цикла начального значения;
Условие - проверка условия повторения цикла, чаще всего - сравнение величины
параметра с некоторым граничным значением;
Модификация - изменение значения параметра для следующего прохождения тела
цикла.
Эти три операции записываются в скобках и разделяются точкой с запятой ;;. Как
правило, параметром цикла является целочисленная переменная.
Инициализация параметра осуществляется только один раз — когда цикл for начинает
выполняться. Проверка Условия повторения цикла осуществляется перед каждым
возможным выполнением тела цикла. Когда выражение, проверяющее условие становится
ложным (равным нулю), цикл завершается. Модификация параметра осуществляется в
конце каждого выполнения тела цикла. Параметр может как увеличиваться, так и
уменьшаться.
В цикле for может использоваться операция запятая - , - для разделения нескольких
выражений. Это позволяет включить в спецификацию цикла несколько
инициализирующих или корректирующих выражений. Выражения, к которым
применяется операция запятая, будут вычисляться слева направо. Рекомендации по
выбору цикла
При выборе цикла необходимо оценить необходимость проверки условия при
входе в цикл или по завершении прохождения цикла.
Цикл с постусловием удобно применять в случаях, когда для проверки условия требуется
вычислить значение выражения, которое затем будет размещено в теле цикла (см.
выше пример ввода числа от 0 до 10). Цикл c предусловием используется в случае если
все переменные, участвующие в выражении, проверяющем условие,
проинициализированы заранее, но точное число повторений цикла неизвестно или
предполагается сложная модификация переменных, участвующих в формировании
условия повторения цикла. Если цикл ориентирован на работу с параметром, для которого
заранее известно число повторений и шаг изменения, то более предпочтительным
является параметрический цикл. Очень удобно использовать параметрический цикл при
работе с массивами для перебора элементов.
Операторы прерывания и продолжения цикла break и continue
В теле любого цикла можно использовать операторы прерывания цикла - break и
продолжения цикла - continue. Оператор break позволяет выйти из цикла, не завершая его.
Оператор continue позволяет пропустить часть операторов тела цикла и начать новую
итерацию.
Оператор безусловного перехода goto
Общая форма записи
goto Метка;
Метка : Операция;
Выполнение оператора goto вызывает передачу управления в программе операции,
помеченной Меткой. По сути Метка является идентификатором адреса операции, которой
должно быть передано управление. Для отделения Метки от Операции используется
двоеточие. Метка может располагаться в программе как до оператора goto, так и после
него. Имена Меток образуются по тем же правилам, что и имена переменных.
Пример: Пользователь вводит порядковый номер пальца руки. Необходимо
показать его название на экран.

Вариант решения 1:
#include <stdio.h>
int main()
{
int NumberOfFinger = 0;

printf("Введите номер: ");


scanf("%d",&NumberOfFinger);

if (NumberOfFinger == 1)
printf("\nРезультат: Большой палец \n");
else if (NumberOfFinger == 2)
printf("\nРезультат: Указательный палец\n");
else if (NumberOfFinger == 3)
printf("\nРезультат: Средний палец\n");
else if (NumberOfFinger == 4)
printf("\nРезультат: Безымянный палец\n");
else if (NumberOfFinger == 5)
printf("\nРезультат: Мизинец\n");
else
printf("\nНет соответствий!\n\n");
return 0;
}

Вариант решения 2:
#include <stdio.h>
int main()
{
int NumberOfFinger = 0;

printf("Введите номер: ");


scanf("%d",&NumberOfFinger);

switch (NumberOfFinger)
{
case 1: printf("\nРезультат: Большой палец \n");
break;
case 2: printf("\nРезультат: Указательный палец\n");
break;
case 3: printf("\nРезультат: Средний палец\n");
break;
case 4: printf("\nРезультат: Безымянный палец\n");
break;
case 5: printf("\nРезультат: Мизинец\n");
break;
default: printf("\nНет соответствий!\n\n");
}
return 0;
}
Пример: необходимо посчитать сумму чисел от 1 до 500.
#include <stdio.h>
int main ()
{
int i; //определяем переменную
int sum=0;
for (i=1; i<=500; i=i+1) // задаем начальное значение, конечное 500, шаг цикла
{
sum=sum+i;
}
printf("The sum of the numbers from 1 to 500 = %d",sum);
return 0;
}

Практические задания

Написать на языке С программы для решения следующих задач.


Задачу 1 реализовать с помощью if
Задачу 2 реализовать с помощью switch
Задачу 3 реализовать с помощью for

Вариант 1
1. В трех магазинах один и тот же товар имеет разные цены: в первом магазине а
руб., во втором – b руб., в третьем – с руб. Определить в каком магазине товар самый
дешевый.
2. Вводится номер месяца года. Определить время года, которому соответствует этот
месяц.
3. Составить таблицу значений функции y= x2- 2x +5 на отрезке [a; b] с шагом h.

Задания для самостоятельной работы

1. Компьютер запрашивает сумму в чеке и внесенную сумму денег. Если сдача не


требуется, то выводит «Спасибо!». Если денег больше чем нужно, то выводит
«Возьмите сдачу: » и сумма сдачи. Если денег недостаточно, то выводит
«Недостаточно средств », то выводит сумму недостачи.
2. Написать программу, которая по паролю будет определять уровень доступа
сотрудника к секретной информации в базе данных. Доступ к базу имеют 6
различных человек, разбитых на три группы по степени доступа в зависимости от
пароля:
9583, 1747 – доступны модули А, В, С
3331,7922 – доступны модули В,С
9455, 8997 – доступен модуль С.
В остальных случаях вывести сообщение «Пароль неверный! Доступ закрыт!»

Вам также может понравиться