четвер, 4 лютого 2016 р.

Операторы ввода и вывода

Операторы ввода и вывода

Ввод данных

Для ввода исходных данных чаще всего используется процедура ReadLn:
ReadLn(A1,A2,...AK);
Процедура производит чтение К значений исходных данных и присваивает эти значения переменным А1, А2, ..., АК.
При вводе исходных данных происходит преобразование из внешней формы представления во внутреннюю, определяемую типом переменных. Переменные, образующие список ввода, могут принадлежать либо к целому, либо к действительному, либо к символьному типам. Чтение исходных данных логического типа в языке Паскаль недопустимо.
Значения исходных данных могут отделяться друг от друга пробелами и нажатием клавиш табуляции и Enter.
Не допускается разделение вводимых чисел запятыми!

Вывод данных

Для вывода результатов работы программы на экран используются процедуры:
Write(A1,A2,...AK);
WriteLn(A1,A2,...AK);
Первый из этих операторов производит вывод значений переменных А1, А2,...,АК в строку экрана. Второй оператор, в отличие от первого, не только производит вывод данных на экран, но и производит переход к началу следующей экранной строки. Если процедура writeln используется без параметров, то она просто производит пропуск строки и переход к началу следующей строки.
Переменные, составляющие список вывода, могут относиться к целому, действительному, символьному или булевскому типам. В качестве элемента списка вывода кроме имен переменных могут использоваться выражения и строки.
Форма представления значений в поле вывода соответствует типу переменных и выражений: величины целого типа выводятся как целые десятичные числа, действительного типа - как действительные десятичные числа с десятичным порядком, символьного типа и строки - в виде символов, логического типа - в виде логических констант TRUE и FALSE.
Оператор вывода позволяет задать ширину поля вывода для каждого элемента списка вывода. В этом случае элемент списка вывода имеет вид А:К, где А - выражение или строка, К - выражение либо константа целого типа. Если выводимое значение занимает в поле вывода меньше позиций, чем К, то перед этим значением располагаются пробелы. Если выводимое значение не помещается в ширину поля К, то для этого значения будет отведено необходимое количество позиций.
Для величин действительного типа элемент списка вывода может иметь вид А:К:М, где А - переменная или выражение действительного типа, К - ширина поля вывода, М - число цифр дробной части выводимого значения. К и М - выражения или константы целого типа. В этом случае действительные значения выводятся в форме десятичного числа с фиксированной точкой.
Пример записи операторов вывода:
var rA, rB: Real;
   iP,iQ:Integer;
   bR, bS: Boolean;
   chT, chV, chU, chW: Char;
begin
  . . . 
  WriteLn(rA, rB:10:2);
  WriteLn(iP, iQ:8);
  WriteLn(bR, bS:8);
  WriteLn(chT, chV, chU, chW);
end.

Выражения

Выражения

Выражение задает правило вычисления некоторого значения. Выражение состоит из констант, переменных, указателей функций, знаков операций и скобок.

Математические операции

В таблице приведены основные математические операции Турбо Паскаль.
Символ операцииНазвание операцииПример
*
умножение2*3 (результат: 6)
/
деление30/2 (результат: 1.5E+01)
+
сложение2+3 (результат: 5)
-
вычитание5-3 (результат: 2)
div
целочисленное деление5 div 2 (результат: 2)
mod
остаток от деления5 mod 2 (результат: 1)

Логические операции

Над логическими аргументами в Турбо Паскаль определены следующие операции:
  • NOT - логическое отрицание ("НЕ")
  • AND - логическое умножение ("И")
  • OR - логическое сложение ("ИЛИ")
  • XOR - логическое "Исключающее ИЛИ"
Результаты выполнения этих операций над переменными А и В логического типа приведены в таблице истинности.
AB not A  A and B  A or B  A xor B 
truetruefalsetruetruefalse
truefalsefalsetruetrue
falsetruetruefalsetruetrue
 false  false falsefalsefalse

Операции отношения

К операциям отношения в Турбо Паскаль относятся такие операции, как:
  • > - больше
  • < - меньше
  • = - равно
  • <> - не равно
  • >= - больше или равно
  • <= - меньше или равно
В операциях отношения могут принимать участие не только числа, но и символы, строки, множества и указатели.

Приоритет операций

