в

Разница между write и writeLn

Writing data[edit | edit source]

Let’s look at a simple program:

programwriteDemo(output);
var
xinteger;
begin
x:=10;
writeLn(output,x20);
end.

Copy the program and see what it does.

Assignmentedit | edit source

First, we will learn a new statement, the assignment.
Colon equals () is read as “becomes”.
In the line the variable’s value becomes ten.
On the left hand side you write a variable name.
On the right hand side you put a value.
The value has to be valid for the variable’s data type.
For instance, you could not assign to the variable , because it is not a valid , i. e. the data type has.

Converting outputedit | edit source

The power of / is that – for text files – it converts the parameters into a human-readable form.
On modern computers the value ten is stored in a particular binary form.
is a visual representation of the bits set () and unset () for storing “ten”.
Yet, despite the binary storage the characters you see on the screen are .
This conversion, from zeroes and ones into a human-readable representation, the character sequence “10”, is done automatically.

If the destination of / is a text file, all parameters are converted into a human-readable form provided such conversion is necessary and makes sense.

Formatting outputedit | edit source

Furthermore, after the parameter comes .
As you might have noticed, when you run the program the value ten is printed right-aligned making the  in  appear at the 20th column (position from the left margin).

The is a format specifier.
It ensures that the given parameter has a minimum width of that many characters and it may fill missing “width” with spaces to left.

Format specifiers in a / call can only be specified where a human-readable representation is necessary, in other words if the destination is a text file.

Сравнение

Главное отличие readLn от read заключается в том, что первая процедура предполагает осуществление программой перехода к строке файла, следующей за той, в которой прописаны инструкции. Вторая процедура позволяет программе считать данные, размещенные в следующей строке, только с разрешения пользователя – если он нажмет Enter.

На практике использование инструкции readLn чаще всего осуществляется в целях обеспечения задержки между результатом выполнения приложения и переходом к следующей инструкции. Соответствующая задержка длится до тех пор, пока пользователь не нажмет Enter.

Определив,в чем разница между readLn и read в языке Pascal, зафиксируем выводы в таблице.

Read (процедура)

Для типизированных файлов, считывает компонент файла в переменную. – Для текстовых файлов, считывает одно или большее количество значений в одну или большее количество переменных

Отличия в синтаксисе и применении

Главное отличие между и заключается в том, что выводит данные на экран без перехода на новую строку, в то время как выводит данные и переходит на новую строку.

С помощью можно выводить данные без переноса строки. Например:

В этом случае результат будет выглядеть так:

Привет, мир! Как дела?

С другой стороны, автоматически переносит курсор на новую строку после вывода данных. Например:

В этом случае результат будет выглядеть так:

  • Привет, мир!
  • Как дела?

Таким образом, выбор между и зависит от того, требуется ли перевод строки после вывода данных. Если перевод строки важен, то следует использовать . В противном случае, если необходимо вывести данные на экран без переноса строки, используйте .

Формат вывода без символа новой строки

Функция позволяет последовательно выводить данные различных типов (целые числа, дробные числа, строки и т.д.) в консоль. При этом выводимые данные отображаются в одной строке, без перехода на новую строку. Пример использования функции :

  • — выводит число 10 в консоль;
  • — выводит строку ‘Hello, world!’ в консоль;
  • — выводит число 3.14 в консоль.

Функция , в отличие от , автоматически добавляет символ новой строки в конце выводимой строки. Таким образом, каждый вызов этой функции приводит к переходу на новую строку в консоли. Пример использования функции :

  • — выводит число 10 в консоль и переходит на новую строку;
  • — выводит строку ‘Hello, world!’ в консоль и переходит на новую строку;
  • — выводит число 3.14 в консоль и переходит на новую строку.

Таким образом, функции и в Паскале отличаются только наличием символа новой строки в конце выводимой строки. При необходимости выводить данные без перевода строки, следует использовать функцию , а для вывода с переводом строки — .

Использование различных типов данных

