
- •Введение
- •Глава 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. Описание функции
- •Задание
Задание
1. Напишите программу, которая считывает с клавиатуры два вещественных числа, находит их сумму и выводит результат на экран.
2. Напишите программу, которая считывает с клавиатуры два вещественных числа, находит их разность и выводит результат на экран.
3. Напишите программу, которая считывает с клавиатуры два вещественных числа, находит их произведение и выводит результат на экран.
4. Что произойдет, если в программе program Primer_4, в качестве типа переменных выбрать вещественный тип:
var
Chislo1,Chislo2,Resultat:real;
А в процедуре work попытаемся определить остаток от деления первого числа на второе:
procedure Work;
begin
resultat:=chislo1 mod chislo2;
end;
Попробуйте объяснить данный результат.
2.5. Улучшенный калькулятор
2.5.1. Операторы выбора
Как вы уже знаете одним из трех основных действий (см ) является «ВЫБОР». "Выбор" того или иного действия происходит при выполнении или невыполнении определенного условия. По этому перед рассмотрением формата операторов выбора применяемых в языке Pascal, рассмотрим два вида операций: Булевские (логические) операции и операции отношения.
Булевские (логические) операции
Результатом выполнения булевских (логических) операций является одно из двух значений: True – истина, False – ложь.
В таблице приведены виды булевских (логических) операций и типы результатов получаемых при различных типах операторов.
Операции |
Действие |
Тип операндов |
Тип результата |
Унарная |
|||
Not |
Логическое отрицание |
Булевский |
Булевский |
Бинарная |
|||
And |
Логическое И |
Булевский |
Булевский |
Or |
Логическое ИЛИ |
Булевский |
Булевский |
Xor |
Логическое исключающие ИЛИ |
Булевский |
Булевский |
Операции отношения
Действие операций отношения соответствуют их математическому пониманию. Результатом этих операций является булевское выражение (True, False), например:
Отношение |
Результат |
3=5 |
False (ложь) |
3<5 |
True (истина) |
3<>5 |
True (истина) |
3>5 |
False (ложь) |
Оператор if … then
Оператор имеет следующий формат
If <условие> then <действие1> else <действие2>;
Как мы уже отмечали, если при невыполнении условия мы не производим никаких действий, то:
If <условие> then <действие1>;
Перед ключевым словом else символ ";" никогда не ставится.
program Primer_5;
var
Chislo1,Chislo2:Integer;
Resultat:Real;
Znak:Char;
procedure Init;
begin
Writeln('Insert chislo 1');
Readln(Chislo1);
Writeln('Insert Znak');
Readln(Znak);
Writeln('Insert chislo 2');
Readln(Chislo2);
end;
procedure Work;
begin
if znak = '+' then resultat:=chislo1 + chislo2;
if znak = '-' then resultat:=chislo1 - chislo2;
if znak = '*' then resultat:=chislo1 * chislo2;
if znak = '/' then resultat:=chislo1 / chislo2;
if znak = 'd' then resultat:=chislo1 div chislo2;
if znak = 'm' then resultat:=chislo1 mod chislo2;
end;
procedure Exi;
begin
writeln(resultat);
end;
begin
Init;
Work;
Exi;
end.
Если вы проведете трассировку данной программы, то вы безусловно заметите, что даже если знаком действия был знак "+" , то программа будут проверять все остальные возможности. То есть вне зависимости от знака программа выполнит 6 действий сравнения. Можно ли уменьшить количество сравнений, то есть увеличить скорость выполнения программы? Оказывается можно. Для этого воспользуемся вложенными операторами выбора. Изменения коснутся только процедуры Work, поэтому текст других процедур приводить не будем.
procedure Work;
begin
if znak = '+' then resultat:=chislo1 + chislo2 else
if znak = '-' then resultat:=chislo1 - chislo2 else
if znak = '*' then resultat:=chislo1 * chislo2 else
if znak = '/' then resultat:=chislo1 / chislo2 else
if znak = 'd' then resultat:=chislo1 div chislo2 else
if znak = 'm' then resultat:=chislo1 mod chislo2;
end;
В данном примере, если znak = '+', то программа просуммирует два числа и прекратит проверку других условий. Если znak <> '+', то программа проверит следующее условие znak = '-'. Проверка условия будет происходить до тех пор пока условие не выполниться. Можно ожидать, что данная программа будет работать в среднем в 2 раза быстрее, чем предыдущая.