Алгоритмические этюды на использование операторов цикла.

Презентация:



Advertisements
Похожие презентации
Организация повторений в Паскале. Найди ошибки: Program new Uses crt; Var a, b, c integer Begin clrscr Readln(a,b); C:=a*a+b*b Wreteln(c); End.
Advertisements

Алгоритмическая структура цикл Алгоритм циклической структуры - это алгоритм, в котором происходит многократное повторение одного и того же участка программы.
Понятие циклов и их применение к решению задач по программированию на языке Pascal.
Организация повторений в Паскале. i,1,n Действие 1 Действие 2 i,1,n Действие 1 Действие 2 FOR i:=1 TO N DO BEGIN действие 1; действие 2; END; FOR i:=1.
1 Программирование на языке Паскаль Тема 4. Циклы.
Циклические алгоритмы. Цикл - это такая алгоритмическая структура, в которой осуществляется многократное повторение одной ( или нескольких ) команд.
АЛГОРИТМИЧЕСКАЯ СТРУКТУРА ЦИКЛ АЛГОРИТМИЧЕСКАЯ СТРУКТУРА ЦИКЛ В TURBO PASCAL Условие Оператор ДаНет Учитель информатики: Коваленко Татьяна Викторовна
Организация программ циклической структуры. Виды циклов: Цикл с предусловием (while) Цикл с постусловием (repeat) Цикл с параметром (for)
Презентация на тему: «Программирование циклических структур». Составила: учитель информатики Чура Н.А. Составила: учитель информатики Чура Н.А.
Циклический алгоритм –это алгоритм команды которого выполняются несколько раз подряд. В языке Паскаль имеется три различных оператора цикла: 1. Оператор.
Тема: Цикл с параметром (цикл «Для») На естественном языке Для i от А до В повторять Тело цикла i,a,b- параметры цикла тело цикла – это команды, которые.
Операторы цикла с условием 9 класс Раздел: Основы алгоритмизации и программирование на языке Pascal.
ОПЕРАТОРЫ ПОВТОРА (ЦИКЛА). ЦИКЛ-одна из важнейших алгоритмических структур. ЦИКЛ представляет собой последовательность операторов, которая выполняется.
Циклы в языке Pascal.. Разновидности циклов: Циклы Цикл ПОКА (While) Цикл ДО (Repeat) Цикл с параметром (For … to …)
Программирование циклических алгоритмов. Цикл - многократное повторение последовательности действий по некоторому условию.
Операторы цикла. Цикл со счетчиком Операторы цикла применяют в тех случаях, когда в алгоритме есть серия последовательных команд, которые нужно повторить.
Цикл - это специальная конструкция языка, позволяющая запрограммировать многократное выполнение определённого блока команд. Сам блок команд называется.
1 Программирование на языке Паскаль 1. Циклы с параметром.
1 Тема: Циклы с заранее неизвестным числом повторений.
Pascal Алгоритмы циклической структуры, программирование на языке Pascal Часть 2 8 «Б» и 10 «Б» классы.
Транксрипт:

Алгоритмические этюды на использование операторов цикла

ОСОБЕННОСТИ ИСПОЛЬЗОВАНИЯ АРИФМЕТИЧЕСКОГО ОПЕРАТОРА ЦИКЛА С ЗАДАННЫМ ЧИСЛОМ ПОВТОРЕНИЙ Формат оператора : For пц := нз To кз Do оператор ; For пц := кц DownTo нз Do оператор ;

Особенности : Правило 1. Параметр цикла ( пц ) может быть простого дискретного типа : byte, integer, char, интервального, перечислимого. Правило 2. Начальное значение параметра цикла ( нз ) должно быть не больше конечного значения ( кз ). Если начальное значение больше конечного, то тело цикла не выполняется ни разу. Правило 3. Начальное и конечное значения параметра цикла вычисляются один раз до выполнения тела цикла и не меняются, пока цикл не завершён. Правило 4. Нецелесообразно менять значение параметра цикла в теле цикла. Правило 5. В теле цикла может быть только один оператор, поэтому, если нужно выполнить несколько действий, они заключаются в операторные скобки begin … end ; Правило 6. После выполнения тела цикла параметр цикла автоматически переходит к следующему значению (To) или к предыдущему значению (DownTo).

