Ввод-вывод данных в Pascal
Составной оператор
Если при некотором условии надо выполнить определенную последовательность операторов, то их объединяют в один составной оператор.
Составной оператор начинается ключевым словом begin и заканчивается словом end. Между этими словами помещаются составляющие операторы, которые выполняются в порядке их следования. После end ставится точка с запятой, а после begin – только пробелы (либо комментарий).
Пример.
begin i := 2; k := i / 5end;Слова begin и end играют роль операторных скобок. Тело самой программы также имеет вид составного оператора. После последнего end программы ставится точка. Нельзя извне составного оператора передавать управление внутрь него.
Типы данных в Паскале
Любая программа, написанная на любом языке программирования, по большому счету предназначена для обработки данных. В качестве данных могут выступать числа, тексты, графика, звук и др. Одни данные являются исходными, другие – результатом, который получается путем обработки исходных данных программой.
Данные хранятся в памяти компьютера. Программа обращается к ним с помощью имен переменных, связанных с участками памяти, где хранятся данные.
Переменные описываются до основного кода программы. Здесь указываются имена переменных и тип хранимых в них данных.
В языке программирования Паскаль достаточно много типов данных. Кроме того, сам пользователь может определять свои типы.
Тип переменной определяет, какие данные можно хранить в связанной с ней ячейке памяти.
Переменные типа integer могут быть связаны только с целыми значениями обычно в диапазоне от -32768 до 32767. В Pascal есть другие целочисленные типы (byte, longint).
Переменные типа real хранят вещественные (дробные) числа.
Переменная булевского (логического) типа (boolean) может принимать только два значения - true (1, правда) или false (0, ложь).
Символьный тип (char) может принимать значения из определенной упорядоченной последовательности символов.
Интервальный тип определяется пользователем и формируется только из порядковых типов. Представляет собой подмножество значений в конкретном диапазоне.
Можно создать собственный тип данных простым перечислением значений, которые может принимать переменная данного типа. Это так называемый перечисляемый тип данных.
Все вышеописанное – это простые типы данных. Но бывают и сложные, структурированные, которые базируются на простых типах.
Массив – это структура, занимающая в памяти единую область и состоящая из фиксированного числа компонентов одного типа.
Строки представляет собой последовательность символов. Причем количество этих символов не может быть больше 255 включительно. Такое ограничение является характерной чертой Pascal.
Запись – это структура, состоящая из фиксированного числа компонент, называемых полями. В разных полях записи данные могут иметь разный тип.
Множества представляют собой совокупность любого числа элементов, но одного и того же перечисляемого типа.
Файлы для Pascal представляют собой последовательности однотипных данных, которые хранятся на устройствах внешней памяти (например, жестком диске).
Понятие такого типа данных как указатель связано с динамическим хранением данных в памяти компьютера. Часто использование динамических типов данных является более эффективным в программировании, чем статических.
В языке Паскаль определено пять целых типов.
Таблица. Целые типы Pascal
Тип | Диапазон допустимых значений | Отводимая память, в байтах |
shortint | -128…127 | |
integer | -32 768…32 767 | |
longint | -2 147 483 648…2 147 483 647 | |
byte | 0…255 | |
word | 0…65 535 |
Переменные целого типа могут принимать только целые значения. Такие переменные в программе описываются следующим образом:
a, b, c: integer;
Здесь a, b, c… - имена переменных, integer – тип переменных. Транслятор, встретив такое описание переменных a, b, c, запоминает, что эти переменные могут принимать только целые значения и формирует соответственно этому команды программы.
Таблица. Операции над целыми типами, дающие в результате значение целого типа
Знак операции | Операция |
+ | Сложение |
- | Вычитание |
* | Умножение |
div | Целочисленное деление (остаток отбрасывается). Деление без округления (целая часть частного). |
mod | Деление по модулю (выделение остатка от деления). Остаток от деления: a mod b = a – ((a div b) * b). |
Операции над операндами целого типа выполняются правильно только при условии, что результат и каждый операнд не меньше минимального (крайнего левого) и не больше максимального (крайнего правого) значений диапазона. Например, в Паскале существует константа maxint, в которой содержится максимально допустимое значение для типа integer. Тогда при выполнении операций в программе должны соблюдаться следующие условия:
(a операция b) <= maxint, a <= maxint, b <= maxint.
Над целыми типами, как и многими другими, допустимы операции отношения (сравнения). Результат таких операций относится к типу boolean и может принимать одно из двух значений – либо true (истина), либо false (ложь).
Таблица. Операции отношения
Знак операции | Операция |
= | Равно |
<> | Не равно |
>= | Больше или равно |
> | Больше |
<= | Меньше или равно |
< | Меньше |
Целые типы могут приниматься в качестве фактических параметров рядом стандартных функций языка программирования Pascal.
Таблица. Стандартные функции Pascal, применимые к аргументам целых типов
Функция | Тип результата | Результат выполнения |
abs(x) | Целый | Модуль x (абсолютная величина x) |
sqr(x) | Целый | Квадрат x |
succ(x) | Целый | Следующее значение x (x+1) |
pred(x) | Целый | Предыдущее значение x (x-1) |
random(x) | Целый | Случайное целое число из интервала 0..x-1. |
sin(x) | Действительный | Синус x (угол в радианах) |
cos(x) | Действительный | Косинус x (угол в радианах) |
arctan(x) | Действительный | Арктангенс x (угол в радианах) |
ln(x) | Действительный | Натуральный логарифм x |
exp(x) | Действительный | Экспонента x |
sqrt(x) | Действительный | Квадратный корень из x |
odd(x) | Логический | Значение true, если x – нечетное число; false – если четное. |
Функция random возвращает равномерно распределенное случайное целое число, если ей передан целый аргумент. При повторном запуске программы она возвращает те же значения. Во избежание этого следует в начале программы вызвать процедуру без параметров randomize.
Процедуры inc и dec могут иметь по одному или по два параметра целого типа. Если параметров два, то значение первого увеличивается (для inc) или уменьшается (для dec) на величину, равную значению второго параметра. Например, inc(x,2) равнозначно x+2. Если параметр один, то его значение увеличивается (для inc) или уменьшается (для dec) на единицу. Например, dec(x) равнозначно x-1. Следующие функции принимают в качестве аргументов значения вещественного типа, а возвращают значения целого типа:
trunc(x) – отбрасывание десятичных знаков после точки;
round(x) – округление до целого.
Ввод-вывод данных в Pascal
В Паскале ввод осуществляется с помощью процедур read() и readln(), а вывод - благодаря write() и writeln(). Процедуры, которые имеют окончание ln, после своего выполнения переводят указатель на новую строку.
При вводе данных их разделяют пробелом, табуляцией или переходом на новую строку (Enter). Данные символьного типа не разделяются или разделяются переходом на новую строку.
Существуют особенности ввода данных с помощью операторов read() и readln(). Если используются подряд несколько операторов read(), то вводимые данные можно разделять всеми допустимыми способами. При использовании нескольких вызовов readln() каждый последующий срабатывает только после нажатия Enter. Программа ниже иллюстрирует это. Комментарии поясняют последовательность возможных действий при вводе данных.
var a,b,c,d: integer;begin read(a); // a -> <space> or <tab> or <enter> -> b read(b); writeln(a,' ',b); readln(c); // c -> only <enter> -> d readln(d); writeln(c,' ',d); read(a,b); // a -> <space> or <tab> or <enter> -> b writeln(a,' ',b); readln(c,d); // c -> <space> or <tab> or <enter> -> d writeln(c,' ',d);end.Дополнительная информация:
1. http://pas1.ru/programming
2. http://pascalabc.net/downloads/pabcnethelp/index.htm (Много полезной информации, но не все применимо к используемой нами версии Pascal)
Задания
Для проверки заданий необходимо зарегистрироваться на сайте
http://new.bacs.cs.istu.ru/
Переходим на вкладку «Группы контестов»
Наша группа БИД_21_Pascal
В рамках БИД_21_Лабораторная_1 необходимо решить 5 задач.
В меню слева даны ссылки на условия задач.
Отправляем решение на проверку кликнув по ссылке Отправить на проверку
Выбираем нужную задачу и язык Pascal, вставляем текст программы.
Посмотреть правильность выполнения можно на страницах Монитор (Монитор дорешивания) и Мои посылки
Для решения задач вам понадобятся операторы ввода и вывода (примеры здесь http://life-prog.ru/view_algoritmleng.php?id=88), целочисленный тип переменных integer, операции над целыми типами, дающие в результате значение целого типа.
Обратите внимание, что формат ввода Input и вывода Output должен точно соответствовать условиям в задаче.