Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Тема 2.3 Операторы языка: ввода-вывода, условные операторы.
Ввод данных — это передача информации от внешних устройств в оперативную память. Вводятся, как правило, исходные данные решаемой задачи. Вывод — обратный процесс, когда данные передаются из оперативной памяти на внешние носители (принтер, дисплей, магнитные устройства и т.д.). Результаты решения всякой задачи должны быть выведены на один из этих носителей. Основными устройствами ввода-вывода у персонального компьютера являются клавиатура и дисплей (экран монитора). Именно через эти устройства главным образом осуществляется диалог между человеком и ПК. Процедура ввода с клавиатуры имеет следующий формат: Read(<список ввода>) где <список ввода> — это последовательность имен переменных, разделенных запятыми. Слово read переводится как читать. (Точнее говоря, Read — это оператор обращения к стандартной процедуре ввода.) Например, Read(a,b,c,d) При выполнении этого оператора происходит прерывание работы компьютера, после чего пользователь должен набрать на клавиатуре значения переменных а, Ь, с, d, отделяя их друг от друга пробелами. При этом вводимые значения высвечиваются на экране. В конце нажимают клавишу Enter. Значения должны вводиться в строгом соответствии с синтаксисом Паскаля. Пример: Var T: Real; J: Integer; К: Char; Begin Read(T,J,К); Набираем на клавиатуре: 253.98 100 G (Enter) Если в программе имеется несколько операторов Read, то данные для них вводятся потоком, т.е. после считывания значений переменных для одного оператора Read данные для следующего оператора читаются из той же строки на экране, что и для предыдущего до окончания строки, затем происходит переход на следующую строку. Пример: Var А,В: Integer; C,D: Real; Begin Read(А,В); Read(С,D); Набираем на клавиатуре: 18758 34 (Enter) 2.62E-02 1.54E+01(Enter) Другой вариант оператора ввода с клавиатуры имеет вид: ReadLn(<список ввода>) Здесь слово ReadLn означает read line — читать строку. Этот оператор отличается от Read только тем, что после считывания последнего в списке значения для одного оператора ReadLn данные для следующего оператора будут считываться с начала новой строки. Если в предыдущем примере заменить операторы Read на ReadLn: ReadLn(А,В); ReadLn(С,D); то ввод значений будет происходить из двух строк: 18758 34 (Enter) 2.62E-02 1.54E+01 (Enter) Оператор вывода на экран (обращение к стандартной процедуре вывода) имеет следующий формат:
Write(<список вывода>) Здесь элементами списка вывода могут быть выражения различных типов (в частности, константы и переменные). Пример: Write(234); {выводится целая константа} Write(A+B—2); {выводится результат вычисления выражения} Write(X,Summa,Argl,Arg2); {выводятся значения переменных} При выводе на экран нескольких чисел в строку они не отделяются друг от друга пробелами. Программист сам должен позаботиться о таком разделении. Пусть, например, /= 1; /= 2; К= 3. Тогда, написав в программе Write (I, ' ',J, ' ',К); получим на экране строку: 12 3. После вывода последнего символа курсор остается в той же строке. Следующий вывод на экран будет начинаться с этой позиции курсора. Второй вариант процедуры вывода на экран: WriteLn(<список вывода>) Слово WriteLn — write line — означает писать строку. Его действие отличается от оператора Write тем, что после вывода последнего в списке значения происходит перевод курсора к началу следующей строки. Оператор WriteLn, записанный без параметров, вызывает перевод строки. Форматы вывода. В списке вывода могут присутствовать указатели форматов вывода (форматы). Формат определяет представление выводимого значения на экране. Он отделяется от соответствующего ему элемента двоеточием. Если указатель формата отсутствует, то машина выводит значение по определенному правилу, предусмотренному по умолчанию. Ниже кратко, в справочной форме, приводятся правила и примеры бесформатного и форматированного вывода величин различных типов. Для представления списка вывода здесь будут использованы следующие обозначения: I, P, Q — целочисленные выражения; R — выражение вещественного типа; В — выражение булевского типа; СИ — символьная величина; S — строковое выражение; # — цифра; * — знак «+» или «—»; Форматы процедуры Write / — выводится десятичное представление величины /, начиная с позиции расположения курсора: Значение / Оператор Результат 134 Write(I) 134 287 Write(1,1,1) 287287287
1:Р — выводится десятичное представление величины /в крайние правые позиции поля шириной Р: Значение / Оператор Результат 134 Write(I:6) 134 312 Write ((I + I):7) 624 R — в поле шириной 18 символов выводится десятичное представление величины R в формате с плавающей точкой. Если R > 0,0, используется формат _#.##########Е*##. Если R < 0,0, то формат имеет вид _-#.##########Е*##: Значение R Оператор Результат 715.432 Write(R) _7.1543200000Е+02 -1.919Е+01 Write(R) _-1.9190000000Е+01 R: Р — в крайние правые позиции поля шириной Р символов выводится десятичное представление значения R в нормализованном формате с плавающей точкой. Минимальная длина поля вывода для положительных чисел составляет 7 символов, для отрицательных — 8 символов. После точки выводится по крайней мере одна цифра: Значение R Оператор Результат 511.04 Write(R:15) 5.110400000Е+02 46.78 Write(-R:12) -4.67800Е+01 R: P: Q — в крайние правые позиции поля шириной Р символов выводится десятичное представление значения R в формате с фиксированной точкой, причем после десятичной точки выводится Q цифр (0 < Q< 24), представляющих дробную часть числа. Если Q— 0, то ни дробная часть, ни десятичная точка не выводятся. Если Q > 24, то при выводе используется формат с плавающей точкой: Значение R Оператор Результат 511.04 Write(R:8:4) 511.0400 -46.78 Write(R:7:2) _-46.78 Ch: P — в крайнюю правую позицию поля шириной Р выводится значение СИ: Значение СИ Оператор Результат 'X' Write(Ch:3) __ X '!' Write(Ch:2,Ch:4) _!___! S — начиная с позиции курсора выводится значение S: Значение S Оператор Результат 'Day N' Write(S) Day N 'RRDD' Write(S,S) RRDDRRDD S. P — значение S выводится в крайние правые позиции поля шириной Р символов: Значение S Оператор Результат 'Day N' Write(S:10) .__ Day N 'RRDD' Write(S:5,S:5) _RRDD_RRDD В — выводится результат выражения В: true или false, начиная с текущей позиции курсора: Значение В Оператор Результат True Write (В) True False Write(В,Not B) FalseTrue B: P — в крайние правые позиции поля шириной Рсимволов выводится результат булевского выражения: Значение В Оператор Результат True Write(В:6) —True False Write (В: б,Not В: 7) _False____ True
Тема 2.4 Составной оператор. Операторы цикла. Операторы управления. Алгоритмическая структура ветвления программируется в Паскале с помощью условного оператора. Раньше мы его описывали в таком виде: If <условие> Then <оператор 1> Else <оператор 2>;
Кроме того, возможно использование неполной формы условного оператора: If <условие> Then <оператор>; Теперь дадим строгое описание условного оператора в форме синтаксической диаграммы (рис. 13). То, что мы раньше называли условием, есть логическое выраже ние, которое вычисляется в первую очередь. Если его значение равно true, то будет выполняться <оператор 1> (после Then), если Рис. 13 false, то <оператор 2> (после Else) для полной формы или сразу следующий оператор после условного для неполной формы (без Else). Пример 1. По длинам трех сторон треугольника а, Ь, с вычислить его площадь. Для решения задачи используется формула Герона у]р(р-а)(р-Ь)(р-с), где р = (а + b + с) /2 — полупериметр треугольника. Исходные данные должны удовлетворять основному соотношению для сторон треугольника: длина каждой стороны должна быть меньше длин двух других сторон. Имея возможность в одном условном операторе записывать достаточно сложные логические выражения, мы можем сразу «отфильтровать» все варианты неверных исходных данных. Program Geron; Var A,B,C,P,S: Real; Begin WriteLn('Введите длины сторон треугольника:'); Write('a='); ReadLn(A) Write Cb='); ReadLn (В) Write('c='); ReadLn(C) If (A>0) And (B>0) And (C>0) And (A+B>C) And (B+OA) And (A+OB) Then Begin P:=(A+B+C)/2; S:=Sqrt(P*(P-A)*(P-B)* (P-C)); WriteLn('Площадь=',S) End Else WriteLn('Неверные исходные данные') End. Теперь рассмотрим синтаксическую диаграмму оператора цикл- пока, или цикл с предусловием (рис. 14). Сначала вычисляется <Логическое выражение > Пока его значение равно t r u e, выполняется <Оператор> — тело цикла. Здесь <Оператор> может быть как простым, так и составным. Пример 2. В следующем фрагменте программы на Паскале вычисляется сумма конечного числа членов гармонического ряда Суммирование прекращается, когда очередное слагаемое становится меньше е или целая переменная /достигает значения Maxint. S:=0; I: = l; While (l/I>=Eps) And (KMaxInt) Do Begin S:=S+1/I; I:=I+1 End; Синтаксическая диаграмма оператора цикл-до, или цикл с постусловием, представлена на рис. 15. Исполнение цикла повторяется до того момента, когда Логическое выражение станет равным true. Предыдущая задача с использованием цикла с постусловием решается так: S:=0; 1:=1; Repeat S:=S+1/I; I:=I+1 Until (1/KEps) Or (I>=MaxInt); Тема 2.4 Составной оператор. Операторы цикла. Операторы управления. Алгоритмическая структура ветвления программируется в Паскале с помощью условного оператора. Раньше мы его описывали в таком виде:
If <условие> Then <оператор 1> Else <оператор 2>;
Кроме того, возможно использование неполной формы условного оператора: If <условие> Then <оператор>;
Теперь дадим строгое описание условного оператора в форме синтаксической диаграммы (рис. 16). То, что мы раньше называли условием, есть логическое выражение, которое вычисляется в первую очередь. Если его значение равно true, то будет выполняться <оператор 1> (после Then), если
false, то <оператор 2> (после Else) для полной формы или сразу следующий оператор после условного для неполной формы (без Else). Пример 1. По длинам трех сторон треугольника а, b, с вычислить его площадь. Для решения задачи используется формула Герона
где р = (а + b + с) /2 — полупериметр треугольника. Исходные данные должны удовлетворять основному соотношению для сторон треугольника: длина каждой стороны должна быть меньше длин двух других сторон. Имея возможность в одном условном операторе записывать достаточно сложные логические выражения, мы можем сразу «отфильтровать» все варианты неверных исходных данных. Program Geron; Var A,B,C,P,S: Real; Begin WriteLn('Введите длины сторон треугольника:'); Write ('a='); ReadLn(A) Write('b='); ReadLn(В) Write('c='); ReadLn(С) If (A>0) And (B>0) And (C>0) And (A+B>C) And (B+OA) And (A+OB) Then Begin P:=(A+B+C)/2; S:=Sqrt(P*(P-A)*(P-B)* (P-C)); WriteLn('Площадь=',S) End Else WriteLn('Неверные исходные данные') End. Теперь рассмотрим синтаксическую диаграмму оператора циклока, или цикл с предусловием (рис. 17).
Сначала вычисляется <Логическое выражение Пока его значение равно true, выполняется <Оператор> — тело цикла. Здесь <Оператор> может быть как простым, так и составным. Пример 2. В следующем фрагменте программы на Паскале вычисляется сумма конечного числа членов гармонического ряда Суммирование прекращается, когда очередное слагаемое становится меньше или целая переменная i достигает значения Maxint. S:=0; I:=l; While (l/I>=Eps) And (KMaxInt) Do Begin S:=S+1/I; I:=I+1 End; Синтаксическая диаграмма оператора цикл-до, или цикл с постусловием, представлена на рис. 18.
Исполнение цикла повторяется до того момента, когда <Логическое выражение> станет равным true. Предыдущая задача с использованием цикла с постусловием решается так: S:=0; 1:=1; Repeat S:=S+1/I; I:=I+1 Until (1/I<Eps) Or (I>=MaxInt); Цикл по параметру Рассмотрим следующую простую задачу: требуется вычислить сумму целых чисел от М до N путем прямого суммирования. Здесь M и N — целые числа. Задачу можно сформулировать так Алгоритм и программа решения этой задачи с использованием структуры цикл-пока представлены на рис. 19. А теперь введем новый тип циклической структуры, который будет называться цикл по параметру, или цикл-для. Блок-схема и программа на Паскале для решения рассматриваемой задачи с использованием этой структуры приведены на рис. 20. Здесь целая переменная I последовательно принимает значения в диапазоне от М до N. При каждом значении I выполняется тело цикла. После последнего выполнения цикла при I= N происходит выход из цикла на продолжение алгоритма. Цикл выполняется хотя бы один раз, если M<N, и не выполняется ни разу при М > N.
В программе используется оператор цикла For, синтаксическая диаграмма которого представлена на рис. 21.
1. Вычисляются значения <Выражения 1> и <Выражения 2>. Это делается только один раз при входе в цикл. 2. Параметру цикла присваивается значение <Выражения 1>. 3. Значение параметра цикла сравнивается со значением вы ражения 2>. Если параметр цикла меньше или равен этому значе нию, то выполняется тело цикла, в противном случае выполне ние цикла заканчивается. 4. Значение параметра цикла изменяется на следующее значение в его типе (для целых чисел — увеличивается на единицу); происходит возврат к пункту 3. Оператор цикла For объединяет в себе действия, которые при использовании цикла while выполняют различные операторы: присваивание параметру начального значения, сравнение с ко начнем значением, изменение на следующее. Как известно, результат суммирования целых чисел не зависит от порядка суммирования. Например, в рассматриваемой задаче числа можно складывать и в обратном порядке, т.е. от./V до М (N S М). Для этого можно использовать второй вариант оператора цикла For:
Слово DownTo буквально можно перевести как «вниз до». В таком случае параметр цикла изменяется по убыванию, т.е. при каждом повторении цикла параметр изменяет свое значение на предыдущее (равносильно i:=pred(i)). Тогда ясно, что цикл не выполняется ни разу, если N < М. Работая с оператором For, учитывайте следующие правила: • параметр цикла не может иметь тип Real; • в теле цикла нельзя изменять переменную «параметр цикла»; • при выходе из цикла значение переменной-параметра является неопределенным. В следующем примере в качестве параметра цикла For используется символьная переменная. Пусть требуется получить на экране десятичные коды букв латинского алфавита. Как известно, латинские буквы в таблице кодировки упорядочены по алфавиту. Вот фрагмент такой программы: Здесь переменная с имеет тип Char. А теперь подумайте сами, как вывести кодировку латинского алфавита в обратном порядке (от z до 'а').
|
|||||||||
Последнее изменение этой страницы: 2021-04-05; просмотров: 98; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.51.117 (0.079 с.) |