ЭТЮД 1 Определить, что будет выведено на экран после выполнения следующей программы: Program et1; Uses crt; Var n,k: byte; BEGIN n:=5; WriteLn( цикл 1); For k:=1 To n Do Write(k); WriteLn; WriteLn( цикл 2); For k:=1 DownTo n Do Write(k); WriteLn; WriteLn( цикл 3); For k:=nTo 1 Do Write(k); WriteLn; WriteLn( цикл 4); For k:=1 DownTo n Do Write(k); END. На экране: цикл цикл 2 цикл 3 цикл _

ЭТЮД 2 Определить, что будет выведено на экран после выполнения следующей программы: Program et 2 ; Uses crt; Var n,k: byte; BEGIN n:=5; For k:=1 To n Do begin n:=n+1; WriteLn(k=,k,n=,n);end; END. На экране: k=1 n=6 k=2 n=7 k=3 n=8 k=4 n=9 k=5 n=10

ЭТЮД 3 Определить, что будет выведено на экран после выполнения следующих фрагментов программ: На экране: … 1) S:=0; For k:=1 to 5 do s:=s+k; Write(s); … … 2) S:=0; For k:=1 to 5 do begin s:=s+k; Write(s); end; … Какие изменения нужно внести во второй фрагмент, чтобы значения сумм выводились на экран монитора через пробел?

ЭТЮД 4 Определить, что будет выведено на экран после выполнения следующей программы, т.е. какое значение будет иметь переменная k после выхода из цикла: Program et 2 ; Uses crt; Var n,k: byte; BEGIN n:=5; For k:=1 To n Do k:=k+2; WriteLn(k=,k); END. Правило 4 гласит, что нецелесообразно менять значение параметра цикла for в теле цикла. Не запрещено, но нецелесообразно, потому что результат может быть непредсказуем. Всё зависит от того, как проверяется условие на конец цикла. В разных версиях языка используются разные варианты проверки : k

Например, при входе в цикл k равно 1. В теле цикла оно увеличивается на 2 и становится равным 3. Так как 3 меньше 5, то значение k автоматически увеличивается ещё на 1, становится равным 4. Тело цикла выполняется ещё раз, k становится равным 6. Так как 6 не меньше 5, выполнение оператора цикла заканчивается. На экран выводится значение k=6. Program et 2 ; Uses crt; Var n,k: byte; BEGIN n:=5; For k:=1 To n Do k:=k+2; WriteLn(k=,k); END. Ручной счёт: knk

В Borland Pascal реализуется сравнение k=n (строгое совпадение). При выполнении оператора цикла k будет последовательно принимать значения 3,6,9,12,…,252, 255, 2, 5. (Для переменной k задан тип byte, поэтому она может принимать значения от 0 до 255.) Тело цикла при этом будет выполняться 87 раз. А если в Borland Pascal включить в программу оператор: For k:=1 To n Do k:=k+ 3 ; то произойдёт зацикливание, поскольку k будет меняться таким образом (4, 8, 12, …, 252, 0, …), что никогда не станет равным 5. То есть, если не знать особенностей транслятора языка, изменение параметра цикла может привести к непредвиденным последствиям. При этом отыскать синтаксическую ошибку бывает очень трудно.

ЭТЮД 5 Какая из приведенных ниже программ не содержит ошибку и что будет выведено на экран после её выполнения? А) uses crt; TYPE x=(b1,b2,b3); VAR b: x; BEGIN For b:=b1 to b3 do write(b); END. Б) uses crt; TYPE x=(b1,b2,b3); VAR b: x; BEGIN For b:=b1 to b3 do case b of b1: write(b1); b2: write(b2); b3:write(b3); end; END. В) uses crt; TYPE x=(b1,b2,b3); VAR b: x; BEGIN For b:=b1 to b3 do case b of b1: write(b1); b2: write(b2); b3:write(b3); end; END. На экране: b1b2b3 Данные перечислимого типа могут быть параметрами цикла. Поэтому во всех трех программах в записи тела оператора цикла ошибок нет. Выполнится только программа варианта Б). В случаях А) и В) будет выдана ошибка, что данные перечислимого типа выводить нельзя.

