Операторы цикла в языке программирования Си++"
Операторы цикла в языке программирования Си++"
1 Лабораторная работа "Операторы цикла в языке программирования Си++" Цель работы: ознакомиться с циклическими алгоритмами и операторами, реализующими эти алгоритмы. Освоить особенности применения каждого оператора. Составить программы с использованием всех операторов цикла. 1. Теоретические сведения Оператор цикла while Описание: while (выражение) оператор; Действие: Выполняется оператор до тех пор, пока значение выражения в скобках истинно. Проверка значения выражения происходит перед каждым выполнением оператора. Когда значение выражения ложно, цикл while заканчивается. Если выражение ложно с самого начала, оператор не выполняется ни разу. Комментарий: Следует заметить, что после ключевого слова while и выражения, заключенного в круглые скобки, точка с запятой не ставится. Оператор иногда называется телом цикла. В теле цикла должны выполняться действия, в результате которых меняется значение управляющего выражения. В противном случае можем получить бесконечный цикл. Пример: /*Демонстрация цикла while*/ #include <stdio.h> main( ) { int i=1 while (getchar()!='R') i++; /*оператор getchar() вводит любой символ с клавиатуры*/ printf("Символ R %d-й",i); } Приведенная программа позволяет определить порядковый номер первой введенной буквы R в последовательности символов. Она показывает использование цикла while, в теле которого всего одна инструкция (i++ - увеличение значения целого числа i на единицу). Если запустить эту программу на выполнение и ввести последовательность символов, например: abFk!Rgm, то на экране появится строка: Символ R 6-й. Оператор цикла do-while Описание: do оператор while (выражение); Действие: В операторе do-while тело цикла выполняется по крайней мере один раз. Тело цикла будет выполняться до тех пор, пока выражение в скобках не примет ложное значение. Если оно ложно при входе в цикл, то его тело выполняется ровно один раз. Комментарий: после слова while и выражения, заключенного в скобки, ставится точка с запятой. Если в теле цикла содержится более одной инструкции, то операторы цикла заключаются в фигурные скобки. Пример: /*Демонстрация цикла do-while */ #include <stdio.h> main() { int i=0; /*i=0, а не единице*/ do i++; while (getchar()!='R'); printf("Символ R %d-й",i); } Программа, представленная выше, теперь написана с циклом do-while. Результат программы будет таким же. Оператор цикла for Описание: for (выражение 1; выражение 2; выражение 3) оператор; Действие: В круглых скобках содержится три выражения. Первое из них служит для инициализации счетчика. Она осуществляется только один раз - когда цикл for начинает выполняться. Второе выражение необходимо для проверки условия, которая осуществляется перед каждым возможным выполнением тела цикла. Когда выражение становится ложным, цикл завершается. Третье выражение вычисляется в конце каждого выполнения тела цикла, происходит приращение числа на шаг. Комментарий: в операторе цикла for точка с запятой после закрывающейся круглой скобки не ставится. Любое из трех или все три выражения в операторе могут отсутствовать, однако разделяющие их точки с запятыми опускать нельзя. Если отсутствует выражение 2, имеем бесконечный цикл. Например:for (scanf("%d",&p);;p++) оператор; В языке СИ предусмотрены две нетрадиционные операции: (++) - для увеличения на единицу и (--) - для уменьшения на единицу значения операнда. Операции ++ и -- можно записывать как перед операндом, так и после него. В первом случае (++n или --n) значение операнда (n) изменяется перед его использованием в соответствующем выражении, а во втором (n++ или n--) - после его использования. Если отсутствуют выражения 1 и 3, цикл становится эквивалентным while. Например:for (;a<20;) оператор; Каждое из выражений может состоять из нескольких выражений, объединенных операцией "запятая". Например: for(i=0, j=1; i<100; i++, j++) a[i]=b[j]; Тело цикла заключается в фигурные скобки, если в нем более одного оператора. Пример: /*демонстрация цикла for*/ #include <stdio.h> main() {int i,j=1,k; for (i=1;i<=3;i++) printf("Минск\t"); /*В цикле for три раза выполняется функция вывода*/ /*Здесь i-управляющая переменная цикла*/ printf("\nУкажите число повторений цикла\n"); scanf("%d",&k); for (i=1;i<=k;i++) {j*=i; printf("%d",j);} /*Здесь две инструкции (более одной), поэтому они заключаются в фигурные скобки*/ j=i; printf("\n"); /*Переменной j присваивается значение 1 и осуществляется перевод курсора*/ /*В следующем цикле for выполняются те же действия, что и в предыдущем*/ for (i=1;i<=k;i++) printf("%d ", j*=i); } Результаты выполнения программы следующие: Минск Минск Минск Укажите число повторений цикла; 5 1 2 6 24 120 1 2 6 24 120 Оператор break Описание: Break используется для прекращения выполнения цикла из-за обнаружения ошибки, для организации дополнения к условию в заголовке цикла, для прекращения бесконечного цикла. Пример: while (st>0 && st<25) Работа цикла полностью прекращается, как только условие в операторе if становится истинным. Оператор continue Действие: Этот оператор может использоваться во всех трех типах циклов. Как и в случае оператора break, он приводит к изменению характера выполнения программы. Однако вместо завершения работы цикла наличие оператора continue вызывает пропуск "оставшейся" части итерации и переход к началу следующей. Пример. Заменим в предыдущей программе оператор break на continue. while (st>0 && st<25) При истинном условии в операторе if оператор continue вызывает пропуск идущих за ним операторов тела цикла и осуществляется переход к началу следующей итерации. 2. ЗаданиеЗадание взять из таблицы 1 и таблицы 2 согласно варианту. Разработать блок-схемы алгоритма. Написать и отладить программы. Таблица 1 |
№ варианта | Задание | | 1. | | | 2. | | | 3. | | | 4. | | | 5. | | | 6. | | | 7. | | | 8. | | | 9. | | | 10. | | | 11. | | | 12. | | | 13. | | | 14. | | | 15. | | | 16. | | | 17. | | | 18. | | | 19. | | | 20. | | | 21. | | | 22. | | | 23 | | | 24. | | | 25. | | | | Таблица 2|
№ варианта | Задание | | 1. | | | 2. | | | 3. | | | 4. | | | 5. | | | 6. | | | 7. | | | 8. | | | 9. | | | 10. | | | 11. | | | 12. | | | 13. | | | 14. | | | 15. | | | 16. | | | 17. | | | 18. | | | 19. | | | 20. | | | 21. | | | 22. | | | 23 | | | 24. | | | 25. | | | | ЛитератураПодбельский В.В. Язык Cu ++: Учебное пособие. - М.: Финансы и статистика,1995, - 560 с.Страуструп Б. Язык программирования Сг ++. - М.: Радио и связь, 1991. - 352 стр.Собоцинский В.В. Практический курс Turbo Cu ++. Основы объктно- ориентированного программирования. - М.: Свет, 1993. - 236 с.Романов В.Ю. Программирование на языке Cu ++. Практический подход. - М.: Компьтер, 1993. - 160 с.Уинер Р. Язык турбо Cu . - М.: Мир, 1991. - 384 с.Юлин В.А., Булатова И.Р. Приглашение к Cu. - Мн.: Высш. Шк., 1990,- 224 с.Котлинская Г.П., Галиновский О.И. Программирование на языке Cu. -Мн.: Высш. Шк., 1991. - 156 с.
|