В языке программирования Паскаль существуют различные типы данных, которые можно использовать при работе с операторами и . и используются для вывода информации на экран.

Основное отличие между и заключается в том, что автоматически добавляет символ новой строки после вывода информации, а не делает этого.

При использовании различных типов данных, таких как целые числа, вещественные числа, символы и строки, необходимо учитывать особенности работы с ними при использовании и .

Тип данныхОписаниеПример использования
Целые числаПредставляются без дробной части
Вещественные числаПредставляются с дробной частью
СимволыПредставляются в одинарных кавычках
СтрокиПредставляются в двойных кавычках

Таким образом, выбор между и зависит от того, нужно ли добавлять символ новой строки после вывода информации. Также необходимо учитывать тип данных, который используется при вызове этих операторов.

Применение ввода и вывода в файлах

Оператор writeln предназначен для вывода информации в файл с переводом строки после каждого вызова. То есть, каждое новое значение будет выводиться на новой строке файла. Символ перевода строки добавляется автоматически, после вызова оператора writeln. Это может быть полезно при выводе структурированных данных, когда каждая запись должна находиться на отдельной строке.

Оператор write также предназначен для вывода информации в файл, но без перевода строки. Он позволяет последовательно выводить значения без промежутков между ними. Если требуется выводить данные в одну строку, то нужно использовать оператор write.

Операторы writeln и write в Паскале несут схожую функциональность, но отличаются лишь наличием или отсутствием перевода строки. Выбор между ними зависит от требований конкретной задачи

Также стоит обратить внимание на то, что данные можно выводить как в консоль, так и в файл, в зависимости от того, какой поток будет использоваться

Ввод данных с клавиатуры

Ввод данных в языке программирования Паскаль обеспечивается процедурами и . Ввод данных осуществляется либо с клавиатуры, либо из файла. Здесь рассматривается только ввод с клавиатуры.

Когда данные вводятся, то они помещаются в ячейки памяти, доступ к которым обеспечивается с помощью механизма переменных. Поэтому, когда в программе на Pascal используется процедура или , то в качестве фактического параметра (аргумента) ей передается имя переменной, которая будет связана с вводимыми данными. Потом эти данные можно будет использовать в программе или просто вывести на экран.

В процедуры ввода можно передавать не один фактический параметр, а множество.

При вводе данных их разделяют пробелом, табуляцией или переходом на новую строку (Enter). Данные символьного типа не разделяются или разделяются переходом на новую строку.

Существуют особенности ввода данных с помощью операторов и . Если используются подряд несколько , то вводимые данные можно разделять всеми допустимыми способами. При использовании нескольких вызовов каждый последующий срабатывает только после нажатия Enter. Программа ниже иллюстрирует это. Комментарии поясняют последовательность возможных действий при вводе данных.

Interface[edit | edit source]

In its heydays Pascal was so smart and defined a minimal common, yet convenient interface to interact with I/O.
Despite various standardization efforts I/O operations differ among every single OS, yet – as part of the language – Pascal defines a set of operations to be present, regardless of the utilized compiler or OS.

Special filesedit | edit source

In the it was already mentioned that and are special program parameters.
If you list them in the program parameter list, you can use these identifiers to write and read from the terminal, the CLI you are using.

Text filesedit | edit source

In fact, and are variables.
Their data type is .
We call a variable that has the data type a text file.

The data of a text file are composed of lines.
A line is a (possibly empty) sequence of characters (e. g. letters, digits, spaces or punctuation) until and including a terminating “newline character”.

Filesedit | edit source

A file – in general – has the following properties:

  • It can be associated with an external entity. External means “outside” of your program. A suitable entity can be, for instance, your console window, a device such as your keyboard, or a file that resides in your file system.
  • If a file is associated with an external entity, it is considered bound.
  • A file has a mode. Every file can be in generation or inspection mode, none or both. If a file is in generation and inspection mode at the same time, this can also be called update mode.
  • Every file has a buffer. This buffer is a temporary storage for writing or reading data, so virtually another variable. This buffer variable exists due to reasons how I/O on computers works.

