Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практические по ОП.docx
Скачиваний:
30
Добавлен:
10.06.2015
Размер:
1.04 Mб
Скачать

Практическое занятие №19

HАИМЕНОВАНИЕ: Вложенные циклы

1.ЦЕЛЬ РАБОТЫ: Научится применять вложенные циклы при программирование на C++

2.Подготовка к занятию:

2.1. Изучить предложенную литературу.

2.2. Подготовить бланк отчёта.

3.Литература:

3.1 Белов В.В., Чистякова В.И. Программирование в Delphi: процедурное, объектно-ориентированное, визуальное. Учебное пособие. – М.: Горячая линия – Телеком, 2009

3.2 Голицына О.Л., Попов И.И. Основы алгоритмизации и программирования. – Форум, 2010

3.3Семакин И.Г., Шестаков А.П. Основы алгоритмизации и программирования. – М.: Издательский центр «Академия», 2008

3.4Семакин И.Г., Шестаков А.П. Основы программирования. – М.: Издательский центр «Академия», 2008

4. ПЕРЕЧЕНЬ ОБОРУДОВАНИЯ И ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ: 4.1. Персональный IBM PC.

5.Задание:

5.1 Дано целое п > 2. Напечатать все простые числа из диапазона [2,п].

5.2 Составить программу перевода целого десятичного числа в двоичную систему счисления.

5.3 Составить программу перевода целого десятичного числа в шестнадцатеричную систему счисления.

6. Порядок выполнения работы:

6.1 По предложенной литературе изучить необходимый материал;

6.2 Выполнить задания практического занятия и записать листинг программы;

6.3 Дать ответы на контрольные вопросы;

7. СОДЕРЖАНИЕ ОТЧЕТА:

7.1 Наименование и цель работы

7.2 Код программы

7.3 Записать результат (листинг) выполненых заданий.

7.4 Ответы на контрольные вопросы

7.5 Вывод о проделанной работе

8. Контрольные вопросы:

8.1 Описать цикл с параметром?

8.2 Зачем нужен оператор continue?

8.3 Оператор goto?

8.4 Выход из цикла?

ПРИЛОЖЕНИЕ:

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

for:

F=l; i = l ;

for(;i<=N;i++) F=F*i;

Ниже показан еще один вариант вычисления N!. В нем на месте тела цикла находится пустой оператор, а вычислительная часть внесена в выражение 3.

for(F=l,i=l;i<=N;F=F*i,i++);

Этот же оператор можно записать в следующей форме:

for(F=l,i=l;i<=N;F*=i++) ;

В языке Си оператор for является достаточно универсальным средством для организации циклов. С его помощью можно программировать даже итерационные циклы, что невозможно в Паскале. Вот пример вычисления суммы элементов гармонического ряда, превышающих заданную величину е:

for(n=l,S=0;1.0/n>eps && n<INT_MAX;n++) S+=1.0/n;

И наконец, эта же самая задача с пустым телом цикла:

for(n=l,S=0;1.0/n>eps && n<INT_MAX;S+=l.0/n++);

Следующий фрагмент программы на Си++ содержит два вложенных цикла for. В нем запрограммировано получение на экране таблицы умножения.

for(х=2;х<=9;х++)

for(y=2;y<=9;y++)

c o u t < < " \ n " « x « " * " « y « " = "<<x*y;

На экране будет получен следующий результат:

2*2=4

2*3=6

9*8=72

9*9=81

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

от 1 до 100.

for(i=l;i<=100;i++)

{if(i%2) continue; cout«"\t"«i; }

Для нечетных значений переменной / остаток от деления на 2 будет равен единице, этот результат воспринимается как значение «истина» в условии ветвления, и выполняется оператор сontinue. Он завершит очередной шаг цикла, выполнение цикла перейдет к следующему шагу.

Оператор goto. Оператор безусловного перехода goto существует в языке Си, как и во всех других языках программирования высокого уровня. Однако с точки зрения структурного подхода к программированию его использование рекомендуется ограничить. Формат оператора:

goto метка;

Метка представляет собой идентификатор с последующим двоеточием, ставится перед помечаемым оператором. Одна из ситуаций, в которых использование goto является оправданным — это необходимость «досрочного» выхода из вложенного цикла. Вот пример такой ситуации:

for(...)

{ while (...)

{ for(...)

{... goto exit ...}

}

}

e x i t : cout«"Bыход из цикла";

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

• нельзя входить внутрь блока извне;

• нельзя входить внутрь условного оператора (if ...else...);

• нельзя входить внутрь переключателя;

• нельзя входить внутрь цикла.