Правила записи и выполнения операторов WRITELN и WRITE одинаковые с одним исключением, после выполнения оператора WRITELN следующий оператор WRITELN или WRITE печатает свою информацию с начала следующей строки (при использовании WRITELN курсор переводится на новую строку), а после выполнения оператора WRITE продолжает печатать в той же строке.
Пример: WRITE(5) ; WRITE(8); на экране будет 58
WRITELN(5); WRITELN(8); на экране будет 5
Вывод чисел типа real
Переменные, описанные как REAL, ПАСКАЛЬ выводит на экран в экспоненциальном формате ( число 72 будет выведено как 7.20000000000000Е+0001 ).
Чтобы ПАСКАЛЬ выводил вещественные числа типа REAL в обычном виде необходимо записывать WRITELN (ploschad:10:3), а не WRITELN (ploschad).
Число 10 значит, что всё изображение числа не должно занимать больше 10 символов, включая: целую часть, дробную часть, знак числа, и десятичную точку, число 3 означает три знака после десятичной точки. Целая часть числа будет составлять 10 – (3 знака после запятой) – (1 знак числа) – (1 десятичная точка) = 5 знаков. Если целая часть меньше 5 знаков, то пробелы отображаться не будут, если больше 5 знаков, то целая часть числа всё равно будет печататься полностью.
Pascal ABC.NET | Урок 1 | Вывод текста на экран
Порядок составления программы:
- Определить последовательность решения задачи — разработать алгоритм решения
( Программа — это инструкция по её решению, определить формулы её решения).
- Определить количество используемых переменных и придумать имена переменных.
(Имя переменной должно говорить о её смысле. Чтобы и после какого-то времени можно было бы легко разобраться в программе, лучше писать schirina, а не Х ).
- Определить тип используемых переменных и описать их.
- Определить способ и задать исходные данные решения задачи – продумать интерфейс. (Используя оператор присваивания := или оператор ввода READLN).
- Задать действия, которые надо проделать с исходными данными, чтобы получить результат.
- Вывести на экран полученный результат.
( Используя операторы вывода WRITELN или WRITE).
Интерфейс пользователя
Некоторые приёмы, делающие программу более наглядной, простой для понимания и для работы с ней.
Когда программа запускается на выполнение, она делает паузу на операторе ввода и ждёт вводимых данных. Мы видим пустой экран монитора, на котором нет никаких обозначений, что от нас ждёт компьютер или какие данные мы должны ввести.
То есть трудно догадаться, особенно с течением времени после создания программы или использованием её другим пользователем, что компьютер чего-то ждёт. Это не очень удобно, хорошо было бы, если на экране выводилось указание дальнейших действий. Это касается и вывода результатов. На пустом экране выводятся числа, не всегда понятно их значение.
Всё это означает, что у нашей программы неудобный интерфейс пользователя, то есть пользователю, применяющему нашу программу не удобно с ней работать.
Как вывести созданую программу в pascal ABC любую папку
Чтобы интерфейс стал более удобным, необходимо ввести новые элементы.
1) Перед выводом данных, вывести на экран указания к вводу данных, в форме текстовых констант (текст комментария заключённый в апострофы (кавычки)).
WRITELN(‘комментарий – текстовая константа’);
WRITELN (‘введите значение длинны, ширины и высоты’);
На экране во время паузы для ввода данных появится надпись: введите значение длинны, ширины и высоты.
2) Подобно выводятся пояснения к выводимому результату.
WRITELN(‘комментарий ’,переменная, ‘комментарий ’,переменная);
WRITELN (‘площадь фигуры равна’, ploschad, ’объём фигуры равен’ , objm:10:3);
На экране будет выведен результат виде:
площадь фигуры равна 34 объём фигуры равен 18
3)В программе также могут использоваться комментарии взятые в фигурные скобки
Пример: ploschad := dlina *schirina;
Источник: studfile.net
#2 Литералы и Вывод данных на экран (в консоль). Первое знакомство с Write и Writeln. Аргументы процедуры. Паскаль
Литералы — это данные записанные непосредственно в программном коде, мы можем посмотреть на них в конкретной строке программы и сказать, что это число или строка или символ и т.д. И какая именно число, строка или символ т.д. Значение литерала нельзя изменить, так как он сам и есть значение.
Типы литералов
Литералы бывают разных типов и каждый литерал соответствует какому-то типу данных, но о типах данных вообще мы поговорим позднее. Пока же рассмотрим литералы трёх типов:
- Строковые литералы
- Символьные литералы
- Числовые литералы
Строковые литералы
Строковые литералы — это строки текста. Внутри программы, написанной на языке Паскаль, они всегда берутся в одинарные кавычки, например:
‘Два чувства дивно близки нам’
Следует отметить, что строковый литерал всегда размещается на одной строке, и перенос её внутри литерала приведёт к ошибке при запуске программы.
Символьные литералы
То же самое, что и строки, только состоят из одного символа, заключенного в одинарные кавычки.
Цифра взятая в кавычки с двух сторон также трактуется как символ.
Примеры символьных литералов (с помощью комментариев к коду, добавим справа пояснения):
‘a’ ‘f’ // символ буквы ‘Б’ ‘8’ // символ цифры ‘9’ ‘#’ ‘-‘ ‘_’ ‘ ‘ // одиночный пробел тоже является в символьным литералом
Последним в списке примеров символьных литералов приведён пробел, это просто символ пробела окружённый одинарными кавычками
Числовые литералы
Числовые литералы можно разделить на:
-
Целочисленные — это любые целые числа — положительные, например:
1255
или отрицательными, например:
-53456
55.678
-12656.3
Далее рассмотрим использование литералов для вывода данных.
Вывод данных на экран с помощью write() и writeln()
В этом разделе мы с вами начнём писать первые работающие строки программного кода на языке Паскаль.
Первая программа — Привет Мир!
Следуя уже довольно старой и всё такой же доброй традиции, выполним нашу первую программу, поприветствовав мир:
begin writeln(‘Привет Мир!’); // или: writeln(‘Privet Mir!’); end.
Запустите этот пример (не забывая о том для чего нужны и что значат комментарии и операторные скобки). Вывелось ли приветствие?
Если окно в котором оно выводится слишком быстро закрывается, используйте приём для удержания консоли (просто запомните его, позже мы объясним как это работает):
begin writeln(‘Привет Мир!’); // или: writeln(‘Privet Mir!’); readln(); readln(); end.
Если строка выводится в виде абракадабры, то просто перепишите строковый литерал английскими буквами, как это указано в комментарии к строке вывода приветствия (просто передаём звуки русского языка латинскими символами, переводить фразу на английский не требуется).
Далее в листингах (фрагментах кода), мы будем опускать (не писать каждый раз) операторные скобки, подразумевая, что уже пишем внутри тела программы. Но для запуска этих фрагментов в вашей среде разработки, они должны быть окружены ими.
Обязательно запускайте на своём компьютере все примеры, которые будут встречаться далее.
write() и writeln() — стандартные процедуры вывода данных
Процедура — это подпрограмма, которую вызывает основная программа, чтобы подпрограмма совершила какие-то действия необходимые основной программе.
Write() и Writeln() — две стандартные (то есть разработанные создателями языка) процедуры в Паскаль, которые позволяют выводить на экран переданную в них информацию, или говорят «переданные им аргументы».
Аргументы — это значения, которые передаются в процедуру, будучи перечисленными в коде программы внутри скобок после имени процедуры, например:
writeln(‘a’, 123, ‘7’); // вызов процедуры writeln с тремя аргументами
Даст нам в консоли текст:
a1237
Обратите внимание, что после вызова любой процедуры обычно ставится точка с запятой.
Чтобы показать, что какое-то слово является именем процедуры в обычном тексте (учебника, например) и коде программы после имени процедуры всегда открывают и закрывают операторные скобки вне зависимости от того, перечисляются ли внутри этих скобок какие-то аргументы или нет.
Вызов процедуры с указанным именем
Чтобы вызвать какую-то процедуру необходимо знать:
- её имя
- число её аргументов и их тип
Например ,пусть у нас есть выдуманная процедура с именем, скажем, $test()$ и мы знаем, что она принимает на вход два аргумента: один целочисленный аргумент и один литерал, тогда вызвать её можно с помощью такой строки в теле программы:
test(2, ‘c’);
test(2, ‘2’);
Или даже передав в качестве первого аргумента переменную нужного типа:
var a: integer; begin a := 5; test(a, ‘#’);
write() write(22.23); // выводим вещественное число
или символов:
write(‘2’); writeln(‘K’);
Или строк (строковый литералов):
write(‘Земля вертится’); writeln(‘ Спички заканчиваются’);
write(‘Земля вертится’, ‘ Спички заканчиваются’); writeln(‘Земля вертится’, ‘ Спички ‘, ‘заканчиваются’);
Отличие:
- write() просто выводит на экран переданные ему аргументы.
- writeln() же выводит переданные аргументы и переводит курсор на новую строку. То есть любой следующий вызов процедуры вывода данных начнёт свой вывод уже со следующей строки.
Таким образом сравним работу фрагментов кода:
write(‘Привет’); write(‘Мир’);
writeln(‘Привет’); write(‘Мир’);
В чем разница между результатами, если запустить их? Обратите внимание в каком случае произошёл перенос строки, а в каком нет.
Пустой writeln() и пустой write() для перевода строки
Следует отметить, что по данному выше описанию работы writeln() и write() можно сказать, что вызванный без аргументов write():
write(); // ничего не делает, выводить нечего
не делает вообще ничего, а вот пустой writeln() позволяет перенести курсор на новую строку:
writeln(); // выводить нечего, но ещё нужно перенести курсор
(заметьте, что в последнем примере кода использовались и однострочные и многострочные комментарии)
Вывод литералов разного типа:
write(5); // вывод числового литерала write(5.5); // вывод числового вещественного литерала write(‘5’); // вывод символа пятёрки write(‘5rwer’); // вывод строки (строкового литерала)
Примеры вывода одного и того же разными способами
Паскаль не зря называют языком программирования, как и обычном человеческом языке «сказать» тут можно одно и то же разными способами. Поэтому очень важно понимать, всё что написано в примерах, которые встречаются в этом тексте. Если вам что-то неясно — задавайте вопросы.
Вывод одной строки — разными способами
Пусть у нас есть задача вывести в консоль такой текст:
b = 5, тогда b — 2 = три
Итак, рассмотрим разные способы:
-
Проще всего напечатать этот текст в виде строкового литерала:
writeln(‘b = 5, тогда b — 2 = три’);
writeln(‘b = 5, то’, ‘гд’, ‘а b — 2’, ‘ = три’); // четыре аргумента
write(‘b = 5, то’, ‘гд’, ‘а b — 2’, ‘ = три’);
write(‘b = 5, тогда’); // выводим начало write(‘ b — 2 = три’); // выводим оставшуюся часть
write(‘b = 5, тогда’); // выводим начало write(‘ b — 2 = т’); write(‘р’); // к уже выведенному добавляем букву эр write(‘и’);
write(‘b = ‘, 5, ‘, тогда b -‘, 2, ‘ = три’);
ПРИМЕЧАНИЕ: Надо понимать, что множественные вызовы write() и передача всё тех же аргументов через запятую — это одно и то же, а вот множественный вызов writeln() и передача аргументов в один writeln() через запятую — не одно и то же, так как после каждого вызова writeln происходит перенос курсора на новую строку.
Вывод многострочного текста
Если требуется вывести многострочный текст, то одним или несколькими write() не обойтись, ведь нужно будет как-то переносить курсор на новую строку, а write этого делать не умеет, поэтому нам придётся использовать в том числе и writeln().
Пусть нам требуется вывести в косоль такого аски-арт робота:
По сути это текст из нескольких строк, где встречаются пробелы другие символы:
Разные способы вывода:
-
В отличии от предыдущих примеров тут уже не обойтись передачей всего текста в один строковый литерал, так как этот робот многострочный, поэтому чтобы вывести его построчно будем использовать серию writeln():
writeln(‘ ; ‘); writeln(‘ [«]’); writeln(‘ /[_]’); writeln(‘ ] [‘);
writeln(‘ ; ‘); writeln(‘ [«]’); writeln(‘ /[_]’); write(‘ ] [‘); // печатаем без переноса
writeln(‘ ; ‘); // вывод и перенос строки writeln(‘ [«]’); // вывод и перенос строки write(‘ /[_]’); // просто вывод строки writeln(); // просто перенос строки write(‘ ] [‘); // печатаем без переноса
Видео-пояснение
К этому уроку есть видео-пояснения:
- Виды литералов: стороковые, символьные, числовые. Writeln() — начало работы: https://youtu.be/tZYsinEC_Q0
- Write, Writeln, вывод литералов, аргументы процедуры, отличия: https://youtu.be/dcaXkgx36D0
- Урок для детей: Литералы и вывод в консоль, примеры и пояснения
Задачи для самостоятельного решения
-
Ответьте на вопросы (письменно):
- Литералы какого типа вы знаете? Подсказка: для лучшего понимания см. видео-разбор ответа на этот вопрос.
- Чем строковые литералы отличаются от символьных? Подсказка: для лучшего понимания см. видео-разбор ответа на этот вопрос.
- Что такое процедура? Что такое аргументы процедуры? Подсказка: для лучшего понимания см. видео-разбор ответа на этот вопрос.
- Пусть у вас есть абстрактная процедура с именем $abc()$, запишите её вызов в теле программы, передав литералы соответствующего типа (для каждого варианта), если она принимает на вход :
- четыре аргумента — первые два целочисленные, и третий символьный и четвертый строковый.
- два разных аргумента символьного типа
- пять аргуементов — первые два строковое, один числовой и два символьных
- три аргумента: два строковых и один числовой
write(5, 6, 8);
и вызовом этой процедуры несколько раз с каждым из этих аргументов, например:
write(5); write(6); write(8);
ПРИМЕЧАНИЕ: когда будете решать следующие ниже задачи, можете привести все решения в теле одной программы, просто закомментировав то. что уже работает, ваш код будет выглядеть как-то так:
begin // write(7); // вывод числового литерала (работает, закомментируем) write(‘9’); // вывод символьного литерала end.
Когда же будете показывать работу программы расскомментируйте те строки, работу которых хотите продемонстрировать. Например показываем работу первой строчки тела программы (в предыдущем же примере мы показывали работу второй строки):
begin write(7); // вывод числового литерала // write(‘9’); // вывод символьного литерала end.
Далее решите задачи запуская код программы, в теле которого:
b = 5, тогда b — 2 = три
- С помощью 1 аргумента — литерала строкового типа
- С помощью 2-х аргументов-литералов любого типа
- С помощью вывода всей строки, кроме последнего символа, потом уже этот последний символ
- Так, чтобы одна цифра была числовым литералом, вторая символом, а всё остальное чем угодно
ПРИМЕЧАНИЕ: После выполнения всех четырёх пунктов на экране (в консоли) вы должны получить 4 строки:
b = 5, тогда b — 2 = три b = 5, тогда b — 2 = три b = 5, тогда b — 2 = три b = 5, тогда b — 2 = три
Источник: fkn.ktu10.com
Операторы ввода/вывода в pascal
Начнем знакомство с оператора вывода. Данный оператор очень часто встречается в паскалевских программах. Оператор вывода существует в двух вариантах: write() и writeln().
Отличия одного оператора от другого заключается в том, что оператор write выводит данные и курсор оставляет после этих данных, (на той же строке, что и данные), а оператор writeln выводит данные, а курсор переносит в начало следующей строки.
Пример: рассмотрим программу, которая просто выводит на экран приветствие. Данную программу рассмотрим в двух вариантах: 1 вариант – вывод приветствия с использованием оператора write и 2 вариант – вывод приветствия с использованием оператора writeln.
1 вариантProgram Pr1;Uses Crt;BeginClrScr; Write(‘Привет’); Readln; End. | 2 вариантProgram Pr2;Uses Crt;BeginClrScr; Writeln(‘Привет’); Readln; End. |
Результат работы 1 – го варианта | Результат работы 2 – го варианта |
Следует отметить, что при написании программы был использован оператор ClrScr. Данный оператор очищает экран. Но чтобы использовать в программе данный оператор нужно указать в разделе Uses модуль Crt (данный модуль содержит в себе оператор ClrScr). Кроме оператора ClrScr в модуле Crt содержится множество других операторов. Среди них операторы задания цвета выводимых символов и цвета фона, на котором эти символы выводятся.
TextColor(Color : Byte); — устанавливает цвет выводимых символов. Цвет задается параметром Color. Color — целочисленное выражение в диапазоне 0 .. 15, соответствующий одной из констант цвета текстового режима, определенных в модуле Crt.
Константа | Числовое значение | Цвет |
Black | Черный | |
Blue | Синий | |
Green | Зелёный | |
Cyan | Циан | |
Red | Красный | |
Magenta | Фиолетовый | |
Brown | Коричневый | |
LightGray | Светло-серый | |
DarkGray | Темно-серый | |
LightBlue | Светло-синий | |
LightGreen | Светло-зеленый | |
LightCyan | Светло-циан | |
LightRed | Светло-красный | |
LightMagenta | Светло-фиолетовый | |
Yellow | Желтый | |
White | Белый |
TextBackground(Color : Byte); — устанавливает цвет фона выводимых символов. Цвет фона задается параметром Color. Все символы, выводимые впоследствии, будут иметь цвет фона = Color.
Следует отметить, что в Pascal существует система предустановок используемых при определении цветов текста и фона. Это означает, что если вы хотите вывести приветствие зеленым цветом, то сначала нужно написать оператор TextColor(2); который устанавливает зеленый цвет текста, а только потом выводить приветствие оператором Write(‘Привет’); или Writeln(‘Привет’);. После установки зеленого цвета символов оператором TextColor(2); вся выводимая информация будет выводиться зеленым цветом до тех пор, пока оператором TextColor не будет установлен другой цвет. Точно также работает и оператор TextBackground.
При выводе данных в Pascal может быть использован и оператор GoToXY(X, Y : Integer);. Данный оператор перемещает курсор в заданную позицию экрана с координатами (X, Y). В текстовом режиме на экране помещается 80 символов по горизонтали и 25 символов по вертикали. Начало отсчета находится в левом верхнем углу экрана.
Если сравнить ширину и высоту выводимого символа, то можно заменить, что ширина в 2 раза меньше высоты.
Например, чтобы вывести приветствие зеленого цвета на синем фоне в центре экрана, нужно написать следующую программу:
Для демонстрации использования операторов TextBackground, TextColor, GoToXY и Write мы составим простую программу, которая выводит на экран изображение домика.
Сначала заготовим на листе бумаги сетку (удобно склеить 4 двойных листа бумаги в клеточку и разлинеить их так, чтобы получилась сетка, изображенная ниже):
Далее на получившейся сетке разноцветными карандашами раскрасим клеточки так, чтобы из цветных прямоугольников как из мозаики получилась нужная нам картинка.
После того, как картинка создана на бумаге, мы легко можем определить координаты клеток, и цвет, которым эти клетки нужно закрасить. Для установки нужного цвета будем использовать оператор TextBackGround, а для перехода в точку с нужными координатами – оператор GoToXY. Для вывода прямоугольника нужно вывести пробел. Для вывода нескольких идущих подряд по горизонтали прямоугольников – выведем столько пробелов, сколько прямоугольников. Составим данную программу.
весь экран станет голубого цвета. Это будет небо.>
Задания для практической работы:
- Составить программу, которая в текстовом режиме выводит на экран изображение воздушного шара.
- Составить программу, которая в текстовом режиме выводит на экран изображение божьей коровки.
- Составить программу, которая в текстовом режиме выводит на экран изображение бабочки.
- Составить программу, которая в текстовом режиме выводит на экран изображение автомобиля.
- Составить программу, которая в текстовом режиме выводит на экран изображение корабля.
- Составить программу, которая в текстовом режиме выводит на экран изображение яблока.
Рассмотрим теперь операторы ввода данных 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