All this information is implicitly available to you, you do not need to take care of it.
You can query and alter some information in predefined ways.

All you have to keep in mind in order to successfully use files is that a file has a mode.
The text files and are, once they are listed in the program parameter list, in inspection and generation mode respectively.
You can only data from files that are inspection mode.
And it is only possible to data to files that are generation mode.

Note, due to their special nature the mode of and cannot be changed.

Routinesedit | edit source

Pascal defines the following routines to read and write to files:

  • ,
  • ,
  • /, and

The routines and can only be used in conjunction with text files, whereas all other routines work with any kind of file.
In the following sections we will focus on and .
These routines build upon the “low-level” and .
In the chapter “Files” we will take a look at them, though.

Behavior

Signature

as well as share almost the same identical formal signature.
However a formal signature is omitted here, since you can not state their signatures in Pascal.
Therefore a description follows:

As an optional first parameter a variable can be specified where data are written to.
is additionally capable of writing to a typed variable ().
If no destination is specified, is assumed.

Thereafter any number of variables can be specified, but in the case of at least one has to be present.
They have to be , , , , or any other data type that can be rendered as (a sequence of) character(s) via implicit typecasts (operator overloading).
In the case of typed files as destination, only variables of the file’s record type can be specified.

If the destination is a file, each data variable identifier may be followed by a colon and a non-negative integer value.
This value specifies the minimum width in characters the representation of the respective variable will acquire.
It will be padded with space characters, so it becomes right-justified.
In and this value specifies the exact width of , and values, thus will emit nothing.

Floating-point variables may have another colon and non-negative integer value followed, thus two in total, that will specify the number of decimal places after the decimal-period.
Also, by the specifying the second format specifier, the default scientific notation is turned off.

Execution

Calling / will write the variables’ values to the destination, and if a variable is the destination, possibly convert them into a representation suitable for humans before doing so.

If the destination file is not open, the run-time error 103 “File not open” will stop program execution.
This RTE may be converted to an exception if the unit is included (via a -clause).
However, if the destination file is , no error may be raised at all.
You simply will not see any output emitted by / calls.

Representation

If the destination is a file, all ordinal type arguments are converted to human-readable representation.
Strings and characters are already considered to be human-readable regardless of their value, e. g. control characters will be written directly without conversion.

Decimal representations of floating-point values may be rounded.
All numerical types may be preceded by a negative sign, but a positive sign is never printed.

will try to convert the value of enumerated types into their canonical names.
If such does not exist the run-time error 107 “invalid enumeration” occurs.

program writeDemo(input, output, stderr);

type
	direction = (left, straightOn, right);

var
	heading direction;
begin
	// 15 characters in total (including period)
	//  6 places after period
	//    rounded
	writeLn(pi()156);
	
	heading := straightOn;
	// heading as enumeration will be left-aligned
	// but still use 15 characters
	writeLn(heading15, '.');
end.

  Note: The default style of formatting numbers may differ depending on whether is chosen.

Difference between and

will automatically write a line feed after all other data variables (if any).
This line feed is the one suitable for the platform the program runs on.
Remember, the notion of “line” applies only for files.

Алфавит и словарь Паскаля

Основой любого языка программирования является алфавит.

Алфавит – набор допустимых символов, которые используются для написания программы.

Алфавит Паскаля включает:

  • Прописные буквы латиницы (A, B, C, …, X, Y, Z);
  • Строчные буквы латиницы (a, b, c, …, x, y, z);
  • Арабские цифры (0, 1, 2, …, 7, 8, 9);
  • Знаки арифметических и логических операций («плюс», «минус», «умножить», «разделить», «больше», «меньше», «равно» и др.)
  • Ограничители и разделители (апостроф, двоеточие, точка с запятой, круглые, квадратные и фигурные скобки, точка, запятая);
  • Специальные символы («амперсанд», «процент», «решетка», знак подчеркивания и др.).

