русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Как выбрать цикл?


Дата добавления: 2013-12-23; просмотров: 1987; Нарушение авторских прав


Циклы

Выбор варианта

Вложенное ветвление – очень удобная программная структура. Но при большой глубине вложенности множественное ветвление становится громоздким. В некоторых случаях его можно значительно сократить, заменив конструкцией выбора варианта. Для этого должны выполняться такие условия:

1. все ветвления вкладываются в ветвь «нет»;

2. все они проверяют значения одной и той же переменной (или выражения);

3. проверяемое значение должно быть целого типа.

 

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

 

Задача: Программа-консультант в магазине обуви сообщает, какая обувь находится на той или иной полке, номер которой вводят с клавиатуры.

 
 
program money; var p:integer; begin write(’Какая полка Вас интересует? ’); readln(p); if p=1 then writeln(’Сапоги’) else if (p=2) or (p=4) then writeln(’Мужские туфли’) else if (p>=5) and (p<=8) then writeln(’Женские туфли’) else if (p=3) or (p>=9) and (p<=12) then writeln(’Кроссовки’) else writeln(’Полки с таким номером у нас нет’); readln; end.

 

 


То же, с применением новой команды:

 
 
program money; var p:integer; begin write(’Какая полка Вас интересует? ’); readln(p); case p of 1: writeln(’Сапоги’); 2,4: writeln(’Мужские туфли’); 5..8: writeln(’Женские туфли’) 3,9..12: writeln(’Кроссовки’) else writeln(’Полки с таким номером у нас нет’); end; readln; end.

 


Как видите, программа выиграла в размере и простоте.

Если в каком-либо из вариантов нужно выполнить не одно, а два и более действия, их заключают в операторные скобки begin и end:



 
 

 

 


 


Более сложные задачи с применением выбора вариантов:

1) С клавиатуры вводят число летящих ворон. Напечатать это число со словом «ворон», взятом с нужным окончанием.

В большинстве случаев окончание зависит от последней цифры: 2181 ворона, 851 ворона, 342(343, 344) вороны, 765(766, 767, 768, 769, 770) ворон. Но имеется исключение: Если предпоследняя цифра – единица (например, 3211, 412), то независимо от последней цифры будет «ворон». Поэтому в этой задаче выбор варианта применяется совместно с ветвлением:

 

2) Ввести с клавиатуры число от 1 до 999 и назвать его словами (например, «семьсот сорок восемь»).

Число разделим на сотни, десятки и единицы и будем эти части называть словом по очереди, например, «пятьсот двадцать три». Проблема опять возникает, когда предпоследняя цифра «1». В этом случае две последних цифры называются одним словом, например, «пятьсот тринадцать».

 

 

Лаб. 6. Задачи на выбор варианта:

В каждой из ниже перечисленных задач использовать выбор не менее чем из 5 вариантов (если условие явно не задаёт конкретное число вариантов).

 

1. Колдун должен сделать очередной ход. По нажатию на любую клавишу генерируется случайное число от 1 до 10, и программа печатает, какое заклинание произнёс колдун. Например, 1- удар молнии; 2 – огненный шар …

2. На экране печатается прайс-лист, в котором перечислено оборудование и цены. Нужно ввести номер требуемого оборудования, затем указать количество, и программа должна выдать стоимость покупки.

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

4. Разведчик получает закодированное числами сообщение. Каждое число обозначает какое-либо слово. Нужна программа-декодер, которая получает число и выдаёт слово.

5. Микки-Маус подходит к стене с отверстиями. Над каждым отверстием стоит номер. Некоторые ходы ведут в ловушку, некоторые – к запасам зерна, сыра, муки и т. д. Нужна программа, которая по введённому номеру сообщает, куда попадёт Микки-Маус.

6. Предлагается список авиарейсов. По введённому номеру рейса программа сообщает пункт назначения и цену билета.

7. Составить программу «Рабочее место заведующего хлебопекарней», которая выдаёт ассортимент производимой продукции, и при выборе нужного номера сообщает, сколько и какой муки, дрожжей, соли, воды и т.д. нужно для выпечки одной буханки данного вида хлеба.

8. Программа выводит пронумерованный список различных носителей информации: дискета, жёсткий диск, компакт-диск и т.д. Если ввести номер какого-либо из них, программа сообщает подробности: ёмкость, размеры, разновидности и т.д.

9. На экран выдаётся список наиболее распространённых программ. При выборе номера какой-либо из них программа сообщает дополнительную информацию: назначение, фирма-производитель, есть ли русифицированная версия, требуемый объём дисковой памяти и т.д. …

10. На экране перечисляются названия домашних цветов. При выборе одного из них программа указывает страну, откуда происходит цветок и некоторые подробности по уходу за ним (любит ли свет, часто ли поливать, какая должна быть почва…).

11. Программа должна напоминать хозяину, какой праздник (в том числе – семейные) приходится на интересующую его дату. Для этого с клавиатуры вводятся отдельно дата и месяц, объединяются в целое число и выводится описание праздника. Например, вводятся числа 23 и 02, из них составляется число 2302, по которому программа выводит «День защитника Отечества».

12. В горисполкоме имеется очередь льготников на квартиры. При вводе номера очередника программа сообщает его фамилию, имя, отчество, причину постановки в очередь (льготу) и количество комнат (по числу членов семьи), на которые претендует очередник.

