Общие сведения о языке программирования Паскаль
Ключевые слова:
• язык программирования
• программа
• алфавит
• служебные слова
• типы данных
• структура программы
• оператор присваивания
Языки программирования — это формальные языки, предназначенные для записи алгоритмов, исполнителем которых будет компьютер. Записи алгоритмов на языках программирования называются программами.
Существует несколько тысяч языков программирования. Мы с вами познакомимся с языком программирования Паскаль, который был разработан в 70-х годах прошлого века Никлаусом Виртом (Швейцария). Своё название этот язык получил в честь французского учёного Блеза Паскаля, известного не только своими достижениями в математике, физике и философии, но и созданием первой в мире механической машины, выполнявшей сложение двух чисел.
Язык Паскаль считается универсальным языком программирования, так как он может применяться для записи алгоритмов решения самых разных задач (вычислительных, обработки текстов, построения графических изображений, поиска информации и т.д.).
Он поддерживает процедурный стиль программирования, в соответствии с которым программа представляет собой последовательность операторов, задающих те или иные действия1.
Никлаус Вирт (род. в 1934 г.) — швейцарский учёный, специалист в области информатики, один из известнейших теоретиков в области разработки языков программирования, профессор компьютерных наук. Разработчик языка Паскаль и ряда других языков программирования.
Рекомендуем вам зайти на сайт pascalabc.net. Здесь вы найдёте много полезной информации для начинающих программистов, сможете скачать систему программирования PascalABC.NET.
3.1.1. Алфавит и словарь языка
Основой языка программирования Паскаль, как и любого другого языка, является алфавит — набор допустимых символов, которые можно использовать для записи программы. Это:
- латинские прописные буквы (А, В, С, ...., X, Y, Z);
- латинские строчные буквы (а, Ь, с, ..., х, у, z);
- арабские цифры (0, 1, 2, ..., 7, 8, 9);
- специальные символы (знак подчёркивания; знаки препинания; круглые, квадратные и фигурные скобки; знаки арифметических операций и др.).
В качестве неделимых элементов (составных символов) рассматриваются следующие последовательности символов:
:= (знак операции присваивания);
>= и <= (знаки ≥ и ≤);
(* и *) (начало и конец комментария).
В языке существует также некоторое количество различных цепочек символов, рассматриваемых как единые смысловые элементы с фиксированным значением. Такие цепочки символов называются служебными словами. В таблице 3.1 приведены основные служебные слова, которые мы будем использовать при записи программ на языке Паскаль.
С другими стилями программирования вы познакомитесь при изучении курса информатики в 10-11 классах.
Таблица3.1
Служебные слова языка Паскаль
Для обозначения констант, переменных, программ и других объектов используются имена — любые отличные от служебных слов последовательности букв, цифр и символа подчёркивания, начинающиеся с буквы или символа подчёркивания.
Прописные и строчные буквы в именах не различаются.
Длина имени может быть любой. Для удобства мы будем пользоваться именами, длина которых не превышает 8 символов.
3.1.2. Типы данных, используемые в языке Паскаль
В языке Паскаль используются различные типы данных. Мы будем пользоваться некоторыми из так называемых простых типов данных (табл. 3.2)
Таблица 3.2
Некоторые типы данных в языке Паскаль
В вещественном числе целая часть от дробной отделяется точкой, при этом перед точкой и после неё должно быть, по крайней мере, по одной цифре. Пробелы внутри числа недопустимы.
3.1.3. Структура программы на языке Паскаль
В программе, записанной на языке Паскаль, можно выделить:
1) заголовок программы;
2) блок описания используемых данных;
3) блок описания действий по преобразованию данных (программный блок).
Заголовок программы состоит из служебного слова program и имени программы. После имени программы ставится точка с запятой.
Блок описания данных состоит из раздела описания констант (const), раздела описания переменных (var) и некоторых других разделов. В разделе описания переменных указываются имена используемых в программе переменных и их типы. Имена переменных одного типа перечисляются через запятую, затем после двоеточия указывается их тип; описание каждого типа заканчивается точкой с запятой. Ниже приведён пример раздела описания переменных:
Программа может не иметь заголовка; в ней может отсутствовать блок описания данных. Обязательной частью программы является программный блок. Он содержит команды, описывающие алгоритм решения задачи. Программный блок начинается со слова begin и заканчивается словом end с точкой.
Ниже приведён общий вид программы:
program <имя программы>;
const <список постоянных значений>;
var <описание используемых переменных>;
begin <начало программного блока>
<оператор 1>;
<оператор 2>;
...
<оператор n>
end.
Операторы — языковые конструкции, с помощью которых в программах записываются действия, выполняемые над данными в процессе решения задачи.
Точка с запятой служит разделителем между операторами, а не является окончанием соответствующего оператора.
Перед оператором end точку с запятой ставить не нужно.
3.1.4. Оператор присваивания
Основное преобразование данных, выполняемое компьютером, — присваивание переменной нового значения, что означает изменение содержимого области памяти; оно осуществляется оператором присваивания, аналогичным команде присваивания алгоритмического языка. Общий вид оператора:
<имя переменной>:=<выражение>
Операция присваивания допустима для всех приведённых в табл. 3.2 типов данных. Выражения в языке Паскаль конструируются по рассмотренным ранее правилам для алгоритмического языка.
Рассмотрим процесс выполнения операторов присваивания на следующем примере:
а:=10;
b:=5;
s:=a+b
При выполнении оператора а:=10 в ячейку оперативной памяти компьютера с именем а заносится значение 10; при выполнении оператора b:=5 в ячейку оперативной памяти компьютера с именем b заносится значение 5. При выполнении оператора s:=а+b значения ячеек оперативной памяти с именами а и b переносятся в процессор, где над ними выполняется операция сложения. Полученный результат заносится в ячейку оперативной памяти с именем s (рис. 3.1).
Рис. 3.1. Процесс выполнения оператора присваивания
Организация ввода и вывода данных
Ключевые слова:
• оператор вывода write
• формат вывода
• оператор ввода read
3.2.1. Вывод данных
В предыдущем параграфе мы познакомились со структурой программы на языке Паскаль, научились описывать данные, рассмотрели оператор присваивания. Этого достаточно для того, чтобы записать программу преобразования данных. Но результат этих преобразований нам виден не будет.
Для вывода данных из оперативной памяти на экран монитора используется оператор вывода write:
Здесь в круглых скобках помещается список вывода — список выражений, значения которых выводятся на экран. Это могут быть числовые, символьные и логические выражения, в том числе переменные и константы.
Произвольный набор символов, заключённый в апострофы, считается строковой константой. Строковая константа может содержать любые символы, набираемые на клавиатуре.
Пример. Оператор write (' s=', s) выполняется так:
1) на экран выводятся символы, заключённые в апострофы: s=
2) на экран выводится значение переменной, хранящееся в ячейке оперативной памяти с именем s.
Если значение переменной s равно 15 и она имеет целочисленный тип, то на экране появится: s=15.
Если значение переменной s равно 15, но она имеет вещественный тип, то на экране появится: s=1 . 5E+01
При выполнении оператора вывода все элементы списка вывода печатаются непосредственно друг за другом. Так, в результате работы оператора write (1, 20, 300) на экран будет выведена последовательность цифр 120300, которая будет восприниматься нами как число 120300, а не как три отдельные числовые константы. Сделать выводимые данные более доступными для восприятия можно разными способами:
Формат вывода — это указываемое после двоеточия целое число, определяющее, сколько позиций на экране должна занимать выводимая величина. Если цифр в числе меньше, чем зарезервированных под него позиций на экране, то свободные позиции дополняются пробелами слева от числа. Если указанное в формате вывода после двоеточия число меньше, чем необходимо, то оно автоматически будет увеличено до минимально необходимого.
Для вывода вещественного числа в списке вывода для каждого выражения указываются два параметра:
1) общее количество позиций, отводимых под число;
2) количество позиций в дробной части числа:
При выполнении нового оператора write вывод продолжается в той же строке. Чтобы осуществить переход к новой строке, используется оператор writeln. Других различий между операторами write и writeln нет.
3.2.2. Первая программа на языке Паскаль
Пользуясь рассмотренными операторами, составим программу, вычисляющую длину окружности и площадь круга радиуса 5,4 см.
Исходным данным в этой задаче является радиус: r=5,4 см. Результатом работы программы должны быть величины с — длина окружности и s — площадь круга. с, s и r — величины вещественного типа.
Исходные данные и результаты связаны соотношениями, известными из курса математики: с=2πr, s=πr². Программа, реализующая вычисления по этим формулам, будет иметь вид:
program n_l;
const pi=3.14;
var r, с, s: real;
begin
r:=5.4;
c:=2*pi*r;
s:=pi*r*r;
writeln ('c=', c:6:4);
writeln ('s=', s : 6:4)
end.
Эта программа верна и решает поставленную задачу. Запустив её на выполнение, вы получите следующий результат:
И всё-таки составленная нами программа имеет существенный недостаток: она находит длину окружности и площадь круга для единственного значения радиуса (5,4 см).
Для того чтобы вычислить длину окружности и площадь круга для другого значения радиуса, потребуется вносить изменения непосредственно в текст программы, а именно изменять оператор присваивания. Внесение изменений в существующую программу, по меньшей мере, не всегда удобно (например, когда программа большая и операторов присваивания много). Ниже вы познакомитесь с оператором, позволяющим вводить исходные данные в процессе работы программы, не прибегая к изменению текста программы.
3.2.3. Ввод данных с клавиатуры
Для ввода в оперативную память значений переменных используется оператор ввода read:
При выполнении оператора read компьютер переходит в режим ожидания данных: пользователь должен ввести данные с клавиатуры и нажать клавишу Enter¹. Несколько значений переменных числовых типов могут вводиться через пробел или через запятую. При вводе символьных переменных пробел и запятая воспринимаются как символы, поэтому ставить их нельзя.
Первое введённое пользователем значение переменной помещается в ячейку памяти, имя которой расположено первым в списке ввода, и т. д. Поэтому типы вводимых значений (входного потока) должны соответствовать типам переменных, указанных в разделе описания переменных.
Пример. Пусть .
var i, j: integer; x: real; a: char;
Присвоим переменным i, j, x, а значения 1, 0, 2,5 и 'А'. Для этого воспользуемся оператором
read (i, j, x, a)
и организуем входной поток одним из следующих способов:
1 0 2.5 A<Enter> 1, 0, 2.5<Enter> 1<Enter>
A<Enter> 0<Enter>
2.5<Enter>
A<Enter>
Здесь мы не только использовали различные разделители (пробел, запятая), но и представляли входной поток в виде одной, двух и четырёх строк.
Для ввода данных с клавиатуры можно также использовать оператор readln. Отличие состоит в том, что после выполнения readln осуществляется автоматический переход на новую строку входного потока, даже если в текущей строке остались невведённые символы. Таким образом, readln позволяет считать лишь начальную часть введённой пользователем строки и, проигнорировав её окончание, перейти к следующей строке.
Усовершенствуем программу n_1, организовав в вей ввод данных с помощью оператора read. А чтобы пользователь знал, для чего предназначена программа, и понимал, какое именно действие ожидает от него компьютер, выведем соответствующие текстовые сообщения с помощью оператора writeln:
program n_2;
const pi=3.14;
var r, с, s: real;
begin
writeln ('Вычисление длины окружности и площади круга');
write ('Введите r>>');
readln (r);
c:=2*pi*r;
s:=pi*r*r;
writeln ('c=', c:6:4);
writeln ('s=', s:6:4)
end.
Результат работы усовершенствованной программы:
Теперь наша программа может вычислить длину окружности и площадь круга для любого значения г. Иначе говоря, она решает не единичную задачу, а целый класс задач. Кроме того, в программе понятно и удобно организован ввод исходных данных и вывод получаемых результатов. Это обеспечивает дружественность пользовательского интерфейса.
Вопросы и задания
1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Дополняет ли презентация информацию, содержащуюся в тексте параграфа? Какими слайдами вы могли бы дополнить презентацию?
2. В честь кого назван язык программирования Паскаль? Подготовьте краткую биографическую справку об этом учёном.
3. Почему язык программирования Паскаль считается универсальным?
4. Что входит в состав алфавита языка Паскаль?
5. Каких требований следует придерживаться при выборе имён для различных объектов в языке Паскаль?
6. Указывая название, обозначение, диапазон и занимаемую область памяти, опишите известные вам типы данных, используемые в языке Паскаль.
7. В чём разница между числами 100 и 100.0 в языке Паскаль?
8. Какую структуру имеет программа, записанная на языке Паскаль?
9. Как записывается раздел описания переменных?
10. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Используйте эти материалы при подготовке ответов на вопросы и выполнении заданий.
11. Опишите переменные, необходимые для вычисления площади треугольника по его трём сторонам, и запишите оператор, обеспечивающий ввод необходимых исходных данных.
12. Что является результатом выполнения оператора?
a) write (a)
б)write ('a')
в)write ('a=', а)
13. Какой тип имеет переменная f, если после выполнения оператора write (f) на экран было выведено следующее число?
а) 125
б)1.25Е+2
14. Каким образом можно вывести на экран вещественное число?