Порядок вычисления выражения определяется старшинством (приоритетом) содержащихся в нем операций. В языке Паскаль принят следующий приоритет операций:
  • унарная операция not, унарный минус -, взятие адреса @
  • операции типа умножения:  *  /  div  mod  and
  • операции типа сложения:  +  -  or  xor
  • операции отношения:  =  <>  <  >  <=  >=  in
Порядок выполнения операций переопределить можно с помощью скобок. Например 2*5+10 равно 20, но 2*(5+10) равно 30.

Основные математические функции

В этом разделе приведены основные математические функции, встроенные в системную библиотеку Турбо Паскаль.
Abs(X)
Возвращает абсолютное значение числа X.
Cos(X), Sin(X)
Возвращает косинус (синус) числа X, где X - угол в радианах.
Функций тангенс и котангенс в Турбо Паскале нет. Для их вычисления используйте выражение sin(x)/cos(x) (или cos(x)/sin(x) для котангенса).
ArcTan(X)
Возвращает арктангенc числа X.
Exp(X)
Возвращает число, равное e в степени X.
Ln(x)
Возвращает число, равное натуральному логарифму от числа X.
Pi
Число Пи.
Sqr(X)
Возвращает число, равное квадрату числа X.
Функции возведения в произвольную степень в Турбо Паскале нет. Используйте многократное умножение для возведения в целочисленную степень, либо функции Exp и Ln для возведения в вещественную степень.
Sqrt(X)
Возвращает число, равное квадратному корню из числа X.
Trunc(X)
Возвращает число, равное целой части числа X. (Происходит отбрасывание дробной части числа X. Результат выполнения имеет тип Longint).
Frac(X)
Возвращает число, равное дробной части числа X.
Int(X)
Возвращает число, равное целой части числа X. Результат выполнения функции - real.
Round(X)
Функция округляет число X. Возвращаемое значение имеет тип Longint.
Random(X)
Возвращает случайное целое число в диапазоне 0..X. Если аргумент опущен (Random), то возвращается случайное вещественное число от 0 до 1.
Перед использованием random в программах рекомендуется сначала инициализировать генератор псевдослучайных чисел процедурой Randomize. В противном случае при каждом запуске программы будет генерироваться одна и та же последовательность случайных чисел.
Пример. Вывод на экран 5 случайных чисел в диапазоне -10..10.
var i: integer;
begin
   randomize;
   for i:=1 to 5 do writeln(random(21)-10);
end.

Inc(X,Y)
Увеличивает значение числа X на Y. Если число Y не указано, то увеличение происходит на 1.
Dec(X,Y)
Уменьшает значение числа X на Y. Если число Y не указано, то уменьшение происходит на 1.

Переменные и константы

Переменные и константы

Переменной называют элемент программы, который предназначен для хранения, коррекции и передачи данных внутри программы. Все переменные программы в Турбо Паскаль должны быть объявлены в разделе описания переменных (см. далее).
Наряду с переменными в пограммах используются и константы. Константа - это идентификатор, обозначающий некоторую неизменную величину определенного типа. Константы, как и переменные, должны объявляться в соответствующем разделе программы.
В Турбо Паскаль применяется несколько стандартных видов констант:
  • Целочисленные константы. Могут быть определены посредством чисел, записанных в десятичном или шестнадцатиричном формате данных. Это число не должно содержать десятичной точки.
  • Вещественные константы. Могут быть определены числами, записанными в десятичном формате данных с использованием десятичной точки.
  • Символьные константы. Могут быть определены посредством некоторого символа (заключенного в апострофы).
  • Строковые константы. Могут быть определены последовательностью произвольных символов (заключенных в апострофы).
  • Типизированные константы. Представляют собой инициализиованные переменные, которые могут использоваться в программах наравне с обычными переменными. Каждой типизированной константе ставится в соответствие имя, тип и начальное значение. Например:
    year: integer = 2001;
    symb: char = '?';
    money: real = 57.23;

Типы данных

Типы данных

Понятие типа данных в Турбо Паскаль

Для обработки ЭВМ данные представляются в виде величин и их совокупностей. С понятием величины связаны такая важная характеристика, как ее тип.
Тип определяет:
  • возможные значения переменных, констант, функций, выражений, принадлежащих к данному типу;
  • внутреннюю форму представления данных в ЭВМ;
  • операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу.
