Задачи

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.
 

Задачи для самостоятельного решения