
- •Введение
- •Глава 1. Структурное программирование
- •1.1 Основные определения
- •1.2 Три основных действия
- •1.2.1 Последовательность
- •1.2.2 Выбор
- •1.2.3 Цикл
- •1.3. Структурный подход к решению задач
- •Задание
- •1.4. Организация хранения и обработки данных
- •1.4.1 Записи и списки
- •Задание
- •1.4.2 Очередь
- •Задание
- •1.4.3 Стек
- •Задание
- •1.5 Структурное программирование.
- •2. Программирование на языке паскаль
- •2.1. Краткая история эвм и языки программирования
- •Задание
- •2.2. Интегрированная среда borland pascal
- •2.2.1. Краткая характеристика. Запуск программы
- •2.1.2. Основы работы в редакторе Открытие нового окна
- •Завершение работы со средой
- •Задание
- •«Горячие» клавиши интегрированной среды
- •2.3. Структура программы
- •2.3.1.Основные положения
- •2.3.2. Понятие идентификатора
- •2.3.3. Первая программа
- •2.3.4. Описание подпрограммы (процедуры).
- •2.3.4. Строковый тип данных
- •2.3.5. Процедуры ввода и вывода данных
- •Задание
- •2.4. Программа калькулятор.
- •2.4.1. Тип целые и вещественный.
- •2.4.2. Переменные вещественного типа
- •Задание
- •2.5. Улучшенный калькулятор
- •2.5.1. Операторы выбора
- •Булевские (логические) операции
- •Операции отношения
- •Оператор if … then
- •Оператор case
- •2.5.2. Основные отличия применения операторов выбора. Перечисляемый тип. Интервальный тип.
- •Задание
- •2.6. Улучшенный каЛьКулятор (продолжение)
- •2.6.1. Оператор цикла с постусловием (проверка на ноль)
- •2.6.2. Оператор цикла с предусловием
- •2.6.3. Оператор цикла со счетчиком (параметром)
- •Задание
- •2.7. Переменные типа массив
- •2.7.1. Виды массивов
- •2.7.2.Описание массива
- •2.7.3.Нахождение максимального элемента в массиве
- •Задание
- •2.7.4. Строковая переменная (продолжение)
- •Задание
- •2.7.5. Строковая переменная как массив
- •Мама мыла раму
- •Задание
- •2.7.6. Описание функции
- •Задание
Задание
В программе Primer_3 замените процедуру readln () на read (). Что изменилось в ходе выполнения программы?
В программе Primer_3, в процедуре Exi замените writeln() на write(). Несколько раз запустите программу. Что изменилось в характере вывода информации на экран?
В программе Primer_3, в процедуре Init замените write() на writeln (). Что изменилось в характере вывода информации на экран?
2.4. Программа калькулятор.
2.4.1. Тип целые и вещественный.
Цель программы в оказании помощи по обработки некоторых исходных данных и получения конкретного результата. Наша программа Primer_3 может только считывать данные с клавиатуры и выводить их на экран. Перед написанием это программы введем еще одно определение:
Выражение – Основная составляющая большинства языков. Оно строится из операндов, которыми являются переменные или константы, и операций (действий) которые производятся над этими операндами.
Попробуем написать программу Primer_4 которая производит следующие действия: складывает два числа, которые мы вводим с клавиатуры, и выводит результат на экран.
Для того чтобы программа могла обрабатывать данные и хранить результат, необходимо определить какой тип переменных мы будем использовать. Предположим, что наши числа будут целыми.
Переменные целого типа
В языке Borland Pascal для обозначения целых чисел используют несколько типов.
Идентификатор |
Диапазон представления чисел |
Размер памяти |
Название типа |
Shortint |
-128…127 |
1 байт |
Короткое целое со знаком |
Integer |
-32768..32767 |
2 байт |
Целое со знаком |
Longint |
-2147483648.. 2147483647 |
4 байт |
Длинное целое |
Byte |
0..255 |
1 байт |
Короткое целое без знака |
World |
0..65535 |
2 байт |
Целое без знака |
При выборе того или иного типа следует учитывать диапазон в котором будет изменятся описываемая переменная. Если Вы знаете, что число положительное и не превосходит 255, то целесообразно описать его как тип Byte. Можно конечно описать его как World (Целое без знака) или Longint (Длинное целое), но при этом память выделяемая для хранения этой переменной будет в два или в четыре раза больше. Это было бы нестрашно, но, к сожалению, в Borland Pascal есть ограничение на объем памяти для хранения данных и он равен 64 Кбайтам, и не может быть превышен без использования динамического распределения памяти. По этому и важно использовать при описании переменных такие типы, которые занимают минимально возможную память.
И так предположим, что наши два слагаемых и результат имеют тип Integer, то есть лежат в диапазоне чисел принятых для этого типа. Первому слагаемому дадим имя Chislo1, второму - Chislo2, и результат будем хранить в переменной с именем Resultat. Для этого опишем их в блоке глобальных переменных. В процедуре Init проведем действия по считыванию двух чисел с клавиатуры. В процедуре Work проведем сложение значений этих двух переменных, и результат поместим в переменную с именем Resultat. В процедуре Exi выведем значение переменной Resultat на экран. Наша новая программа примет следующий вид:
program Primer_4;
var
Chislo1,Chislo2,Resultat:Integer;
procedure Init;
begin
Write('Insert chislo1 -');
Readln(Chislo1);
Write('Insert chislo2 -');
Readln(Chislo2);
end;
procedure Work;
begin
resultat:=chislo1+chislo2;
end;
procedure Exit;
begin
writeln(resultat);
end;
begin
Init;
Work;
Exi;
end.
Обратите внимание, что текст основной программы Primer_4 относительно текста программы Primer_3 не изменился. Изменению подверглись только тексты процедур.
Для того, что бы получить произведение двух чисел надо просто изменить знак действия в процедуре Work:
resultat:=chislo1*chislo2;
Для получения разности двух чисел мы опять поменяем только знак в этом выражении:
resultat:=chislo1-chislo2;
Помимо операций сложения, вычитания, умножения в Borland Pascal имеются еще операции целочисленного деления и нахождения остатка от деления. Они обозначаются соответственно div и mod. Формат записи для этих операций следующий:
resultat:=chislo1 div chislo2;
resultat:=chislo1 mod chislo2;
Так если первое число 7, а второе – 3, то результатом целочисленного деления будет 2, а остаток от деления 1. Внося изменения в программу, посмотрите какие результаты будут при использовании операций div и mod.
Однако если мы захотим поставить знак деления, например:
resultat:=chislo1/chislo2;
то, после запуска программы на выполнение система даст нам сообщение об ошибке:
Error 26: Tapy mismatch. ( Тип не определен)
Почему это произошло? Дело в том, что при делении одного числа на другое, даже если они целые числа, результат может быть числом нецелым. Например: разделите единицу на число три. Какой результат Вы получите? Поэтому отладчик и сообщил нам о том, что тип переменной с именем Resultat, описанный нами, не соответствует значениям, которые мы хотим хранить в нем. Для описания переменных имеющих нецелочисленное значение (имеющих вещественный тип) в Borland Pascal введены другие типы описания переменных.
В таблице приведены виды арифметических операций и типы результатов получаемых при различных типах операторов.
Операции |
Действие |
Тип операндов |
Тип результата |
Унарная |
|||
+ |
Сохранение знака |
Целый Вещественный |
Целый Вещественный |
- |
Отрицание знака |
Целый Вещественный |
Целый Вещественный |
Бинарная |
|||
+ |
Сложение |
Целый Вещественный |
Целый Вещественный |
- |
Вычитание |
Целый Вещественный |
Целый Вещественный |
* |
Умножение |
Целый Вещественный |
Целый Вещественный |
/ |
Деление |
Целый Вещественный |
Вещественный Вещественный |
Div |
Целочисленное деление |
Целый |
Целый |
Mod |
Остаток от деления |
Целый |
Целый |
Как видно из таблицы тип результата операции деления “ / “ всегда будет вещественным.