В языке Паскаль тип величины задают заранее. Все переменные, используемые в программе, должны быть объявлены в разделе описания с указанием их типа. Обязательное описание типа приводит к избыточности в тексте программ, но такая избыточность является важным вспомогательным средством разработки программ и рассматривается как необходимое свойство современных алгоритмических языков высокого уровня.
Иерархия типов в языке Паскаль такая:
  • Простые
    • Порядковые
      • Целые
      • Логические
      • Символьные
      • Перечисляемые
      • Интервальные
    • Вещественные
  • Структуированные
    • Массивы
    • Строки
    • Множества
    • Записи
    • Файлы
  • Указатели

Простые типы данных

В таблице приведены простые типы данных Турбо Паскаль, объем памяти, необходимый для хранения одной переменной указанного типа, множество допустимых значений и применимые операции.
ИдентификаторДлина (байт)Диапазон значенийОперации
Целые типы
integer
2-32768..32767+, -, /, *, Div, Mod,
>=, <=, =, <>, <, >
byte
10..255+, -, /, *, Div, Mod,
>=, <=, =, <>, <, >
word
20..65535+, -, /, *, Div, Mod,
>=, <=, =, <>, <, >
shortint
1-128..127+, -, /, *, Div, Mod,
>=, <=, =, <>, <, >
longint
4-2147483648..2147483647+, -, /, *, Div, Mod,
>=, <=, =, <>, <, >
Вещественные типы
real
62,9x10-39 - 1,7x1038+, -, /, *,
>=, <=, =, <>, <, >
single
41,5x10-45 - 3,4x1038+, -, /, *,
>=, <=, =, <>, <, >
double
85x10-324 - 1,7x10308+, -, /, *,
>=, <=, =, <>, <, >
extended
103,4x10-4932 - 1,1x104932+, -, /, *,
>=, <=, =, <>, <, >
Логический тип
boolean
1true, falseNot, And, Or, Xor,
>=, <=, =, <>, <, >
Символьный тип
char
1все символы кода ASCII+,
>=, <=, =, <>, <, >
Перечисляемый и интервальный тип относятся к типам, определяемым пользователем и будут рассмотрены нами позже.

Дополнительные сведения о типах данных..
Порядковые типы, выделяемые из группы простых типов, характеризуются следующими свойствами:
  • все возможные значения порядкового типа представляют собой ограниченное упорядоченное множество;
  • к любому порядковому типу может быть применена стандартная функция Ord, которая в качестве результата возвращает порядковый номер конкретного значения в данном типе;
  • к любому порядковому типу могут быть применены стандартные функции Pred и Succ, которые возвращают предыдущее и последующее значения соответственно;
  • к любому порядковому типу могут быть применены стандартные функции Low и High, которые возвращают наименьшее и наибольшее значения величин данного типа.
В языке Паскаль введены понятия эквивалентности и совместимости типов. Два типа Т1 и Т2 являются эквивалентными (идентичными), если выполняется одно из двух условий:
  • Т1 и Т2 представляют собой одно и то же имя типа;
  • тип Т2 описан с использованием типа Т1 с помощью равенства или последовательности равенств. Например:
    type
      T1 = Integer;
      T2 = T1;
      T3 = T2;
    
Менее строгие ограничения накладываются на совместимость типов. Так, типы являются совместимыми, если:
  • они эквивалентны;
  • являются оба либо целыми, либо действительными;
  • один тип - интервальный, другой - его базовый;
  • оба интервальные с общим базовым;
  • один тип - строковый, другой - символьный.
В Турбо Паскаль ограничения на совместимость типов можно обойти с помощью приведения типов. Приведение типов позволяет рассматривать одну и ту же величину в памяти ЭВМ как принадлежащую разным типам. Для этого используется конструкция
Имя_Типа(переменная или значение)
Напрмер, Integer('Z') представляет собой значение кода символа 'Z' в двухбайтном представлении целого числа, а Byte(534) даст значение 22, поскольку целое число 534 имеет тип Word и занимает два байта, а тип Byte занимает один байт, и в процессе приведения старший байт будет отброшен.

Синтаксис и семантика

Синтаксис и семантика

