Pascal. Введение
Текст программы состоит из определенных блоков, не все они должны присутствовать обязательно, но при наличии должны быть строго на своем месте. Блок операторов основной программы, которые определены между ключевыми словами begin и end., должен присутствовать обязательно и располагаться в конце текста программы.
Составим простейшую программу вывода строки "Здравствуй, мир!", что стало традицией для руководств по языкам программирования примерно с того времени, когда был создан Pascal.
Program HelloWorld;
// Программа вывода традиционного приветствия
begin
writeln('Здравствуй, Мир!');
end.
Наша программа состоит из единственной строки - процедуры вывода, заключенной между begin и end. Обратите внимание, точка после слова end является обязательной и означает конец текста программы. Также примите во внимание, что блоки, операторы, вызовы процедур и функций заканчиваюся символом ;
Первая строка - это необязательный заголовок программ, а вторая строка - необязательный однострочный комментарий. Все строки, начинающиеся с // являются комментариями и игнорируются компилятором. Для того, чтобы программа скомпилировалась и выполнилась досточно следующего текста:
begin
writeln('Здравствуй, Мир!');
end.
Но комментарии полезно писать, они позволяют лучше понять как работает программа не только тем, кто будет разбирать программу, но и самому программисту, который через некоторое время может долго вспоминать, что и как он делал в том или ином фрагменте кода.
Комментарии могут быть многострочными, в этом случае они заключаются в фигурные скобки {}.
Практически всегда в программе необходимы переменные для вычисления и хранения различных значений, Все переменные, которые используются в программе должны быть определены перед основным блоком. При определении переменной указывается тип данных, который будет храниться в ней. В процессе выполнения программы переменной можно присвоить только данные того типа, который был указан при определении.
Составим программу ввода двух целых значений, вычисления их суммы и вывода полученного значения.
var
a,b : integer;
begin
readln(a);
readln(b);
writeln(a + b);
end.
Ключевое слово var обозначает начало блока определения переменных, в котором указаны переменные a и b целого типа. В первых двух строках процедуры ввода в переменную значения, набранного на клавиатуре. Ввод значения заканчивается нажатием клавиши Ввод (Enter).
В следующей таблице типы данных, которые мы будем использовать в наших программах:
Тип данных | Ключевое слово | Длина в байтах | Диапазон |
Целые числа | smallint | 2 | -32768..32767 |
Целые числа | integer | 4 | -2147483648..2147483647 |
Целые числа | int64 | 8 | -9223372036854775808..9223372036854775807 |
Вещественные числа | real | 8 | -1.8∙10308 .. 1.8∙10308 |
Вещественные числа | double | 8 | -1.8∙10308 .. 1.8∙10308 |
Символ | char | 2 | |
Строка | string | ||
Логическое значение | boolean | 1 | false..true |
В PascalABC типы данных real и double одинаковые, в отличии от других реализаций Pascal. Еще одним отличием является диапазон типа данных integer, в других реализациях этот тип данных занимает два байта.
Для присваивания значения переменной используется опретор :=. Изменим программу вычисления суммы, задав значения переменным:
var
a,b : integer;
begin
a := 5;
b := 6;
writeln(a + b);
end.
С правой стороны оператора присваивания может стоять любое выражение, значение которого соответствует типу данных переменной. Например, в выражениях для арифметических действий используются следующие знаки:
Оператор | Действие |
+ | Сложение |
- | Вычитание |
* | Умножение |
/ | Деление |
** | Возведение в степень |
div | Целочисленное деление |
mod | Остаток от деления |
Оператор присваивания - это не арифметическое равенство, выражение:
a := a + 1;
для арифметики лишено смысла, а в языках программирования означает, что переменной a присваивается значение, которое хранилось в переменной a, увеличенное на единицу.
Результатом оператора деления / всегда является значения вещественного типа, даже если действие производится над целыми значениями. Чтобы результатом деления было целое число, нужно использовать оператор div, например:
a := 9 div 2; // переменной a будет присвоено значение 4
Для получения остатка от деления целых чисел нужно использовать оператор mod, например
a := 9 mod 2; // переменной a будет присвоено значение 1
С процедурой вывода writeln мы уже знакомы, но есть также процедура write, которая отличается тем, что в конце не выводит символ перевода строки. Таким образом, ее можно использовать, если необходимо вывести какие-либо данные в той же строке, что и предыдущие данные.
Как вы уже догадались в качестве аргумента у процедур вывода можно задавать арифметическое выражение, значение которого будет выведено. Также в процедурах вывода можно задавать несколько аргументов, которые будут выведены подряд.
В процедуре ввода readln также можно указать несколько аргументов, но в этом случае значения, соответсвующие аргументам, при вводе с клавиатуры должны быть разделены пробелом.
Задача: Пользователь вводит длину стороны квадрата. Вывести площадь квадрата.
Решение:
var
a : double;
begin
write('Введите длину стороны квадрата? ');
readln(a);
writeln('Площадь квадрата равна ', a*a);
end.
Задачи для самостоятельного решения
-
Пользователь вводит длины сторон прямоугольника. Вывести площадь прямоугольника.
-
Пользователь вводит два числа. Вывести их среднее арифметическое.
-
Пользователь вводит два числа. Вывести их среднее геометрическое.
-
Пользователь вводит длины катетов прямоугольного треугольника. Вывести длину гипотенузы и площадь треугольника.
-
Пользователь вводит значение угла в градусах. Вывести значение угла в радианах.
-
Пользователь вводит значение угла в градусах. Вывести его синус и косинус с точностью 4 знака после запятой.
-
Пользователь вводит два целых числа в переменные A и B. Поменять значения у переменных местами и вывести их.
-
Пользователь вводит два целых числа в переменные A и B. Поменять значения у переменных местами и вывести их. Вспомогательную переменную не использовать.
-
n школьников делят k яблок поровну, неделимый остаток остается в корзине. Пользователь вводит количество школьников и количество яблок в корзине. Вывести количество яблок, которое достанется каждому школьнику и количество оставшихся в корзине яблок.
-
С начала суток прошло n минут (вводит пользователь). Определить, сколько часов и минут будут показывать электронные часы в этот момент. Вывести два числа: количество часов (0 - 23) и количество минут (0 - 59).
-
В школе занятия по математике для трех классов ("а", "б", "в") проходят одновременно в трех кабинетах, для которых необходимо приобрести новые парты. За каждой партой может сидеть не больше двух учеников. Пользователь вводит три натуральных числа: количество учащихся в каждом из трех классов. Вывести необходимое количество парт для трех кабинетов.