- •Министерство образования Российской Федерации
- •Информатика
- •Самара 1999
- •Компоненты
- •1. Полоса меню и подменю.
- •1.1. Выбор команд меню с помощью клавиш.
- •1.2. Выбор команд меню с помощью мышки.
- •Горячие клавиши меню
- •1.3. Сокращения
- •Общие горячие клавиши
- •Горячие клавиши редактирования
- •Горячие клавиши управления окнами
- •Горячие клавиши встроенной справочной информации
- •Горячие клавиши отладки/запуска
- •2. Окна Turbo Pascal
- •2.1. Управление окнами
- •2.2. Строка статуса
- •3. Диалоговые окна
- •3.1. Зависимые и независимые кнопки
- •3.2. Окна ввода и списки
- •4. Создание Вашей первой программы
- •4.1. Анализ Вашей первой программы
- •4.2. Сохранение Вашей первой программы
- •4.3. Компиляция Вашей первой программы
- •4.4. Выполнение Вашей первой программы
- •4.5. Проверка файлов, которые Вы создали
- •5. Ваша вторая программа
- •5.1. Отладка Вашей второй программы
- •5.2. Использование окна Watch
- •5.3. Исправление Вашей второй программы
- •Программирование на turbo pascal
- •1. Элементы программирования
- •2.1. Целые числа
- •2.2. Вещественный тип данных
- •2.3. Символьные и строковые типы данных
- •2.4. Булевские данные
- •2.5. Тип массив
- •3. Идентификаторы
- •4. Операторы
- •4.1. Операторы присваивания
- •4.2. Арифметические операторы
- •4.3. Операторы отношений
- •6. Ввод
- •7. Условные операторы
- •7.1. Оператор If
- •7.2. Оператор выбора Case
- •8. Цикл.
- •8.1. Цикл while.
- •8.2. Цикл Repeat … Until
- •8.3. Цикл For
- •9. Процедуры и функции.
- •10. Структура программ.
- •11. Структура процедуры и функции.
- •12. Пример программы.
- •13. Комментарии.
- •Контрольные задания Вариант №1
- •Вариант№2
- •Вариант №3
- •Вариант №4
- •Вариант №5
- •Вариант №6
- •Вариант №7
- •Вариант №8
- •Вариант №9
- •Вариант №10
4. Операторы
Итак, данные получены программой и присвоены переменным. Программе нужно их обработать и получить результат, используя операторы.
Существует восемь типов операторов. Из них здесь будут рассмотрены пять из них: присваивания, арифметические, отношений, логические и над строками.
Большинство операторов в Паскале бинарные, имеют два операнда; унарные операторы имеют один операнд. Бинарные операторы имеют обычно алгебраическую форму, например a+b. Унарный оператор предшествует своему операнду, например –b.
В сложных выражениях порядок выполнения операций определяется правилами приоритета.
Приоритет операторов
Таблица 4.1.
Операторы |
Приоритет |
Категория |
Not |
Первый (высший) |
Унарный |
*, /, div, mod, and |
Второй |
Мультпликативные |
+, -, or, xor |
Третий |
Аддитивные |
=, <>, <, >, <=, >=, |
Четвертый (низший) |
Отношения |
Операция равного приоритета выполняются слева направо, хотя компилятор может их перегруппировать для генерации оптимального кода.
Последовательность операторов с одинаковым приоритетом выполняются слева направо. Выражения, заключенные в скобки, вычисляются в первую очередь, независимо от предшествующих и последующих операторов.
4.1. Операторы присваивания
Основной операцией является операция присваивания: Ratio := A/B. В Паскале оператор присваивания – это комбинация двоеточия и знака равенства: “:=”. В примере значение выражения A/B, стоящее справа от “:=”, присваивается переменной Ratio, стоящей слева.
4.2. Арифметические операторы
Паскаль поддерживает обычный стандартный набор бинарных арифметических операторов, которые выполняются над целыми и вещественными числами:
умножение (*);
деление целых (div);
деление вещественных с остатком (/);
остаток от деления (mod);
сложение (+);
вычитание (-).
Кроме того, поддерживаются унарные операторы:
унарный минус (-b) – меняет знак числа на противоположный;
унарный плюс (+b) – ничего не выполняет, введен для полноты.
4.3. Операторы отношений
Операторы отношений сравнивают два значения, возвращая в результате булевское значение True или False. В Паскале реализуются операторы:
> - больше, чем;
>= - больше, чем или равно;
< меньше, чем;
<= - меньше, чем или равно;
= - равно;
<> - не равно;
Почему необходимо знать, каков результат: True или False?
Введем следующую программу:
Program TestGreater;
Var
A, B: Integer;
Test: Boolean;
Begin
Write(‘Введите два числа: ‘);
ReadLn(A, B);
Test := A > B;
WriteLn(‘A больше чем B’, Test);
End.
Результат программы: True, если А больше В, и False, если А меньше или равно В.
4.4. Логические операторы
В Паскале есть четыре логических оператора:
And - логическое И;
Or - логическое ИЛИ;
Xor - исключающее ИЛИ;
Not - логическое отрицание.
Эти операторы работают с логическими значениями (True и False) позволяя комбинировать выражения отношений, булевские переменные и булевские выражения.
4.5. Строковые операторы
Существует единственный оператор – “+”, который выполняет конкатенацию (соединение) двух строк.
5. Вывод
Может показаться странным, что речь о выводе пойдет прежде, чем о вводе, но программа, которая не выводит какую-либо информацию, не имеет смысла. Вывод обычно принимает форму, которая зависит от выходного устройства: на экран (слова и изображения), на запоминающие устройства (дискеты и винчестер), на печать.
5.1. Процедура WriteLn
Вы уже использовали наиболее распространенную функцию Паскаля – подпрограмму WriteLn. Назначение ее – запись (вывод) информации на экран. Ее формат прост и гибок при использовании:
WriteLn(элемент, элемент, …);
Каждый элемент – это то, что Вы хотите вывести на экран и может быть: значением, таким как целое или вещественное число (3, 42, -1732.3), символом (‘a’, ‘Z’), строкой (‘Здравствуй мир’), булевским значением (True). Кроме того, может быть именованная константа (имя константы), переменная, вызов функции, если она возвращает значение целого типа, вещественное число, символ, строку или булевский тип. Все элементы печатаются в строку в заданном порядке. После вывода курсор устанавливается на начало следующей строки. Если есть необходимость оставить курсор в этой же строке после последнего элемента, то используйте
Write(элемент, элемент, …);
При выводе элементов WriteLn между ними автоматически пробелы между ними не вставляются. При желании иметь их, необходимо их учесть самим:
WriteLn(элемент,’ ‘, элемент,’ ‘, …);
Следующими операторами описывается вывод:
A := 1; B := 2; C := 3;
Name := ‘Frank’;
WriteLn(A, B, C); 123
WriteLn(A, ‘ ‘, B, ‘ ‘, C); 1 2 3
WriteLn(‘Hi’, Name); HiFrank
WriteLn((‘Hi’,’, ‘, Name, ‘.’); Hi, Frank.
Так же можно использовать параметры определения ширины поля для данного элемента. В этом случае оператор имеет формат:
WriteLn(элемент: длина, …);
Где длина – целое выражение (литерал, константа, переменная, вызов функции), определяющее общий размер поля для вывода элемента.
Рассмотрим следующую программу и полученный в результате вывод:
A := 10; B := 2; C := 100;
WriteLn(A, B, C); 102100
WriteLn(A:2, B:2, C:2); 10 2100
WriteLn(A:3, B:3, C:3); 10 2100
WriteLn(A, B:2, C:4); 10 2 100
Заметим, что элемент дополняется начальными пробелами слева в соответствии с указанной длиной. Само значение выравнивается справа.
Что, если размер поля меньше, чем необходимо? Во втором операторе WriteLn вышеприведенного примера для С=100, длина поля меньше, чем нужно, т.е. задано 2, нужно 3. При выводе Паскаль увеличивает размер до минимально необходимого.
Этот метод применим для всех допустимых элементов: целого типа, вещественных чисел, символов, строк и булевских типов. Однако, при указании ширины (размера) поля для вещественных чисел выравнивание происходит слева и выводится в экспоненциальной форме.
X := 421.53;
WriteLn(x); 4.2153000000E+02
WriteLn(x:8); 4.2E+02
Поэтому, Паскаль позволяет добавить второй операнд длины:
Элемент: длина: количество цифр
Вторая цифра указывает, сколько цифр выводить для числа с фиксированной точкой после точки:
X := 421.53;
WriteLn(x:6:2); 421.53
WriteLn(x:8:2); 421.53
WriteLn(x:8:4); 421.5300
