Чем отличаются два оператора вывода в этой программе
После того как построен алгоритм решения задачи, составляется программа на определенном языке программирования.
Среди современных языков программирования одним из самых популярных является язык Паскаль. Этот язык разработан в 1971 году и назван в честь Блеза Паскаля — французского ученого, изобретателя механической вычислительной машины. Автор языка Паскаль — швейцарский профессор Никлаус Вирт.
Паскаль — это универсальный язык программирования, позволяющий решать самые разнообразные задачи обработки информации.
Команду алгоритма, записанную на языке программирования, принято называть оператором.
Программа на Паскале близка по своему виду к описанию алгоритма на Алгоритмическом языке. Сравните алгоритм решения уже знакомой вам задачи — деления простых дробей с соответствующей программой на Паскале:
алг Деление дробей цел a, b, с, d, m, n нач ввод а, b, c, d m:= a x d n:= b x c вывод m, n кон |
Program Division; var a, b, с, d, m, n: integer; begin readln (a,b, c,d) ; m:= a*d; n:= b*c; write (m, n) end. |
#3 Ввод/Вывод данных в Pascal — Read, Readln, Write, Writeln — отличия, примеры
Структура программы на Паскале
Даже не заглядывая в учебник по Паскалю, в этой программе можно все понять (особенно помогает знание английского языка).
Program ;
Раздел описания переменных начинается со слова Var (variables — переменные), за которым идет список имен переменных через запятую. Тип указывается после двоеточия. В стандарте языка Паскаль существуют два числовых типа величин: вещественный и целый. Слово integer обозначает целый тип (является идентификатором целого типа). Вещественный тип обозначается словом real. Например, раздел описания переменных может быть таким:
var a, b : integer; с, d : real;
Идентификаторы переменных составляются из латинских букв и цифр; первым символом обязательно должна быть буква.
Раздел операторов — основная часть программы. Начало и конец раздела операторов программы отмечаются служебными словами begin (начало) и end (конец). В самом конце программы ставится точка:
begin
end.
Операторы ввода, вывода, присваивания
Ввод исходных данных с клавиатуры происходит по оператору read (read — читать) или readln (read line — читать строку):
read( );
или readln( );
При выполнении команды ввода компьютер ожидает действий пользователя. Пользователь набирает на клавиатуре значения переменных в том порядке, в каком они указаны в списке, отделяя их друг от друга пробелами. Одновременно с набором данных на клавиатуре они появляются на экране. В конце нажимается клавиша ( ). Разница в выполнении операторов readln и read состоит в том, что после выполнения ввода по оператору readln экранный курсор перемещается в начало новой строки, а по оператору read этого не происходит.
Программирование на языке Pascal. Урок #2: Операторы ввода и вывода, присвоение значений
Вывод результатов происходит по оператору write (write — писать) или writeln (write line — писать в строку):
write( );
или writeln( );
Результаты выводятся на экран компьютера в порядке их перечисления в списке. Элементами списка вывода могут быть константы, переменные, выражения.
Разница в выполнении операторов writeln и write состоит в том, что после выполнения вывода по оператору writeln экранный курсор перемещается в начало новой строки, а по оператору write этого не происходит.
Арифметический оператор присваивания на Паскале имеет следующий формат:
Арифметическое выражение может содержать числовые константы и переменные, знаки арифметических операций, круглые скобки. Кроме того, в арифметических выражениях могут присутствовать функции.
Знаки основных арифметических операций записываются так:
+ сложение,
— вычитание,
* умножение,
/ деление.
Правила записи арифметических выражений
Запись арифметических выражений на Паскале похожа на обычную математическую запись. В отличие от математики, где часто пропускается знак умножения (например, пишут 2А), в Паскале этот знак пишется обязательно: 2*А. Например, математическое выражение
А 2 + В 2 — 12С
на Паскале записывается так:
А*А + В*В — 12*С
Это же выражение можно записать иначе:
SQR(A) + SQR(B) — 12*С
Здесь использована функция возведения в квадрат — SQR. Аргументы функций всегда пишутся в круглых скобках.
Последовательность выполнения операций определяется по их приоритетам (старшинству). К старшим операциям относятся умножение (*) и деление (/). Операции сложения и вычитания — младшие. В первую очередь выполняются старшие операции. Несколько операций одинакового старшинства, записанные подряд, выполняются в порядке их записи слева направо. Приведенное выше арифметическое выражение будет вычисляться в следующем порядке (порядок вычислений указан цифрами сверху):
Круглые скобки в арифметических выражениях влияют на порядок выполнения операций. Как и в математике, в первую очередь выполняются операции в скобках. Если имеются несколько пар вложенных скобок, то сначала выполняются операции в самых внутренних скобках. Например:
Пунктуация Паскаля
Необходимо строгое соблюдение правописания (синтаксиса) программы. В частности, в Паскале однозначно определено назначение знаков пунктуации.
Точка с запятой (;) ставится в конце заголовка программы, в конце раздела описания переменных, является разделителем операторов. Перед словом end точку с запятой можно не ставить.
Запятая (,) является разделителем элементов во всевозможных списках: списке переменных в разделе описания, списке вводимых и выводимых величин.
Строгий синтаксис в языке программирования необходим потому, что компьютер является формальным исполнителем программы. Если, допустим, разделителем в списке переменных должна быть запятая, то любой другой знак будет восприниматься как ошибка. Если точка с запятой является разделителем операторов, то в качестве оператора компьютер воспринимает всю часть текста программы от одной точки с запятой до другой. Если программист забыл поставить «;» между какими-то двумя операторами, то компьютер будет принимать их за один с неизбежной ошибкой.
В программу на Паскале можно вставлять комментарии. Комментарий — это пояснение к программе, которое записывается в фигурных скобках. В комментариях можно использовать русские буквы. На исполнение программы комментарий никак не влияет.
Заметим, что в Паскале нет различия между строчными и прописными буквами. Например, для Паскаля тождественны следующие варианты записи: begin, Begin, BEGIN, BeGiN. Использование строчных или прописных букв — дело вкуса программиста.
Вопросы и задания
1. Когда появился язык Паскаль и кто его автор?
2. Как записывается заголовок программы на Паскале?
3. Как записывается раздел описания переменных?
4. С какими типами числовых величин работает Паскаль?
5. Как записываются операторы ввода и вывода в Паскале?
6. Что такое оператор присваивания?
7. Как записываются арифметические выражения?
8. По каким правилам определяется порядок выполнения операций в арифметическом выражении?
9. Какая задача решается по следующей программе?
Задания для практической работы:
- Составить программу, которая в текстовом режиме выводит на экран изображение воздушного шара.
- Составить программу, которая в текстовом режиме выводит на экран изображение божьей коровки.
- Составить программу, которая в текстовом режиме выводит на экран изображение бабочки.
- Составить программу, которая в текстовом режиме выводит на экран изображение автомобиля.
- Составить программу, которая в текстовом режиме выводит на экран изображение корабля.
- Составить программу, которая в текстовом режиме выводит на экран изображение яблока.
Рассмотрим теперь операторы ввода данных read и readln. Каждый из этих операторов может содержать список переменных, в которые будут введены с клавиатуры некоторые значения. Переменные, в которые вводятся данные должны быть перечислены через запятую в скобках: read() или readln(). Ввод данных в переменные во время работы программы осуществляется следующим образом: пользователь набирает на клавиатуре необходимые значения и нажимает клавишу Enter. После этого набранные значения будут помещены в переменные перечисленные через запятую в скобках в порядке их перечисления: первое значение – в первую по порядку переменную, второе значение – во вторую и т.д. Поясним сказанное на примере:
readln(x); для ввода данных в переменную x нужно ввести с клавиатуры некоторое значение и нажать Enter.
readln(a,b,c); для ввода данных в переменные a, b и с можно поступить одним из следующих способов: 1) ввести через пробел в одну строку три значения, а потом нажать на клавишу Enter; 2) ввести одно значение, нажать Enter, после этого программа будет ожидать ввода следующего значения, поэтому нужно будет ввести следующее значение (можно вводить сразу несколько значений, но тогда их водят через пробел) и опять нажать Enter. И так до тех пор, пока не будут введены 3 значения.
read(y,z); оператор read не является исключением из описанного выше правила. Здесь также можно сразу ввести 2 значения через пробел или вводить их по одному, нажимая Enter для ввода каждого.
А теперь рассмотрим, в чем же заключается разница между операторами read и readln. Сначала попробуем рассмотреть разницу между данными операторами на примере.
Например, необходимо ввести значения трех переменных a, b, c, а потом значения еще двух переменных d и e. Введем эти значения с помощью оператора read
Когда будет выполнен первый оператор read, мы должны набрать на клавиатуре вводимые значения. Например, сразу наберем 5 чисел через пробел: 10 2 31 4 9. Тогда первый оператор read считает первых три числа 10 2 и 31 в переменные a, b и c, а второй оператор read дочитает оставшиеся два числа 4 и 9 в переменные d и e. Т.е. при вводе данных с использованием оператора read происходит последовательное считывание данных в соответствующие переменные, и если после считывания остались несчитанные данные (как в нашем примере после считывания трех значений 10 2 и 31 оператором read(a,b,c), остались еще два значения 4 и 9), то последующие операторы read просто дочитывают введенные данные на этой же строке.
Теперь рассмотрим как будет работать программа, если в той же ситуации вместо оператора read мы будем использовать оператор readln.
Когда будет выполнен первый оператор readln, мы должны набрать на клавиатуре вводимые значения. Опять сразу наберем 5 чисел через пробел: 10 2 31 4 9. Тогда первый оператор readln считает первых три числа 10 2 и 31 в переменные a, b и c, и после этого перейдет на следующую строку, игнорируя при этом оставшиеся два значения 4 и 9. И данные для второго оператора readln будут ожидаться на следующей строке. Но в самом начале мы оговорили предварительное условие: все 5 чисел набираем сразу в одной строке, а так как первый оператор readln после считывания первых трех значений перешел на новую строку, на которой нет никаких значений, то второй оператор readln будет попросту ожидать, когда пользователь введет оставшиеся два значения на новой строке и нажмет клавишу Enter.
Вывод: разница между операторами read и readln заключается в том, что оператор read считывает данные в переменные, заключенные в скобках, при этом, если в строке данных остались несчитанные данные, то следующий оператор read дочитает эти данные из этой же строки. В отличие от оператора read оператор readln считывает из строки данных ровно столько данных, сколько переменных указано у него в скобках, а после этого, даже если в строке с данными остались несчитанные данные, то следующий оператор readln будет считывать данные с новой строки, если их там нет, то будет ожидать, пока пользователь не введет эти данные.
Замечание. Если вы при программировании на Pascal хотите использовать оператор ввода для задержки работы программы, то корректно программа будет работать при использовании оператора readln.
Пример. Составим программу, которая ожидает ввода двух чисел, а после этого находит сумму этих чисел и выводит ее на экран.
Составим словесный алгоритм решения данной задачи:
1. Вывести на экран подсказку «Введите значение переменной а:».
2. Ввести первое число в переменную a.
3. Вывести на экран подсказку «Введите значение переменной b:».
4. Ввести второе число в переменную b.
5. Вычислить c:=a+b;
6. Вывести c на экран.
7. Задержать работу программы до нажатия на клавишу Enter.
Из рассмотренного алгоритма следует, что в программе будут использоваться три переменные: a, b – переменные, в которые будут введены исходные числа, и c – переменная, в которую будет помещена сумма данных чисел. Перед вводом исходных значений экран желательно очистить. Несмотря на то, что команды очистки экрана нет в описанном выше словесном алгоритме, она подразумевается. В соответствии с рассмотренным выше алгоритмом и пояснениями к нему, мы получим следующую программу:
write(‘Введите значение переменной а: ‘);
write(‘Введите значение переменной b: ‘);
Источник: csaa.ru
Оператор присваивания, ввод и вывод данных
Присваивание — это действие, в результате которого переменная величина получает определенное значение. В программе на Паскале существуют три способа присваивания значения переменной:
1) оператор присваивания;
2) оператор ввода;
3) передача значения через параметры подпрограммы.
Оператор присваивания имеет следующий формат:
Сначала вычисляется выражение, затем полученное значение присваивается переменной. В первом примере приведен арифметический оператор присваивания. Здесь х — переменная вещественного типа. Во втором примере — логический оператор присваивания. Здесь b — переменная типа Boolean.
Типы переменной и выражения должны совпадать. Из этого правила есть одно исключение: переменной вещественного типа можно присваивать значение целочисленного выражения. В таком случае значение целого числа преобразуется к формату с плавающей запятой и присвоится вещественной переменной.
Ввод и вывод данных
Под вводом понимается передача данных с внешнего устройства компьютера в оперативную память. При выводе данные передаются из оперативной памяти на внешнее устройство (рис. 3.11).
Операция ввода называется чтением и выполняется с помощью оператора Read. Вывод называется записью, и для его выполнения используется оператор Write.
К внешним устройствам относятся устройства ввода и вывода (клавиатура, монитор, принтер и др.) и устройства внешней памяти (магнитные и оптические диски, флеш-память и др.). Данные на внешних устройствах организованы в файлы.
Для внешних запоминающих устройств (ВЗУ) файл — это поименованная область памяти этого устройства. В файлы на ВЗУ можно записывать данные по команде Write и можно читать данные из файлов по команде Read. На одном устройстве ВЗУ может храниться множество файлов одновременно. Правила именования файлов на ВЗУ определяются операционной системой. Имена для файлов, создаваемых пользователем, задает сам пользователь.
Устройства ввода с клавиатуры и вывода на экран монитора являются однофайловыми устройствами. Считается, что с клавиатурой связан один системный файл с именем INPUT. Поэтому ввод с клавиатуры равнозначен чтению из файла INPUT. С монитором связан системный файл, который называется OUTPUT. Вывод на экран — это запись данных в файл OUTPUT .
Ввод с клавиатуры производится путем обращения к стандартной процедуре Read в следующем формате:
Чтение происходит из системного файла INPUT, всегда доступного для любой программы. Элементами списка ввода могут быть переменные символьного типа, числовых типов и строковые переменные.
Read(a, b, с, d)
При выполнении этого оператора происходит прерывание исполнения программы, после чего пользователь должен набрать на клавиатуре значения переменных а, Ъ, с, d, отделяя их друг от друга пробелами. При этом вводимые значения высвечиваются на экране. В конце нажимается клавиша Enter. Значения следует вводить в строгом соответствии с синтаксисом Паскаля.
Если в программе имеется несколько подряд идущих операторов Read, то данные для них можно вводить последовательно (на экране отражаются в одной строке) и лишь в конце ввода нужно нажать клавишу Enter.
Здесь слово «ReadLn» означает read line — «читать строку». Нажатие клавиши Enter в процессе ввода вырабатывает признак «конец строки», и данные при выполнении следующего оператора ввода будут отражаться на экране с начала новой строки. Если в предыдущем примере заменить операторы Read на ReadLn:
ReadLn(А, В); ReadLn(С, D) ;
то ввод значений будет происходить из двух строк, отраженных на экране:
18758 34 [Enter]
2.62Е-02 1.54Е+01 [Enter]
Вывод на экран производится по оператору обращения к стандартной процедуре:
Здесь элементами списка вывода могут быть выражения различных типов (в частности, константы и переменные).
Например: Write (‘Сумма А, ‘ + ‘, В, ‘ = ‘, А+В)
Если, например, А = 5 и В = 7, то на экране получим:
При выводе на экран нескольких значений в строку они не отделяются друг от друга пробелами. Программист сам должен позаботиться о таком разделении. В приведенном примере предусмотрен пробел после слова «Сумма».
Второй вариант процедуры вывода на экран:
Write line — «писать строку». Его действие отличается от оператора Write тем, что после вывода последнего в списке значения происходит перевод курсора к началу следующей строки. Оператор WriteLn, записанный без параметров, вызывает перевод строки.
В списке вывода могут присутствовать указатели форматов вывода (форматы). Формат определяет представление выводимого значения на экране. Формат отделяется от соответствующего ему элемента двоеточием. Если указатель формата отсутствует, то машина выводит значение по определенному правилу, предусмотренному по умолчанию.
Линейная программа. Следование — простейшая алгоритмическая структура. Программа, реализующая следование, называется линейной программой. В линейной программе могут присутствовать только операторы присваивания, ввода, вывода и обращения к процедурам. Заметим, что операторы Read и Write являются обращениями к стандартным процедурам Паскаля.
Одним из обязательных условий хорошего стиля программирования является организация диалога между компьютером и пользователем. Такое диалоговое взаимодействие называется интерактивным интерфейсом.
Пример 1. Составим линейную программу, по которой в диалоге будут вводиться два целых числа и вычисляться их произведение.
Тестирование этой программы отразится на экране следующим образом.
Числа 13 и 28 вводятся пользователем с клавиатуры, всё остальное автоматически выводится по программе.
Пример 2. Дано натуральное трехзначное число. Требуется вычислить сумму его цифр. Например, если дано число 325, то в результате должно получиться: 3 + 2 + 5 = 10.
Сначала составим программу, а потом ее прокомментируем.
В этой программе использованы две операции целочисленной арифметики: div — целочисленное деление и mod — остаток от целочисленного деления (см. табл. 3.3). Остаток от деления на 10 (mod) выделяет младшую цифру числа, а целочисленное деление на 10 (div) отбрасывает младшую цифру.
Чтобы лучше понять работу программы, выполним ее трассировку. В курсе 9 класса вам уже приходилось строить трассировочные таблицы. Для программы SumCifr таблица будет выглядеть следующим образом:
Выполнение программы на компьютере приводит к такому же результату.
Заметим, что эту задачу можно решить с помощью всего одного оператора присваивания:
Sum: = Х mod 10 + X div 10 mod 10 + X div 100
Источник: infopedia.su