13. Каждое поколение компьютеров характеризовалось электронной базой, размерами, объёмом памяти, быстродействием и другими характеристиками процессоров… Программа запрашивает, какое поколение компьютеров нас интересует, и при вводе номера выдаёт отличительные особенности компьютеров данного поколения: электронную базу, размеры, объём памяти, быстродействие и другие характеристики.

14. В поликлинике при вводе номера кабинета программа сообщает, какой специалист принимает в этом кабинете (специальность и фамилию). Если работают два врача, сообщить, кто до обеда, а кто после.

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

16. Программа вводит номер компакт-диска из домашней коллекции и выводит описание: что есть на этом диске. Если игра, указывает её жанр.

17. Выдаётся список различных Intel-совместимых процессоров. При вводе номера одного из них программа сообщает основные характеристики данного процессора.

18. Программа работает как телефонная книга наоборот: при вводе 6-значного номера телефона (простым числом без чёрточек и пробелов) она выдаёт фамилию и адрес абонента.

19. Программа предназначена для процедурного кабинета. На экране печатается список лекарств для инъекций. При выборе нужного номера программа выдаёт информацию, сколько миллилитров («кубиков») растворителя нужно использовать, и какой взять: воду, физраствор, раствор новокаина или раствор глюкозы.

20. Программа для библиотеки просит ввести номер книги по каталогу и выдаёт сведения об этой книге: автора, название и год издания.

 

Для многократного повторения участка программы используется цикл. В зависимости от способа, которым задаётся количество повторений, различают три вида циклов:

Цикл с предусловием(с условием перед телом цикла). В этом цикле перед началом «тела цикла» (повторяющегося участка программы) проверяется условие, которое определяет, нужно липродолжать повторение. Если условие выполняется, тело цикла повторяется. Если условие перестало выполняться, цикл заканчивается. На Паскале этот цикл записывается так:

while a<b do begin команда; команда; ........ end;

 


Если в теле цикла только одна команда, то begin и end не обязательны.

 

Пример использования цикла while: Известна сумма S1, положенная в банк и годовая процентная ставка P. Через сколько лет накопится сумма S2 ?

 
 
program bank; var s1,s2,p:real; g:integer; begin write(’Введите начальную сумму ’); readln(s1); write(’Введите конечную сумму ’); readln(s2); write(’Введите процентную ставку ’); readln(p); g:=0; while s1<s2 do begin s1:=s1 + s1 * p / 100; g:=g + 1; end; writeln(’До накопления суммы пройдёт ’,g,’ лет’); end.

 

 


Цикл с постусловием(с условием после тела цикла). В этом цикле после тела цикла проверяется условие, которое определяет, нужно лизакончить цикл. Если условие выполняется, цикл заканчивается. Если условие ещё не выполнилось, цикл повторяется.

 

На Паскале этот цикл записывается так:

 
 
repeat команда; команда; ........ until a >= b;  

 


program summa; var s,r: real; begin write(’Введите число R (> 1) ’); readln(r); s:=0; repeat s:=s+r ; r:=r/1.5 ; until r<0.001; writeln (’Сумма чисел равна ’,s:7:4); end.
Пример использования такого цикла: Найти сумму чисел, первое из которых R (R>1) задано с клавиатуры, а каждое следующее в 1.5 раза меньше. Последнее из этих чисел (которое не входит в сумму) – меньше 0.001.

 

 

Цикл с параметром(счётчиком). В этом цикле используется целая переменная – счётчик (или параметр цикла), которая автоматически при каждом повторении изменяется на 1 от начального значения до конечного. Если начальное значение меньше конечно­го, то на Паскале он записы­вается так:

 
 
for i:=1 to 20 do begin команда; команда; ........ end;  

 


Если начальное значение больше конечного, то записанный выше цикл не выполнится ни разу. Чтобы он повторял тело цикла, меняя счётчик в сторону уменьшения, заголовок цикла нужно изменить так:

 

 

Пример использования цикла for: Найти сумму первых 30 натуральных чисел. Слово «первых» обозначает, что начинаем с 1. Сумма в цикле увеличивается, но чтобы было к чему прибавить самое первое число, до начала цикла сумму обнуляем (присваиваем ей начальное значение 0).

       
 
program summa; var s,i: integer; begin s := 0; for i:=1 to 30 do s:= s + i ; writeln (’Сумма 30-ти чисел равна ’,s); readln; end.
 
   

 


Если в задаче повторяются одинаковые (или похожие) действия, нужно использовать цикл. Но какие из 3-х видов цикла в каких задачах лучше применить? Для выбора цикла рассуждайте так:

1) Так как чаще всего встречается цикл FOR, в первую очередь попробуем его. FOR годится, если число повторов точно известно до начала цикла. Если число повторов заранее неизвестно, а проясняется только по ходу выполнения цикла, используется один из условных циклов: WHILE или REPEAT.

2) Если возможно придумать такие исходные данные к задаче, при которых тело цикла не должно выполниться ни разу, то нужно использовать WHILE.

3) Если первый раз тело цикла обязательно требуется выполнить при любых условиях, и только в ходе выполнения вводятся или вычисляются данные, позволяющие принять решение об окончании цикла, то нужно использовать REPEAT.

Во всех остальных случаях WHILE или REPEAT являются одинаково пригодными.


 



<== предыдущая лекция | следующая лекция ==>
Вложенное ветвление | Лаб. 7. Числовые задачи с циклом For


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.