Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Прикладное программирование. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
В компьютере абсолютно точно представляются целые типы. В отличие от целых типов значение вещественных типов определяет произвольное число лишь с некоторой конечной точность, зависящего от формата числа. Веще­ственные числа представляются в компьютере с фиксированной или с плаваю­щей точкой.
Примеры:
2358.8395
0.23588395*104
0.23588395*E4
Особое положение в Паскаль занимает тип Comp, фактически это большое целое число со знаком. Этот тип совместен со всеми вещественными типами и может быть использован для большого целого числа. При представлении веще­ственных чисел с плавающей запятой десятичная точка, всегда подразумевается перед левой или старшей мантиссой, но при действии с числом сдвигается вле­во или вправо.
Порядковые типы данных
Порядковые типы объединяют в себе несколько простых типов. К ним от­носятся:
все целые типы;
символьный тип;
логический тип;
тип-диапазон;
перечисляемый тип.
Общими признаками для порядковых типов являются: каждый из типов имеет конечное число возможных значений; значение этих типов можно опре­деленным образом упорядочить и с каждым числом сопоставить некоторое число, являющееся порядковым номером; соседние значения порядковых типов отличается на единицу.
К значениям порядкового типа может быть применена функция ODD(x), которая возвращает порядковый номер аргумента x.
11
Функция PRED(x) — возвращает предшествующее значение порядкового типа. PRED(A) = 5.
Функция SUCC (x) — возвращает следующее значение порядкового типа.
SUCC(A) = 5.
Символьный тип данных
Значениям символьного типа является 256 символов из множества допу­стимых кодовой таблицей используемого компьютера. Начальная область этого множества, то есть диапазон от 0 до 127 соответствует множеству кодов ASCII, куда загружаются символы алфавита, арабских чисел и специальных символов. Символы начальной области всегда присутствуют на клавиатуре ПК. Старшая область называется альтернативной, она содержит символы национальных ал­фавитов и различные специальные символы, и символы псевдографики, не со­ответствующие коду ASCII.
Значение символьного типа занимает один байт в оперативной памяти. В программе значении заключаются в апострофы. Так же значения можно зада­вать в виде его ASCII-коде. В этом случае перед числом, обладающим код сим­вола нужно поставить знак #.
Var C:Char
C := ’A’
C := #65
Логический (булевский) тип
Имеются два значения булевского типа: Истина (True) и Ложь (False). Пе­ременные данного типа задаются служебным словом BOOLEAN. Значение бу­левского типа занимают один байт в оперативной памяти. Значениям Истина и Ложь соответствуют числовые значения 1 и 0.
Тип-диапазон
Есть подмножество своего базового типа в качестве, которого может вы­ступать любой порядковый тип. Тип-диапазон задается границами внутри базо­вого типа.
12
[минимальное-значение]…[максимальное-значение] 5…20
Тип-диапазон можно задавать в разделе Type, как определенный тип, а можно непосредственно в разделе Var.
При определении тип-диапазона необходимо руководствоваться:
левая граница не должна превышать правую границу;
тип-диапазон наследует все свойства базового типа, но с ограничениями, связанными и с его меньшей мощностью.
Перечисляемый тип
Данный тип относится к порядковым типам и задается перечислением тех значений, которых он может перечислять. Каждое значение именуется неким идентификатором и располагается в списке обрамленным в круглых скобках. Перечисляемый тип задается в Type:
Type Peoples = (men, women);
Первое значение — 0, второе значение — 1 и т.д. Максимальная мощность 65535 значений.
Строковый тип данных
Строковый тип относится к группе структурированных типов и состоит из базового типа Char. Строковый тип не относится к порядковым типам. Он определяет множество символьных цепочек произвольной длины до 255 сим­волов.
В программе строковый тип объявляется, словом String. Поскольку String является базовым типом, он описан в языке и объявление переменной типа String осуществляется в Var. При объявлении переменной строкового типа за String в квадратных скобках целесообразно указывать длину строки. Для указа­ния используется целое число от 0 до 255.
Var Fam: String[15];
13
Указание длины строки позволяет компилятору отвести под данную пере­менную указанное число байтов в ОЗУ. Если длина строки не указана, то в этом случае компилятор отведет под значение этой переменной максимальное воз­можное число байт (255).
Основные операторы языка Паскаль
Оператор является неделимым элементом программы, который дает воз­можность выполнять определенные алгоритмические действия. Отличием опе­ратора, по отношению к другим элементам, является то, что под ним всегда подразумевается какое-то действие. В языке Паскаль операторы состоят из служебных слов. Операторы, используемые в программе, отделяются между собой и от других элементов программы символом (;). Все операторы языка Паскаль можно условно разбить на две группы:
простые;
структурированные.
Простые операторы — это операторы, не содержащие в себе других опера­торов. К ним относятся:
оператор присвоения (:=);
оператор процедуры;
оператор безусловного перехода (GOTO).
Структурированные операторы — это операторы, которые содержат в себе другие операторы. К ним относятся:
составной оператор;
операторы условий (IF, CASE);
операторы цикла (FOR, WHILE, REPEAT);
оператор присоединения (WITH).
Оператор присваивания
<переменная> : = <выражения>;
: = – знак присваивания
Операторы ввода-вывода
READ (<список ввода>)
14
имя оператора ввода;
список переменных, разделенных запятыми.
WRITE (<список вывода>)
имя оператора вывода;
список переменных вывода, разделенных запятыми.
READLN (a, b, c) — после ввода значений a, b и c курсор перемещается на следующую строку.
WRITELN — без списка вывода можно использовать для пропуска строк при оформлении вывода результатов.
В операторе WRITE можно использовать формат вывода значений пере­менных.
Writeln ( ’_ a = ’ , a:8:3, ’_ b = ’, b:4); при a = 341.154, b = 2
_ a = _ 341.154 _ b = _ 144 при a = 1.3, b = 144 _ a = _ _ _ 1.300 _ b = _ 144
Операторы условия и перехода
Строки программы на Паскале не нумеруются. Однако строки в программе могут иметь метки, к которым можно переходить во время исполнения про­граммы.
Метки описываются с помощью ключевого слова label N1, N2 … ; в описа­тельной части программы. N1, N2, — идентификатор или целое положительное число от 09999.
Формат: GOTO [метка];
GOTO — зарезервированное слово в языке Паскаль, [метка] — это произ­вольный идентификатор, который позволяет пометить некий оператор про­граммы и в дальнейшем сослаться на него. В языке Паскаль допускается в ка­честве меток использовать целое число без знаков. Метка располагается перед помеченным оператором и отделяется от него (:). Один оператор можно поме­чать несколькими метками. Они так же отделяются друг от друга (:). Перед тем
15
как использовать метку в разделе оператора ее необходимо описать в разделе LABEL (раздел описания).
Оператор GO TO N; передает управление строке с меткой N.
Действие GOTO передает управление соответствующему помеченному оператору. При использовании меток нужно руководствоваться следующими правилами:
метка должна быть описана в разделе описаний и все метки должны быть использованы;
если в качестве меток используются целые числа, их не объявляют.
Оператор GOTO противоречит принципам технологии структурного про­граммирования. Современные языки программирования не имеют в своем со­ставе такого оператора, и в его использовании нет необходимости. Кроме того в современных компьютерах используется так называемый конвейерный способ. Если в программе встречается оператор безусловного перехода, то такой опера­тор ломает весь конвейер, заставляя создавать его заново, что существенно за­медляет вычислительный процесс.
Условный оператор используется в программе для реализации алгоритми­ческой структуры — ветвления. В данной структуре вычислительный процесс может продолжаться по одному из возможных направлений. Выбор направле­ния обычно осуществляется проверкой какого-либо условия. Существует два вида структуры ветвления: структура вилка и обход.
В языке Паскаль условный оператор IF это средство организации ветвяще­гося вычислительного процесса.
Формат: IF [логическое_выражение] Then [оператор_1]; Else [опера-
тор_2];
IF, Then, Else — служебные слова. [оператор_1], [оператор_2] — обыкно-
венные операции языка Паскаль. Часть Else является необязательной (может отсутствовать).
Оператор IF работает следующим образом: вначале проверяется результат логического выражения. Если результат Истина(TRUE), то выполняется [опера-
16
тор_1], следующий за служебным словом Then, а [оператор_2] пропускается. Если результат Ложь(FALSE), то [оператор_1] пропускается, а [оператор_2] исполняется.
Если часть Else отсутствует, то оператор IF имеет не полную форму:
IF [логическое_выражение] Then [оператор];
В этом случае, если результат Истина(TRUE), то выполняется [оператор], если Ложь(FALSE), то управление передается оператору, следующему за опе­ратором IF.
На языке программирования оператор имеет вид: IF < условия > THEN P1 [ ELSE P2 ]; <условие> — логическое выражение; P1, P2 — простой или составной операторы.
Логические выражения могут быть сложными, составленными с помощью логических операций:
AND (И)
OR (ИЛИ)
NOT (НЕ).
Оператор выбора CASE предназначен для реализации множественных ветвлений, поскольку оператор IF может реализовать всего два направления вычислительного процесса, использовать его для реализации множественных ветвлений не всегда удобно. Множественное ветвление реализуется оператором
CASE.
Формат: CASE [ключ_выбора] OF
[константа_выбора_1]:[оператор_1];
[константа_выбора_2]:[оператор_2];
…
[константа_выбора_N]:[оператор_N];
ELSE [оператор];
End;
17
CASE, OF, ELSE, END — служебные слова. [ключ_выбора] – это параметр
одного из порядковых типов. [константы_выбора] – константы того же типа, что и ключ выбора, реализующие выбор. [оператор_1(N)] – обыкновенный опе­ратор. ELSE может отсутствовать.
Оператор выбора работает следующим образом: до работы оператора определяется значение параметра ключ выбора. Этот параметр может быть ли­бо выражен как переменная в программе, либо другим путем. Затем параметр ключ выбора последовательно сравниваем с константой выбора. При совпаде­нии значения ключа выбора с одной из констант выбора, выполняется оператор, следующий за этой константой, а все прочие операторы игнорируются.
В случае не совпадения ключа выбора ни с одним из констант, выполняет­ся оператор, следующий за Else. Часто Else является не обязательной и в случае несовпадения ключа выбора ни с одной из констант выбора и при отсутствии Else, управление передается оператору, следующему за оператором CASE.
В операторе CASE нет явной проверки условия, характерного для операто­ра IF. В тоже время в неявном виде операция сравнения выполняется. CASE вносит диссонанс в программу на языке Паскаль, поскольку данные оператор завершается служебным словом End, которому нет парного Begin.
Циклические вычислительные процессы
В большинстве задач, встречающихся на практике, необходимо произво­дить многократное выполнение некоторого действия. Такой многократно по­вторяющийся участок вычислительного процесса называется циклом.
Если заранее известно количество необходимых повторений, то цикл называется арифметическим (цикл с параметром). Если же количество повторе­ний заранее неизвестно, то говорят об итерационном цикле.
В итерационных циклах производится проверка некоторого условия, и в зависимости от результата этой проверки происходит либо выход из цикла, ли­бо повторение выполнения тела цикла. Если проверка условия производится перед выполнением блока операторов, то такой итерационный цикл называется
18
циклом с предусловием (цикл пока), а если проверка производится после вы­полнения тела цикла, то это цикл с постусловием (цикл до).
Особенность этих циклов заключается в том, что тело цикла с постуслови­ем всегда выполняется хотя бы один раз, а тело цикла с предусловием может ни разу не выполниться. В зависимости от решаемой задачи необходимо исполь­зовать тот или иной вид итерационных циклов.
1. Цикл с параметром
При организации циклов необходимо:
определить параметр цикла и его начальное значение;
изменять значение параметра цикла на каждом шаге итерации;
осуществить проверку выхода из цикла.
FOR i: = N TO K DO P где i — параметр цикла; N, K — начальное и конечное значения цикла соответственно; P — простой или составной оператор; I, N, K — переменные или константы целого типа.
Шаг изменения i равен 1. При K<N выполняется цикл с отрицательным шагом -1
FOR i: =N DOWNTO K DO P
Параметр цикла должен быть переменой порядкового типа. Начальное и
конечное значения параметра цикла должны быть того же типа, что и параметр цикла.
Оператор For существенно отличается от аналогичных операторов в дру-
гих языках программирования. Отличия следующие:
телом оператора For. Оператор может не выполниться ни разу, поскольку
проверка условия продолжения цикла выполняется до тела цикла;
шаг изменения параметра цикла постоянный и равен 1; тело цикла в операторе For представлено одним оператором. В том слу-
чае, если действие тела цикла требует более одного простого оператора, то эти
19
операторы необходимо превратить в один составной оператор посредством
;;...2;1 PNPP
операторных скобок (BEGIN-END);
Параметр цикла может быть только переменой порядкового типа.
2. Оператор цикла с постусловием
Оператор REPEAT работает следующим образом: сначала выполняются операторы тела цикла, после чего результат проверяется логического условия. Если результат ложь, то осуществляется возврат к выполнению операторов очередного тела цикла. Если результат истина, то оператор завершает работу.
Оператор Repeat имеет следующие особенности:
в Repeat проверяется условие завершения цикла и если условие выполня- ется, то цикл прекращает работу;
тело цикла всегда выполняется хотя бы один раз;
параметр для проверки условия изменяется в теле цикла;
операторы тела цикла не надо заключать в операторские скобки (BEGIN-
END), при этом роль операторных скобок выполняют Repeat и Until.
Формат оператора:
REPEAT
— тело цикла; UNTIL <условие>; где P1, P2, …PN — любые операторы.
3. Оператор цикла с предусловием
Оператор While работает следующим образом: вначале работы проверяет­ся результат логического условия. Если результат истина, то выполняется опе­ратор, после которого осуществляется возврат на проверку условия с новым значением параметров в логическом выражении условия. Если результат ложь, то осуществляется завершение цикла.
При работе с While надо обратить внимание на его свойства:
условия, использованные в While, являются условием продолжения цик- ла;
20