Некоторые символы, записанные вместе, образуют составные символы, например:

  • := (операция присваивания);
  • >= и <= (≥ и ≤ соответственно);
  • // (начало комментария, который заканчивается после перехода на новую строку).

Из символов алфавита формируются идентификаторы – аналоги слов естественного языка, но построенные по определенным правилам:

  • Идентификатор может состоять из цифр, буквы латинского алфавита и символа подчеркивания.
  • Идентификатор не может начинаться с цифры.
  • Отсутствует различие между прописными и строчными буквами («PROGRAM», «Program» и «program» — один и тот же идентификатор).
  • Максимальное допустимое число символов в идентификаторах зависит от транслятора.

Идентификаторы нужны, чтобы давать имена переменным, константам, функциям и процедурам.

Некоторые идентификаторы в языке Паскаль определены заранее и имеют особое значение. Такие идентификаторы называют служебными словами, использовать их в качестве имен переменных нельзя.

Наиболее часто используемые служебные слова Паскаля, представлены в таблице.

Типы литералов

Литералы бывают разных типов и каждый литерал соответствует какому-то типу данных, но о типах данных вообще мы поговорим позднее. Пока же рассмотрим литералы трёх типов:

  1. Строковые литералы
  2. Символьные литералы
  3. Числовые литералы

Строковые литералы

Строковые литералы — это строки текста. Внутри программы, написанной на языке Паскаль, они всегда берутся в одинарные кавычки, например:

'Два чувства дивно близки нам'

Следует отметить, что строковый литерал всегда размещается на одной строке, и перенос её внутри литерала приведёт к ошибке при запуске программы.

Символьные литералы

То же самое, что и строки, только состоят из одного символа, заключенного в одинарные кавычки.
Цифра взятая в кавычки с двух сторон также трактуется как символ.
Примеры символьных литералов (с помощью комментариев к коду, добавим справа пояснения):

'a'
'f'  // символ буквы

'Б'

'8'  // символ цифры

'9'

'#'

'-'

'_'

' ' // одиночный пробел тоже является в символьным литералом

Последним в списке примеров символьных литералов приведён пробел, это просто символ пробела окружённый одинарными кавычками

Числовые литералы

Числовые литералы можно разделить на:

  1. Целочисленные — это любые целые числа — положительные, например:

    1255

    или отрицательными, например:

    -53456
  2. Литералы вещественных чисел, которые тоже могут быть положительными или отрицательными, причём в качестве разделителя дробной и целой части используется точка. Например:

    55.678

    или:

    -12656.3

Далее рассмотрим использование литералов для вывода данных.

Hello, World на Pascal

Теперь вы готовы написать первую программу.

ProgramHello_World;{фигурныекавычкипозволяютвставитькомментарийккоду}BeginWrite('Hello, World!');End.

Ну, тут все понятно. Чтобы разнообразить решение предлагаю решить несколько задачек этого типа.

Задача 1.  Требуется запросить имя пользователя, а затем вывести «Привет, <имя>!» Для решения этой задачи нам потребуется строковой тип данных — string.

ProgramHello_boy_girl;{фигурныекавычкипозволяютвставитькомментарийккоду}var namestring;{объявляем name –этоноваяпеременная}BeginWrite(‘Введите свое имя: ‘);{таккакмыиспользуем write,курсорбудетмигатьпоследвоеточия}Read(name);{Считываемвсе,чтоввелпользователь}Write(‘Привет,’,name,’!’);{Обратитевнимание!ПеременнаяотделяетсяоткавычекЗАПЯТЫМИ!}End. Задача 2

 Требуется узнать сколько лет пользователю, а затем вывести  «Вам   лет». Очевидно, что для решения этой задачи нам потребуется целочисленный тип данных — Integer.

Задача 2.  Требуется узнать сколько лет пользователю, а затем вывести  «Вам  <возраст> лет». Очевидно, что для решения этой задачи нам потребуется целочисленный тип данных — Integer.