Описание каждого элемента языка задается его СИНТАКСИСОМ и СЕМАНТИКОЙ. Синтаксические определения устанавливают правила построения элементов языка. Семантика определяет смысл и правила использования тех элементов языка, для которых были даны синтаксические определения.

Алфавит языка

Алфавит - это совокупность допустимых в языке символов. Алфавит Турбо Паскаль включает следующий набор основных символов:
  • строчные и прописные латинские буквы:
    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
    a b c d e f g h i j k l m n o p q r s t u v w x y z
    
  • пробел
  • подчеркивание: _
  • арабские цифры:
    0 1 2 3 4 5 6 7 8 9
  • знаки операций:
    + - * / = <> < > <= >= := @
  • ограничители:
    . , ' ( ) [ ] (. .) { } (*  *) .. : ;
  • спецификаторы:
    ^  #  $
  • служебные (зарезервированные) слова:
    ABSOLUTE          EXPORTS           LIBRARY           SET     
    ASSEMBLER         EXTERNAL          MOD               SHL     
    AND               FAR               NAME              SHR     
    ARRAY             FILE              NIL               STRING  
    ASM               FOR               NEAR              THEN    
    ASSEMBLER         FORWARD           NOT               TO      
    BEGIN             FUNCTION          OBJECT            TYPE
    CASE              GOTO              OF                UNIT
    CONST             IF                OR                UNTIL
    CONSTRUCTOR       IMPLEMENTATION    PACKED            USES
    DESTRUCTOR        IN                PRIVATE           VAR
    DIV               INDEX             PROCEDURE         VIRTUAL
    DO                INHERITED         PROGRAM           WHILE
    DOWNTO            INLINE            PUBLIC            WITH
    ELSE              INTERFACE         RECORD            XOR
    END               INTERRUPT         REPEAT    
    EXPORT            LABEL             RESIDENT  
    
    


Элементарные конструкции

Элементарные конструкции языка Паскаль включают в себя имена, числа и строки.
Имена (идентификаторы) называют элементы языка - константы, метки, типы, переменные, процедуры, функции, модули, объекты. Идентификатор в Турбо Паскале может включать в себя:
- буквы латинского алфавита,
- цифры
- символ подчеркивания.
Строчные и прописные буквы не различаются (например, NAME, Name и name будет означать одно и то же). Цифра не может стоять на первом месте в идентификаторе, а символ подчеркивания может находиться в любой позиции (например, name1 и name2item являются допустимыми идентификаторами, а 5name - нет; _name, name_, name_item - тоже допустимые названия). Длина идентификатора может быть любой, но значимыми являются только первые 63 символа. В качестве имен не допускается использовать служебные слова.
Для отделения друг от друга идентификаторов, чисел, зарезервированных слов используются разделители. В качестве них можно использовать:
- пробел и табуляцию;
- перевод строки;
- комментарий.
В любом месте программы, где можно поместить один разделитель, их можно поместить любое количество и в любом сочетании, что позволяет наглядно представить структуру программы.
Комментарии заключаются либо в скобки { ... }, либо в скобки вида (* ... *) и могут занимать любое число строк.
Числа в языке Паскаль обычно записываются в десятичной системе счисления. Они могут быть целыми и действительными. Положительный знак числа может быть опущен. Целые числа записываются в форме без десятичной точки, например:
217  -45  8954  +483
Действительные числа записываются в форме с десятичной точкой:
28.6  0.65  -0.018  4.0
Возможна также запись с использованием десятичного порядка, который изображается буквой Е:
5Е12  -1.72Е9  73.1Е-16
В "переводе" такую запись следует понимать соответственно как:
5x1012  -1.72x109  73.1x10-16
Паскаль допускает запись целых чисел и фрагментов действительных чисел в форме с порядком в шестнадцатиричной системе счисления:
$7F  $40  $ABC0
Строки в языке Паскаль - это последовательность символов, записанная между апострофами. Если в строке в качестве содержательного символа необходимо употребить сам апостроф, то следует записать два апострофа. Примеры строк:
'СТРОКА'  'STRING'  'ПРОГРАММА'  'АД''ЮТАНТ'

Описание языка Turbo Pascal


Описание языка Turbo Pascal

