ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ. Программирование циклических алгоритмов ключевые слова while ( циклпока) repeat (циклдо)
Скачать 164.5 Kb.
|
ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ Ключевые слова
Программирование циклов с заданным условием продолжения работы Общий вид оператора: while <условие> do <оператор> Здесь: <условие> - логическое выражение; пока оно истинно, выполняется тело цикла; <оператор> - простой или составной оператор, с помощью которого записано тело цикла. Тело цикла Условие да нет да нет Начало Список данных x, y, r, q - цел x, y r:=x q:=0 r >=у r:= r - y q:= q +1 Конец q, r program n_14; var x, y, q, r: integer; begin writeln ('Частное и остаток'); write ('Введите делимое x>>'); readln (x); write ('Введите делитель y>>'); read (y); r:=x; q:=0; while r>=y do begin r:=r-y; q:=q+1 end; writeln ('Частное q=', q); writeln ('Остаток r=', r) end. Программирование циклов с заданным условием окончания работы Общий вид оператора: repeat <оператор1; оператор2; …; > until <условие> Здесь: <оператор1>; <оператор2>; … - операторы, образующие тело цикла; <условие> - логическое выражение; если оно ложно, то выполняется тело цикла. Тело цикла Условие да нет program n_15; var i: integer; x: real; begin writeln ('График тренировок'); i:=1; x:=10; repeat i:=i+1; x:=x+0.1*x; until x>=25; writeln ('Начиная с ', i, '-го дня спортсмен будет пробегать 25 км') end. Конец да нет Начало Список данных i – цел x- вещ i := 1 x := 10 x>= 25 i := i +1 x := x +0.1*x i Программирование циклов с заданным числом повторений Общий вид оператора: for <параметр>:=<начальное_значение> to <конечное_значение> do <оператор> Здесь: <параметр> - переменная целого типа; <начальное_значение> и <конечное_значение> - выражения того же типа, что и параметр; <оператор> - простой или составной оператор - тело цикла. Тело цикла i = i1, i2 Программирование циклов с заданным числом повторений Общий вид оператора: for <параметр>:=<начальное_значение> to <конечное_значение> do <оператор> После каждого выполнения тела цикла происходит увеличение на единицу параметра цикла; условие выхода из цикла – превышение параметром конечного значения. Тело цикла i = i1, i2 program n_16; var i,n:integer;a,y:real; begin writeln ('Возведение в степень'); write ('Введите основание a>>'); readln (a); write ('Введите показатель n>>'); readln (n); y:=1; for i:=1 to n do y:=y*a; writeln ('y=', y) end. Конец Начало Список данных i, n – цел a, y – вещ y := 1 y := y * a y a, n i = 1, n Различные варианты программирования циклического алгоритма Для решения одной и той же задачи могут быть созданы разные программы. Организуем ввод целых чисел и подсчёт количества введённых положительных и отрицательных чисел. Ввод должен осуществляться до тех пор, пока не будет введён ноль. В задаче в явном виде задано условие окончания работы. Воспользуемся оператором repeat. program n_17; var n, k1, k2: integer; begin k1:=0; k2:=0; repeat write ('Введите целое число>>'); readln (n); if n>0 then k1:=k1+1; if n<0 then k2:=k2+1; until n=0; writeln ('Введено:'); writeln ('положительных чисел – ', k1); writeln ('отрицательных чисел – ', k2) end. да нет n n > 0 Начало Список данных n, k1, k2 - цел n < 0 n = 0 k1, k2 Конец k1:=0 k2:=0 k1:=k1+1 k2:=k2+1 да да нет нет Ввод осуществляется до тех пор, пока не будет введён ноль. Работа продолжается, пока n 0. Воспользуемся оператором while: program n_18; var n, k1, k2: integer; begin k1:=0; k2:=0; n:=1; while n<>0 do begin writeln ('Введите целое число>>'); read (n); if n>0 then k1:=k1+1; if n<0 then k2:=k2+1; end; writeln ('Введено:'); writeln ('положительных – ', k1); writeln ('отрицательных – ', k2) end. да n > 0 да нет Начало Список данных n, k1, k2 - цел n <> 0 k1, k2 Конец k1:=0 k2:=0 n:=1 k1:=k1+1 k2:=k2+1 нет n Самое главное В языке Паскаль имеются три вида операторов цикла: while (цикл-ПОКА) repeat (цикл-ДО) for (цикл с параметром). Если число повторений тела цикла известно, то лучше воспользоваться оператором for; в остальных случаях используются операторы while и repeat. Вопросы и задания 1. Дана последовательность операторов: a:=1; b:=2; while a+b<8 do begin a:=a+1; b:=b+2; end; s:=a+b Сколько раз будет повторен цикл и какими будут значения переменных a, b, s после исполнения этой последовательности операторов? Вопросы и задания 2. Требовалось написать программу вычисления факториала числа n (факториал числа n есть произведение всех целых чисел от 1 до n). Программист торопился и написал программу неправильно. Ниже приведён фрагмент его программы, в котором содержится пять ошибок: k:=1; f:=0; while k f:=f*k; k:=k+1 Найдите ошибки. Допишите необходимые операторы.
Вопросы и задания 3. Дана последовательность операторов: a:=1; b:=1; repeat a:=a+1; b:=b*2; until b>8; s:=a+b Сколько раз будет повторён цикл и какими будут значения переменных a, b, s после исполнения этой последовательности операторов? Вопросы и задания 4. Напишите программу, в которой осуществляется ввод целых чисел (ввод осуществляется до тех пор, пока не будет введён ноль) и подсчёт суммы и среднего арифметического введённых положительных чисел. Используйте оператор repeat. Вопросы и задания 5. Напишите программу, в которой осуществляется ввод целых чисел (ввод осуществляется до тех пор, пока не будет введён ноль) и определение максимального (наибольшего) из введённых чисел. Используйте оператор repeat. Вопросы и задания 6. Напишите программу вычисления наибольшего общего делителя двух целых чисел: а) используйте оператор repeat; б) используйте оператор while. Вопросы и задания 7. Сколько раз будет выполнен цикл? а) for i:=0 to 15 do s:=s+1; б) for i:=10 to 15 do s:=s+1; в) for i:=-1 to 1 do s:=s+1; г) for i:=10 to 10 do s:=s+1; д) k:=5; for i:=k-1 to k+1 do s:=s+1; Вопросы и задания 8. Напишите программу, которая 10 раз выводит на экран ваши имя и фамилию. Вопросы и задания 9. Напишите программу, выводящую на экран изображение шахматной доски, где чёрные клетки изображаются звёздочками, а белые - пробелами. Рекомендуемый вид экрана после выполнения программы представлен ниже: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Вопросы и задания 10. Напишите программу, которая вычисляет сумму: а) первых n натуральных чисел; б) квадратов первых n натуральных чисел; в) всех чётных чисел в диапазоне от 1 до n; г) всех двузначных чисел. Вопросы и задания 11. Напишите программу, которая генерирует 10 случайных чисел в диапазоне от 1 до 20, выводит эти числа на экран и вычисляет их среднее арифметическое. Вопросы и задания 12. Напишите программу, которая выводит на экран таблицу степеней двойки (от нулевой до десятой). Рекомендуемый вид экрана после выполнения программы представлен ниже: Таблица степеней двойки: 0 1 1 2 2 4 3 8 4 16 5 32 6 64 7 128 8 256 9 512 10 1024 Вопросы и задания
13. Напишите программу, которая выводит на экран таблицу умножения на n (n - целое число в диапазоне от 2 до 10, вводимое с клавиатуры). Вопросы и задания 14. Какой из трёх рассмотренных операторов цикла является, по вашему мнению, основным, т. е. таким, что им можно заменить два других? Обоснуйте свою точку зрения. Опорный конспект while (цикл-ПОКA) repeat (цикл-ДО) for (цикл с параметром) Число повторений цикла известно В языке Паскаль имеются три вида операторов цикла: Число повторений цикла неизвестно 8>0>0> |