Презентация по информатике Turbo Pascal. Основы. Операторы. Циклы


TURBO PASCAL Основы, операторы, циклы Романенко Т.Н., учитель информатики МАОУ СОШ № 53 г. Томска Процедуры ввода и вывода Решение самой простой задачи на ЭВМ не обходится без операций ввода и вывода информации. Ввод данных – это передача информации от внешнего носителя в оперативную память для обработки. Вывод – обратный процесс, когда данные передаются после обработки из оперативной памяти компьютера на внешний носитель. Внешним носителем может служить терминал ввода-вывода (монитор), принтер, гибкий (дискета) или жесткий (винчестер) магнитный диск и другие устройства.В языке Паскаль стандартным средством общения человека и ЭВМ являются предопределенные файлы Input и Output, которые по умолчанию являются параметрами программы. Программа получает входные данные из файла Input и помещает результат обработки в файл Output. Стандартно файлу Input назначена клавиатура, а файлу Output – экран терминала.Для выполнения ввода-вывода служат четыре процедуры: Read, Readln, Write, Writeln. В данном разделе будет рассмотрено их применение для ввода данных с клавиатуры и вывода на экран.ВводВывод Процедуры чтения Процедура чтения Read обеспечивает ввод числовых данных, строк, символов и т.д. для последующей их обработки программой. Формат: Read (X1, X2, …, Xn);или Read (F, X1,X2, … ,Xn);где X1, X2, … ,Xn – переменные допустимых типов данных; F – переменная, связанная с файлом, откуда будет выполнено чтение. В нашем случае рассмотрим только первый вариант.Значения X1, X2, … ,Xn набираются минимум через один пробел на клавиатуре и высвечиваются на экране. После набора данных для одной процедуры Read нажимается клавиша ввода Enter. Если в программе имеется несколько процедур Read, данные из них вводятся потоком, т.е. после считывания значения переменных для одной процедуры Read набирают в той же строке, что и для предыдущей, до окончания строки, затем происходит переход на следующую строку.П Р И М Е Р.var A, B, Sum1 : integer; C, D, Sum2 : real; . . . .begin read (A, B); Sum1:=A+B; read (C, D); Sum2:=C+D; . . . .end. Набираем на клавиатуре: 12 15 0.5 0.9 и нажимаем Enter. Но можно и после набора каждой пары нажимать Enter, т.е. 12 15 Enter, 0.5 0.9 Enter.Процедура чтения Readln аналогична процедуре Read, единственное отличие заключается в том, что после считывания последней в списке значения для одной процедуры Readln данные для следующей процедуры Readln будут считываться с начала новой строки. Если в предыдущем примере заменить Read на Readln:. . .read (A, B); Sum1:=A+B;read (C, D); Sum2:=C+D;. . .то после набора значений A и B курсор автоматически перейдет на новую строку, где будут набираться данные для Cи D:12 15 Enter0.5 0.9 Enter Процедура записи Процедура записи Write производит вывод числовых данных, символов, строк и булевских значений. Формат:Write (Y1, Y2, … ,Yn);илиWrite (F, Y1, Y2, … ,Yn);где Y1, Y2, … ,Yn – выражения типа integer, byte, char, boolean и т.д.; F – имя файла, куда производится вывод. Для вывода на принтер F равно Lst. Чтобы устройство Lst стало доступным, необходимо подключить модуль Printer с помощью зарезервированного слова uses. П Р И М Е Р.uses Printer;var . . .begin Write(234);{Выражение предоставлено значением} Write(A+B-2); {Выводится результат выражения} Write(Lst, ' Результат вычислений = ' A+B);end.Процедура записи Writeln отличается от процедуры записи Write тем, что в процедуре Writeln после вывода курсор автоматически переходит не новую строку, когда при Write курсор остается на этой же строке. Форматы вывода В процедурах вывода Write и Writeln имеется возможность записи выражения, определяющего ширину поля вывода.1.Пусть дано целое число. Осуществим его вывод с позиции расположения курсора. Write (a).ЧислоВыражениеРезультат a:=123Write (a)123 a:=555Write (a,a,a)5555555552.Теперь выведем целое число a в крайние правые позиции поля ширины p. Write (a:p).ЧислоВыражениеРезультатa:=134Write (a:5)___134a:=1Write (a:10)___________1 3.Выведем вещественное число в формате с плавающей точкой (на такое число отводится 18 символов, один из которых отводится под знак числа). Write (R);ЧислоВыражениеРезультатR:=755.432Write (R)__7.1543200000E+02R:=-1.919E+01Write (R) _–1.9190000000E+014. Выведем вещественное число R в формате с плавающей точкой в крайние правые позиции поля шириной p символов, причем после десятичной точки выведем q цифр (0 then <оператор 1> else <оператор 2>;if <условие> then <оператор>; если <условие> то <оператор 1> иначе <оператор 2>;если <условие> то <оператор>; Оператор условий if выполняется следующим образом. Сначала вычисляется выражение, записанное в условии. В результате его вычисления получается значение логического типа. В первом случае, если значение выражения есть истина, выполняется <оператор 1>, указанный после слова then (то). Если результат вычисления выражения в условии есть ложь, выполняется <оператор 2>. Во втором – если результат выражения есть истина, выполняется <оператор>, если ложь –оператор, следующий сразу за оператором if. Операторы if могут быть вложенными.Пример фрагмента программы с оператором условия if: Read (N) ;if N<>0 then begin F:=1 / N ; Writeln(' Значение функции 1 / N = ', F:0:2) ;end;else Writeln(' Деление на ноль невозможно! ') ;В данном примере с клавиатуры вводится действительное число. Затем проверяется условие N<>0, (знак «<>» обозначает не равно). Если оно выполняется, производится вычисление числа, обратного данному и вывод полученного числа на экран с округлением до двух знаков после запятой. Если условие не выполняется, то выводится соответствующее сообщение. Примечание:При использовании вложенных условных операторов может возникнуть синтаксическая неоднозначность, иллюстрируемая следующей схемой:if <условие 1> then if< условие 2> then <оператор 1>else <оператор 2> Возникающая двусмысленность, к какому опера- тору if принадлежит часть else <оператор 2>, разрешается тем, что служебное слово else всегда ассоциируется (связывается) с ближайшим по тексту служебным словом if, которое еще не связано со служебным словом else. В связи с этим следует проявлять аккуратность при записи вложенных операторов условия. Оператор выбора case Если один оператор if может обеспечить выбор из двух альтернатив, то оператор выбора case позволяет сделать выбор из произвольного числа имеющихся вариантов. Он состоит из выражения, называемого селектором (selection – выбор альтернативы), и списка параметров, каждому из которых предшествует список констант выбора (список может выглядеть из одной константы). Синтаксическая диаграмма оператора case выглядит следующим образом: else опера-тор case селек-тор of кон-станта : опера-тор end Следуя данной диаграмме, получим следующий формат записи:case <выражение-селектор> of<список 1>: <оператор 1;><список 2>: <оператор 2;>. . .<список N>: <оператор N;>else <оператор >end;Оператор case работает следующим образом. Сначала вычисляется значение выражения-селектора, затем обеспечи- вается реализация того оператора, константа выбора которого равна текущему значению селектора. Если ни одна константа не равна текущему значению селектора, выполняется опера- тор, стоящий за словом else. Если слово else отсутствует, ак-тивизируется оператор, находящийся за словом end, т.е. пер-вый оператор за границей case. Приведем типичные формы записи оператора case.Селектор интервального типа:case I of 1 .. 10: Writeln(' число ', I : 4, ' в диапазоне 1 – 10 '); 11 .. 20: Writeln(' число ', I : 4, ' в диапазоне 11 – 20 ' ); 21 .. 30: Writeln(' число ', I : 4, ' в диапазоне 21 – 30 ')else Writeln(' число ', I : 4, ' вне предела контроля ')end;Селектор целочисленного типа:case I of 1 : Z := I + 10; 2 : Z := I + 100; 3 : Z := I + 1000end; Селектор перечисляемого пользовательского типа:varSeason:(winter, spring, summer, autumn); begincase Season ofwinter: writeln('зима');spring: writeln('весна');summer: writeln('лето');autumn: writeln('осень'); end; end. Операторы повтора Если в программе возникает необходимость неоднократно выполнить некоторые операторы, то используются операторы повтора (циклы). В языке Паскаль различают три вида операторов цикла:Они используются для организации циклов различных типов. Выражение, управляющее повторением, должно иметь логический тип.Если число повторений оператора (составного опера- тора) заранее неизвестно, а задано лишь условие его повторения (или окончания), используют операторы while, repeat. Оператор for используется, если число повторений заранее известно. while repeat for Оператор while Оператор while (пока) часто называют оператором цикла с предусловием за то, что проверка условия выполнения тела цикла производится в самом начале оператора.Синтаксическая диаграмма для данного оператора выглядит следующим образом: while выражение оператор do Формат записи:while <условие продолжения повторений> do<тело цикла>Условие – логическое выражение, тело цикла – простой или составной оператор. Перед каждым выполнением тела цикла вычисляется значение выражения условия Если результат истинен, то тело цикла выполняется и снова вычисляется выражение условия. Если результат ложен, происходят выход из цикла и переход к первому после while оператору.Приведем программу, демонстрирующую работу цикла while. Вычисление факториала введенного числа. var n, i : integer; fn : longint;beginwriteln ('Введите натуральное число ...') ; read (n) ;fn := 1 ;while i < n do begin i := i + 1; fn := fn * i ; end;writeln ('... его факториал равен', fn : 10);end. Оператор повтора repeat Оператор повтора repeat аналогичен оператору while, но отличается от него, во-первых, тем, что условие проверяется после очередного выполнения операторов тела цикла, а во-вторых, тем, что критерием прекращения цикла является равенство выражения истине. За это цикл repeat часто называют циклом с постусловием, или циклом “ ДО”, так как он прекращается выполняться, как только значение выражения условия, записанного, после слова until становится истина.Оператор условия repeat состоит из заголовка repeat, тела цикла и условия окончания until.Синтаксическая диаграмма для данного оператора выглядит следующим образом: Формат записи:repeat <оператор;> . . . <оператор;>until <условие окончания цикла> ;Операторы, заключенные между словами repeat и until, являются телом цикла. Вначале выполняется тело цикла, за- тем проверяется условие выхода из цикла. Именно по этому цикл, организованный с помощью оператора repeat, в любом случае выполнится хотя бы один раз. Если результат логичес- кого выражения ложен, то тело цикла повторяется еще раз; если результат истина, происходит выход из цикла. repeat оператор выражение until ; При программировании операторов тела циклов следует обеспечить влияние по крайней мере одного из операторов тела цикла на значение условия, иначе цикл будет выполнятся беско- нечно.Примером действия оператора repeat служит следующая программа, суммирующая числа, вводимые с клавиатуры, если пользователь ввел 0, то выводится сумма.var x,sum : integer ;beginsum:=0;repeatwrite ('Значение Х=') ;readln (x) ;if x < > 0 then sum := sum + x ;until x = 0;writeln('Сумма введенных чисел = ', sum);end. Оператор повтора for В случаях, когда число повторений может быть зара- нее известно, для организации циклической обработки ин- формации применяется оператор повтора for. Часто этот оператор называют оператором цикла с параметром, так как число повторений задается переменной, называемой пара- метром цикла, или управляющей переменной.Оператор повтора for состоит из заголовка и тела цикла.Синтаксическая диаграмма для данного оператора выглядит следующим образом: for идентификаторпеременной := выражение to downto оператор do выражение Как видно из диаграммы он может быть представлен в двух формах:for <параметр цикла> := to do <оператор> ;for <параметр цикла> := to downto <оператор> ;где S1 и S2 – выражения, определяющие соответственно на- чальное и конечное значение параметра цикла;for …do – заголовок цикла;<оператор> – тело цикла.Тело цикла может бать простым или составным опера- тором. Оператор for обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все значения параметра цик- ла от начального до конечного.Заголовок оператора повтора for определяет: диапазон изменения значений управляющей переменной (па- раметра цикла) и одновременно число повторений оператора, содержащегося в теле цикла; направление изменения значения параметра цикла (возрастание –to или убывание – downto).П Р И М Е Р:for I := 1 to 10 do Read (M[I]) ; {Чтение элементов массива}for I := 10 downto 1 do Write (M[I]) ;{Вывод элементов массива}При первом обращении к оператору for вначале вычисляют- ся выражения S1 и осуществляется присваивание <параметр цикла> := S1.После этого циклически повторяются следующие действия:1. Проверяется условие <параметр цикла>: <= S2.2. Если условие выполнено, то оператор for продолжает работу (выполняется оператор в теле цикла), если условие <параметр цикла>: <= S2 не выполнено, то оператор for завершает работу, и управление в программе передается на оператор, следующий за циклом.3. Значение управляющей переменной изменяется на +1 (to) или –1 (downto) и далее с пункта 1. Обратите внимание, что шаг изменения управляющей переменной – единица. На использование управляющей переменной (пара- метра цикла) в цикле for накладываются следующие ограни- чения.1. В качестве параметра должна использоваться простая переменная, описанная в текущем блоке.2. Управляющая переменная должна иметь дискретный тип.3. Начальное и конечное значение диапазона должны иметь тип, совместимый с типом управляющей переменной. При этом допустим любой скалярный тип, кроме вещественного.4. В теле цикла запрещается явное изменение значения уп- равляющей переменной (например, оператором присваива- ния).5. После завершения оператора значение управляющей пе- ременной становится неопределенным, если только выпол-нение оператора не было прервано оператором перехода.Приведем пример действия оператора for на примере перевода температуры из «Цельсия» (C) в «Фаренгейт» (F). По формуле F = C*1.8 + 32, на отрезке от15єC до 30єC c шагом 1єC. var I : integer; F : real ; beginwriteln (' Т Е М П Е Р Т У Р А ') ;for I := 15 to 30 dobeginF := I*1.8 + 32 ;writeln ('По Цельсию = ',I,' по Фаренгейту = ',F:5:1) ;end;end.Допускается вкладывание одного цикла в другой с соб- людением всех правил.