Язык Паскаль, названный в честь французского математика и философа Блеза Паскаля (1623-1662), был создан как учебный язык программирования в 1968-71 годах швейцарским ученым Никлаусом Виртом на кафедре информатики Стэнфордского университета (Цюрих). В настоящее время это язык имеет более широкую сферу применения, чем предусматривалось при его создании. Свое признание Паскаль получил с появлением пакета Турбо Паскаль (Turbo Pascal). Этот язык отличается простотой понимания, стройностью и структурностью алгоритмов, быстротой компилятора и удобными средствами создания и отладки программ.
Достоинствами языка Паскаль являются:
  1. Простой синтаксис языка. Небольшое число базовых понятий. Программы на Паскале достаточно легко читаемы.
  2. Достаточно низкие аппаратные и системные требования как самого компилятора, так и программ, написанных на Паскале.
  3. Универсальность языка. Язык Паскаль применим для решения практически всех задач программирования.
  4. Поддержка структурного програмирования, программирования "сверху-вниз", а также объектно-ориентированного программирования.
В настоящем пособии рассматривается Tirbo Pascal v7.0. Данная версия разработана фирмой Borland и является последней в линейке компиляторов Pascal для DOS. Дальнейшее развитие Паскаль получил в Delphi - системе разработки программ для Windows.


Среда разработчика Turbo Pascal 7.0

Базовыми компонентами система программирования Турбо Паскаль являются компилятор языка Паскаль, средства создания и редактирования исходных текстов программ и средства их отладки (поиска и исправления ошибок). Все эти компоненты объединены в единую интегрированную среду разработчика, с которой как раз и работает программист, создавая свои программы.

Запуск программы

Если ваш компьютер настроен для более удобной работы с Турбо Паскалем (в файловом менеджере прописаны ассоциации файлов, настроено пользовательсткое меню), то для начала работы со средой разработчика удобнее всего поступить следующим образом:
  1. Запустить Norton Commander (Far Manager);
  2. Зайти в каталог, в котором планируется сохранять файлы с исходными текстами программы, а также вспомогательные файлы вашей прграммы;
  3. Вызвать горячее меню Norton Commander (нажав клавишу F2);
  4. Выбрать строку "Turbo Pascal 7.0";
  5. Если окно редактирования не открылось, то открыть его через пункт меню "File" (нажать Alt+F, выбрать New).
Если у вас уже есть некоторый файл с исходным текстом программы (файл с расширением pas), с которым вы хотите продолжить работу, то достаточно навести на него указатель Norton Commander и нажать Enter. В этом случае запустится Turbo Pascal и сразу откроется текст выбранной вами программы.

Окно среды разработчика

Основной экран интегрированной среды разработчика Turbo Pascal 7.0 выглядит следующим образом:
По функциональному назначению выделяется три области экрана:
  • Строка меню
  • Рабочая область
  • Строка состояния
Строка меню активизируется нажатием клавиши F10. В меню содержатся следующие разделы:
  • File. Позволяет выполнять все основные действия с файлами (создание, открытие, сохранение ..)
  • Edit. Позволяет выполнять все основные операции редактирования текста (копирование, вставка, удаление фрагментов, отмена последних изменений ..)
  • Search. Позволяет осуществлять поиск и замену фрагментов текста.
  • Run. Позволяет запускать программу, в том числе в пошаговом режиме.
  • Compile. Позволяет осуществлять компиляцию программы.
  • Debug. Содержит команды, облегчающие процесс поиска ошибок в программе.
  • Tools. Содержит некоторые дополнительные средства Турбо Паскаль.
  • Options. Позволяет установить необходимые для работы параметры компилятора и среды разработчика.
  • Window. Позволяет выполнять все основные операции с окнами (открывать, закрывать, перемещать, изменять размер).
  • Help. Позволяет получить имеющуюся в системе справочную информацию.
Все пункты меню доступны через горячие клавиши. Для этого надо нажать клавишу Alt и ту букву, которая выделена красной в названии пункта меню. Меню также позволяет работать с мышью.
В рабочей области имеется возможность открывать различные окна программы - окна редактируемого текста, окна помощи, отладки и настройки. В вышеприведенном примере открыто только одно окно - окно текста программы. В заголовке окна написано имя файла - исходного текста программы.
Строка состояния демонстрирует некоторые доступные и важные в данный момент операции и соответствующие им комбинации клавиш.