ProgramHow_old_are_you;var years integer;{объявляем years --этоноваяпеременная}BeginWriteln('Сколько вам лет?');{таккакмыиспользуем writeln,кареткабудетмигатьподнадписью}Read(years);{Считываемвсе,чтоввелпользователь}Write('Вам ',years,' лет.');End.

Ну, вот и все! Все, что я хотел рассказать вам в сегодняшнем уроке. Вы узнали, что такое величина в Pascal, и выучили основные типы. А также научились создавать простейшие линейные программы. Более подробно про типы в PascalABC.Net мы поговорим в следующих уроках. Кстати, про PascalABC.Net. Понятно, что писать программы на листочках бесполезно, и вы должны тренироваться на компьютере. По этой ссылке скачайте последнюю версиюPascalABC.Net для Windows.Вот, как выглядит интерфейс программы при запуске.

P.S. Давайте выделим две особенности Pascal:

  1. Паскаль НЕ чувствителен к регистру, то есть  и program, и Program, и PrOgRaM для него ничем не отличаются. А потому с самого начала привыкайте писать в нижнем регистре, чтобы при переходе на другой язык программирования не испытывать никаких проблем с этим;
  2. Имя программы в Pascal не играет никакого значения, оно не несет в себе никаких полезных функций. Если хотите вы можете просто не писать ЕГО!

Замечания

Для строковых переменных:

Read считывает все символы до (но не включая) следующего маркера конца строки или пока Eof

(F) станет равным True. Read не переходит к следующей строке после чтения. Если полученная в результате строка длиннее, чем максимальная длина строковой переменной, то она усекается. После первого Read, каждые последующие вызовы Read будут видеть маркер конца строки и возвращать строку нулевой длины.

Используйте несколько обращений к ReadLn, чтобы считать несколько строковых значений.

Когда включена опция Extended Syntax
, процедура Read может считывать строки с нулевым окончанием
в нуль-основанные массивы символов.

Для переменных типа Integer

или Real

Read будет пропускать любые пробелы, метки табуляции или маркеры конца строки, предшествующие числовой строке. Если числовая строка не соответствует ожидаемому формату, происходит ошибка ввода/вывода, иначе переменной присваивается полученное значение. Следующий Read начнется с пробела, знака табуляции или маркера конца строки, которые завершали числовую строку.

Reading data[edit | edit source]

Look at this program:

programiceCream(input,output);
var
responsechar;
begin
writeLn('Do you like ice cream?');
writeLn('Type “y” for “yes” (“Yummy!”) and “n” for “no”.');
writeLn('Confirm your selection by hitting Enter.');

readLn(input,response);

ifresponse='y'then
begin
writeLn('Awesome!');
end;
end.

Requirementsedit | edit source

All parameters given to / have to be variables.
The first parameter, the source, has to be a file variable which is currently in inspection mode.
We ensure that by putting into the program parameter list.
If the source parameter is , you are allowed to omit it, thus is equivalent to .

If the source is a text file, you can only read values for variables having the data type , , , or “string types”. Other variables not compatible to these types cannot be read from a text file. (The term “compatible” will be explained later.)

Branchingedit | edit source

A new language construct which we will cover in detail in the next chapter is the –branch.
The code after that is surrounded by and is only executed if equals to the character value .
Otherwise, we are polite and do not express our strong disagreement.

Первая программа на Pascal

Структура программы в Паскаль

Заголовок

Program <  имя переменной >;

Объявление переменных и констант

const <Символическое имя> = <выражение>;var <Однотипные переменные> : <тип>;

Раздел операторов

Begin<оператор 1>;<оператор 2>;…end.

Ввод и вывод в Паскаль

У вас, наверняка, возникает вопрос: «Как вводить значения переменных с клавиатуры?», а также: «Как вывести на экран полученный результат?». Для этого используются четыре специальных оператора:

И для вывода:

  • write(Текст в  »)
  • writeln(Текст в »)

«В чем разница между read и readln, write и writeln?»: снова озадачитесь вы. Ответ прост. Если добавляете «ln» (что расшифровывается, как  Line), то курсор переносится на следующую строку.