ОСОБЕННОСТИ ИСПОЛЬЗОВАНИЯ ОПЕРАТОРА ЦИКЛА С ПРЕДУСЛОВИЕМ Формат оператора : WHILE условие DO оператор ;

Особенности : Правило 1. Тело цикла выполняется, пока условие верно. Правило 2. Если условие с самого начала неверно, то тело цикла не выполнится ни разу. Правило 3. В теле цикла может быть только один оператор, поэтому если нужно выполнить несколько действий, то они заключаются в операторные скобки begin … end ;. Правило 4. Значение параметра цикла ( переменной, входящей в условие ) должно быть определено до цикла и должно изменяться в теле цикла, чтобы не произошло зацикливания.

ЭТЮД 6 Определить, что будет выведено на экран после выполнения приведённого ниже фрагмента программы: … k:=1; n:=2; WHILE k < n Do begin k:=k+2; n:=n+3; end; Write(k, n); … На экране: Произойдет зацикливание, поскольку значение переменной k будет всегда меньше значения переменной n ( правило 1)

ЭТЮД 7 Определить, что будет выведено на экран после выполнения приведённого ниже фрагмента программы: … k:= 2 ; n:= 1 ; WHILE k < n Do begin k:=k+2; n:=n+3; end; Write(k, n); … На экране: 21 Тело цикла не выполнится ни разу, поскольку условие при входе в цикл изначально ложно ( правило 2). На экран выведутся значения k= 2 и n= 1.

ЭТЮД 8 Определить, что будет выведено на экран после выполнения приведённого ниже фрагмента программы: … k:=1 ; n:=5; WHILE k < n Do k:=k+2; n:=n+3; Write(k, n); … На экране: 58 В теле цикла только один оператор k:+k+2; ( правило 3). Он выполнится два раза. На экран выведутся значения k=5 и n=8.

ЭТЮД 9 Определить, что будет выведено на экран после выполнения приведённого ниже фрагмента программы: … s:=0; k:=1 ; n:=5; WHILE k < n Do begin readln(x); s:=s+x; end; Write(s); … На экране: Программа зациклится, поскольку параметры цикла не меняются в теле цикла ( правило 4 ).

ЭТЮД 10 Определить, что будет выведено на экран после выполнения приведённого ниже фрагмента программы, если k и n определены как: a) integer; б) byte; … k:=1 ; n:=5; WHILE k < n Do n:=n - 3; Write(k:3, n:3); … На экране: a) 1 -1 б)б) a) Переменная k так и останется равной 1, переменная n станет равной-1 б) Выполнение прервётся с сообщением об ошибке «выход за границы диапазона переменной типа byte »

ЭТЮД 11 Каков смысл приведённого ниже фрагмента программы? … WHILE not (keypressed) Do; … В Borland Pascal – ожидание нажатия какой-либо клавиши.

ОСОБЕННОСТИ ИСПОЛЬЗОВАНИЯ ОПЕРАТОРА ЦИКЛА С ПОСТУСЛОВИЕМ Формат оператора : REPEAT операторы UNTIL условие ;

Особенности : Правило 1. Тело цикла выполняется, пока условие неверно. Правило 2. Тело цикла выполняется хотя бы один раз. Правило 3. Значение параметра цикла ( переменной, входящей в условие ) целесообразно определять до цикла. В теле цикла оно должно изменяться, чтобы не произошло зацикливания.

ЭТЮД 12 Определить, что будет выведено на экран после выполнения приведённого ниже фрагмента программы: … S:=информатика; k:=1; n:=5; REPEAT gotoxy(35,12);write(s); delay(1000); clrscr; delay(1000); k:=k+1; UNTIL k>n; … На экране: информатика

ЭТЮД 13 Каков смысл приведённого ниже фрагмента программы? REPEAT UNTIL keypressed ОТВЕТ: Ожидание нажатия какой- либо клавиши. Если нужно дождаться конкретной клавиши, например, *, то можно использовать конструкцию: REPEAT UNTIL readkey= * ;

ЭТЮД 14 В чём смысл приведённого ниже фрагмента программы? … REPEAT Write(Введите верно год:); ReadLn(g); UNTIL (g>=1990) and (g

ЭТЮД 15

ЭТЮД 16