Урок из серии: «Язык программирования Паскаль»
На этом уроке мы остановимся на целых типах данных и алгоритмах их обработки .
Определим для них:
- Зарезервированные слова для описания.
- Диапазон допустимых значений.
- Набор операций.
- Формат внутреннего представления.
В таблице показаны 5 стандартных целых типов, которые отличаются форматами и диапазонами допустимых значений.
Тип | Диапазон значений | Длина (байт) |
shortint | -128..127 | 1 |
integer | -32768..32767 | 2 |
longint | -2147483648.. -2147483647 | 4 |
byte | 0..255 | 1 |
word | 0..65535 | 2 |
Для работы с целыми числами используются арифметические операции:
- «+» — сложение;
- » * » — умножение;
- » — » вычитание;
- div — целочисленное деление;
- mod — получение остатка от целочисленного деления.
В языке Паскаль операция возведения в степень отсутствует.
Чтобы остаться в рамках множества целых чисел, вместо обычного математическое деление «/» вводятся операции: »div» — целая часть от деления; »mod» — остаток от деления.
Для работы с целыми типами используются функции, результат которых — целое число.
Функция | Назначение |
abs(n) | Абсолютная величина n |
sqr(n) | Квадрат числа n |
trunc(x) | Получение целой части вещественного числа x |
round(x) | Округление до целого вещественного числа x |
Оператор присваивания
Для присваивания значения переменной используется оператор присваивания.
Арифметический оператор присваивания на Паскаль имеет следующий формат:
числовая переменная:= арифметическое выражение
Алгоритм выполнения оператора:
1. Вычисляется значение выражения, стоящего справа от знака присваивания.
2. Полученное значение присваивается переменной , стоящей в левой части.
Следует знать:
Оператор присваивания используется для изменения значений переменных, в том числе и для вычислений по формулам.
Тип результата, полученного при вычислении выражения должен быть совместим по типу с переменной, которой он присваивается.
Ввод данных
Для организации вывода и вывода данных в языке Паскаль предусмотрены следующие операторы: read, readln, write и writeln.
Названия означают «читай», «читай строку» (read line), «пиши», «пиши строку» (write line) соответственно.
Ввод данных — это передача информации от внешних устройств в оперативную память. Обычно вводятся исходные данные для решения задачи.
Оператор ввода можно записать в одной из следующих форм:
read(x1, x2, …, xn);
readln(x1, x2, …, xn);
read;
где x1, x2, …, xn — список ввода, содержащий имена переменных, значения которых будут вводится.
Например:
var x, y: integer;
readln(x, y);
…
Следует знать:
С помощью одного оператора ввода можно вводить значения нескольких переменных. В качестве разделителя при вводе значений можно использовать пробел либо нужно нажимать клавишу Enter после ввода каждого из значений.
Тип данных, вводимых во время работы программы, должен соответствовать типам переменных, указанных в списке ввода. В случае несоответствия типов программа завершает работу и на экран выводится сообщение об ошибке.
Вывод данных
Вывод данных — обратный процесс, когда данные передаются из оперативной памяти на внешние носители (экран, принтер, файл на диске). Обычно вывод осуществляется в конце программы, выводятся результаты решения задачи.
Оператор вывода записывается водной из следующих форм:
write(y1, y2, …, yn);
writeln(y1, y2, …, yn);
writeln;
где y1, y2, …, yn — список вывода.
Например:
writeln(‘Сумма равна: ‘, sum);
Следует знать:
Список вывода может содержать константы, переменные или выражения. Число параметров произвольно.
Из констант наиболее часто выводят строки текста (строковые константы заключаются в апострофы).
Если в списке вывода стоит имя переменной, то на экран выводится значение переменной.
Если в списке вывода стоит выражение, то на экран выводится вычисленное значение выражения.
Оператор writeln аналогичен оператору write. Отличие заключается в том, что после вывода последнего элемента из списка, курсор автоматически переходит в начало новой строки.
Оператор writeln; (без параметров) переводит курсор в начало следующей строки. Таким способом можно, например, отделять результаты работы программы друг от друга одной или несколькими пустыми строками.
Пример 1. Поменять местами значения переменных x и y.
Решение.
Нам нужно изменит значения переменных. Для этого можно использовать оператор присваивания.
Как легко проверить, к цели не приводит выполнение следующих операторов:
x:=y; {переменной x присвоить, значение переменной y}
y:=x; {переменной y присвоить значение переменной х}
Проблема в том, что присваивая переменной x новое значение, мы теряем её старое значение. Нужно сначала сохранить старое значение переменной, а затем присвоить её новое значение. Задачу можно решить с помощью вспомогательной переменной.
Первый способ:
Z:= x; X:=y; Y:=z
Второй способ:
Z:=y; y:=x; x:=z
program _1; var x, y, z: integer; begin writeln('Введите два числа: '); readln(x,y); z:=x; x:=y; y:=z; writeln(x, ' ',y); end.
Пример 2. Найти целую часть и остаток от деления целого числа a на целое число b.
Решение.
program _2; var a, b, p1, p2: integer; begin writeln('Введите a, b: '); readln(a,b); p1:=a div b; p2:=a mod b; writeln('Целая часть: ',p1, ' Остаток: ',p2); end.
Пример 3. Найти сумму цифр заданного трехзначного числа.
Решение.
Сначала научимся разбивать число на отдельные цифры, составляющие его десятичную запись. Это нетрудно сделать, поняв суть позиционной записи: в десятичной записи любого числа последняя цифра показывает количество единиц.
Итак, разделив число на 10, мы получим в остатке его последнюю цифру, а в частном — число, которое получается из исходного вычеркиванием последней цифры. Повторив эту операцию несколько раз, можно по очереди отделить от числа все цифры.
Алгоритм нахождения цифр числа:
1. Находим последнюю цифру в записи числа. Для этого находим остаток от деления заданного числа на 10 с помощью операции mod. Сохраняем её.
2. Вычеркиваем последнюю цифру. Для этого присвоим новое значение числу, разделив старое значение нацело на 10 помощью опрерации div. Число станет двузначным.
3. Находим последнюю цифру теперь уже двузначного числа. Сохраняем её.
4. Зачеркиваем последнюю цифру. Остается первая цифра.
Дважды повторяются действия нахождения остатка и деление нацело. Если цифр в числе будет больше, нужно организовать цикл.
program _3; var a, c1, c2, c3, s:integer; begin writeln('Введите число: '); readln(a); c3:=a mod 10; a:=a div 10; c2:=a mod 10; c1:= a div 10; s:=c1+c2+c3; writeln('Сумма равна: ',s); end.
Проверь себя!
До встречи в следующем уроке.