Типы данных в Паскале

Данные в программах на языке Паскаль описываются простыми или составными типами данных, которые указывают транслятору, как интерпретировать эти данные и сколько места в памяти компьютера нужно выделить для их хранения.

К простым типам относятся: целочисленный, вещественный, символьный, строковый и логический типы.

Когда число относится к вещественному (реальному) типу данных, его целая и дробная части разделяются точкой (ни в коем случае не запятой), стоит обращать внимание на то, что до и после точки должна быть минимум одна цифра. Также нельзя ставить пробел в середине числа

Оператор присваивания и оператор Readln в Pascal

Оператор присваивания

Обычно программе для решения какой-либо задачи требуются данные. Данные хранятся в переменных, которые имеют свои идентификаторы (имена), например, идентификаторы или , или более длинные идентификаторы переменных — , и т.п.

Важно: Идентификаторы состоят из буквы, за которой могут следовать буквы, цифры или символ подчеркивания

Чтобы задать переменной какое-либо значение используется оператор присваивания. Оператор присваивания в Паскале обозначается как , выполняет правую часть выражения и присваивает результат переменной, расположенной в левой части выражения:

Пример:

1
2
a=2;
writeln('квадрат ',a,'=',a*a);

1 способ:

begin
  var ninteger; // объявление переменной
  n=1; // присваивание

2 method (канонический):

begin
  var n=1; // объявление переменной и присваивание значения  => инициализация

Если программный код достаточно большой, то такой вариант инициализации переменных весьма неудобен. В Pascalabc.net переменные могут описываться внутри тела программы — между и и инициализироваться при описании.
В этом состоит принцип локальности: переменная описывается непосредственно перед началом своего использования.

Ввод данных

Но часто в программе необходимо запрашивать данные (т.е. вводить значения переменных с клавиатуры, а затем использовать эти значения для решения поставленной задачи). Для ввода данных используется оператор ввода или , в Паскале разницы между ними при вводе практически нету (на данном этапе знаний).

Пример использования readln в Pascal:

1
2
3
Writeln('Введите число');
readln(a);
writeln('квадрат ',a,'=',a*a);

то же самое, что и read:Пример использования read в Pascal:

1
2
3
Writeln('Введите число');
read(a);
writeln('квадрат ',a,'=',a*a);

Если запрашиваются две переменные, то можно перечислять их через запятую:

1
2
3
Writeln('Введите два числа');
read(a,b);
writeln('сумма чисел = ',a+b);

Пример: Запросить для ввода два целых числа и вывести на экран их сумму.

1 способ:

begin
  var ninteger; // n  - целочисленная переменная
  read(n); // ввод значения и сохранение его в переменной n
begin
  var nreal; // n  - переменная вещественного типа
  read(n);// ввод значения и сохранение его в переменной n

2 способ:

// n  - целочисленная переменная и мы вводим значение и сохранением его в переменной n
var n=ReadInteger(); 
// х  - переменная вещественного типа и мы вводим значение и сохранением его в переменной х
var x=ReadReal();

3 способ (кортежное присваивание):

var n1, n2 integer; // объявление двух переменных
(n1, n2) = (1, 2); // 1 присваивается переменной n1, 2 присваивается переменной n2
// Кортежное присваивание позволяет коротко записать обмен двух переменных значениями:
(n1, n2) = (n2, n1); // n1 = 2; n2 = 1

4 способ:

// n1 и n2 - целочисленные переменные и мы вводим для них два значения
var(n1, n2) = readInteger2;

Обычно перед вводом выводится поясняющее сообщение о том, какие данные должны быть введены:

var x = ReadInteger('Введите x:');
var y = ReadInteger('Введите y:');
var res = x + y;

Кроме того, оператор или может быть использован непосредственно в процедуре , т.е. в выводе. Например, так можно посчитать площадь прямоугольника:

Print(ReadInteger * ReadInteger);

Задача 2. Даны две переменные. Выполнить основные арифметические действия с переменными () и вывести результат на экран.

Задача 3. Пользователь вводит сторону квадрата. Найдите периметр и площадь квадрата.

Задача 4. Даны две переменных с некоторыми значениями. Поменять местами значения этих переменных.

Список сниппетов

Список основных сниппетов (при наборе использовать shift + пробел):

a     → (лямбда-выражение)
ar    array of ;
b     begin
    
      end;
be    begin
        
      end.
bo    boolean
c     case  of
        : ;
        : ;
      end;
cl    type  = class
        
      end;      
f     for var i:=1 to 10 do
fb    for var i:=1 to 10 do
      begin
        
      end;
fo    foreach var x in a do
fu    function (): ;
      begin
        
      end;
i     integer
if    if  then
ifb   if  then
      begin
        
      end;
l     loop 10 do
lb    loop 10 do
      begin
        
      end;
      
p     Print();
pr    procedure ();
      begin
  
      end;
r     repeat
        
      until ;
s     string
t     try
        
      except
        
      end;
u     unit Program1;
      
      interface
        
      implementation
       
      begin
        
      end.
w     while  do
wb    while  do
      begin
        
      end;

Что представляет собой инструкция readLn?

Сущность инструкции readLn заключается в задании в программе условия, при котором:

  • какое-либо число, вводимое в строку, присваивается последней по инструкции переменной;
  • оставшаяся область строки не обрабатывается программой, в то время как следующая инструкция потребует осуществления нового ввода.

Так, можно ввести инструкцию:

readLn (C,D); read (E);

И если после этого с клавиатуры ввести ряд 1 2 3, то переменная C приобретет значение 1, D – 2. Но присвоение определенного значения для переменной E программа осуществлять не будет, пока пользователь не введет новое число.

Как и в случае с инструкцией read, при некорректном вводе типа данных пользователем посредством команды readLn программа завершает работу и выдает сообщение о том, что возникла ошибка.

Что такое язык программирования?

Язык программирования – это формальный язык описания компьютерных программ.

Программа – это последовательность команд, позволяющая компьютеру выполнить конкретную задачу.

«Мозг» любого компьютера – процессор, он умеет выполнять лишь небольшой набор команд, называемых машинными, но делает это очень быстро (миллиарды команд в секунду). Для человека машинный язык очень неудобен – программы на нем получаются чрезвычайно сложными и длинными, поэтому было придумано множество более понятных языков программирования, к каждому из которых прилагаются специальные программы – трансляторы, преобразующие команды этого языка в машинные.

Одним из таких языков является язык программирования Паскаль, созданный в 1970 году швейцарским ученым Никлаусом Виртом. Язык назван в честь французского математика Блеза Паскаля – создателя одной из первых механических вычислительных машин.

Язык Паскаль является универсальным языком программирования, он подходит для выполнения совершенно разных задач (обработка текста, построение изображений, поиск информации и т.д.).

От других языков Паскаль отличается строгостью правил, которая дисциплинирует начинающих программистов и формирует у них структурное мышление – очень полезное качество, позволяющее избегать грубых ошибок.

Read и Readln

Read

Инструкция read предназначена для ввода с клавиатуры значений переменных (исходных данных). В общем виде инструкция выглядит следующим образом:

read (Переменная1, Переменная2, ... ПеременнаяN);

где переменнаяы — имя переменной, значение которой должно быть введено с клавиатуры во время выполнения программы.

Приведем примеры записи инструкции read:

read(a); 
read(Cena,Kol);

При выполнении инструкции read происходит следующее:

  1. Программа приостанавливает свою работу и ждет, пока на клавиатуре будут набраны нужные данные и нажата клавиша Enter.
  2. После нажатия клавиши Enter введенное значение присваивается переменной, имя которой указано в инструкции.

Например, в результате выполнения инструкции

read(Temperat);

и ввода с клавиатуры строки 21, значением переменной Temperat будет число 21.

Одна инструкция read позволяет получить значения нескольких переменных. При этом вводимые числа должны быть набраны в одной строке и разделены пробелами. Например, если тип переменных а, b и с — real, то в результате выполнения инструкции

read(a,b,c);

и ввода с клавиатуры строки:

4.5 23 0.17

переменные будут иметь следующие значения:

а = 4,5; b = 23,0; с = 0,17.

Если в строке набрано больше чисел, чем задано переменных в инструкции read, то оставшаяся часть строки будет обработана следующей инструкцией read. Например, в результате выполнения инструкций

read(А,В); read(С);

и ввода с клавиатуры строки

10 25 18

переменные получат следующие значения:

А=10, B = 25

. Инструкция read (С); присвоит переменной с значение 18.

Readln

Инструкция readln отличается от инструкции read тем, что после выделения очередного числа из введенной с клавиатуры строки и присваивания его последней переменной из списка инструкции readln, , и следующая инструкция read или readln будет требовать нового ввода.

Например, в результате выполнения инструкции

readln(А,В); read(С);

и вводе с клавиатуры строки

10 25 18

перемнные получат следующие значения:

А=10, B = 25

После чего программа будет ожидать ввода нового числа, чтобы присвоить его переменной с.

Перед каждой инструкцией read или readln следует располагать инструкцию write, для того чтобы .

1.6. Ввод/вывод в текстовом режиме

Приведенная в предыдущем разделе программа запишет в некоторую область памяти число 2, однако внешне это никак не проявится. Нормальная программа должна уметь получать информацию от пользователя и сообщать ему результаты своей работы.

В простейшем случае вывод информации осуществляется процедурами write и writeln. В обоих случаях выводится текст или значения переменных. Отличие этих двух процедур в том, что последовательные вызовы write будут печатать информацию в одной строке, а writeln после каждого вызова переводит курсор на следующую строку. Примеры вызова процедур вывода:

writeln('Hello'); 

Печатается слово “Hello”.

writeln(x); 

Напечатается значение переменной x.

x:=2;
writeln('x = ', x);

В одну строчку напечатается строка «x = » и значение переменной x, то есть в результате будет напечатано «x = 2».

x:=2;
y:=3;
writeln(x, y);

В одну строчку напечатаются значения переменных x и y, то есть «23».

writeln(x, ' ', y);

Между значениями x и y будет располагаться пробел.

writeln(x);
writeln(y);

Значения x и y будут напечатаны на разных строках.

writeln(2*x+y);

Будет напечатано значение выражения 2*x+y.

writeln;

Вызов writeln без параметров приводит к переходу на новую строку. Несколько таких вызовов подряд вставят в выводимый текст несколько пустых строк.

Общее правило таково: write и writeln могут печатать значения переменных и произвольные текстовые строки. При этом текстовые строки должны быть взяты в кавычки. Одной процедурой можно вывести несколько значений переменных и строк текста, перечислив выводимые элементы через запятую.

Ввод информации осуществляется с помощью процедуры

readln();

которая позволяет ввести с клавиатуры значения нескольких переменных. Например:

readln(x);

Выполнение программы приостановится, пока пользователь не введет значения переменной x и не нажмет Enter.

readln(x, y, z);

Программа ожидает ввода значений трех переменных. После каждого ввода следует жать Enter.

write('x = '); readln(x);

Курсор будет мигать не на пустой строке, а на строке содержащей приглашение вида «x = ».

readln;

В отсутствии параметров процедура просто приостанавливает выполнение программы до нажатия пользователем клвиши Enter.

Используем наши новые знания, написав программу, запрашивающую у пользователя два числа и печатающую их сумму.

program Summa;
var
  x, y: integer;
begin
  write('x = ');  {Вывод текста 'x = '}
  readln(x);	  {Ввод значения переменной x пользователем программы}
  write('y = ');  {Вывод текста 'y = '}
  readln(y);	  {Ввод значения переменной y пользователем программы}
  writeln('Summa = ', x+y);  {Печать результата}
end.

Следующий раздел:

Предыдущий раздел:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Шампиньон.

Различия бледной поганки и шампиньона