Технология программирования

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО

ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ НЕФТЕГАЗОВЫЙ УНИВЕРСИТЕТ»

Р. К. АХМАДУЛИН

ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ

Учебное пособие

Тюмень 2008

УДК 681.3.06

Ахмадулин  программирования: Учебное пособие. – Тюмень: ТюмГНГУ, 2008. – 128 с.

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

Предназначено для использования в учебном процессе Тюменского государственного нефтегазового университета для специальности 230201 – «Информационные системы и технологии (в геологии и нефтегазодобыче)» в рамках дисциплины «Технология программирования» и для самостоятельной работы.

Табл. 13, библ. 9 назв.

Рецензенты:

, к. т.н., старший преподаватель кафедры информационных систем Тюменского государственного университета

, к. ф.н., доцент кафедры геоинформатики Тюменского государственного нефтегазового университета

ISBN 0029-3

© Государственное образовательное учреждение высшего профессионального образования
«Тюменский государственный нефтегазовый университет», 2008


Оглавление


§1. Основные понятия.......................................................................

4

§2. Типы данных...............................................................................

9

§3. Операции и выражения...............................................................

13

§4. Структура программы................................................................

21

§5. Переменные и константы. Оператор присваивания..................

28

§6. Процедуры ввода и вывода........................................................

35

§7. Условный оператор и оператор выбора. Оператор перехода..

41

§8. Операторы цикла........................................................................

47

§9. Пример использования циклов...................................................

54

§10. Массивы.....................................................................................

60

§11. Алгоритмы сортировки............................................................

67

§12. Строковый тип...........................................................................

71

§13. Записи........................................................................................

74

§14. Множества.................................................................................

80

§15. Процедуры и функции..............................................................

85

§16. Модули......................................................................................

98

§17. Файлы........................................................................................

105

§18. Типизированные файлы............................................................

110

§19. Нетипизированные файлы........................................................

116

§20. Текстовые файлы.......................................................................

118

§21. Ссылки и указатели...................................................................

121

Рекомендуемая литература...............................................................

127


§1. Основные понятия

Обычный разговорный язык состоит из четырех основных элементов: символов, слов, словосочетаний и предложений. Язык программирования, в частности Паскаль, также содержит подобные элементы, только слова называют элементарными конструкциями, словосочетания – выражениями, а предложения – операторами.

НЕ нашли? Не то? Что вы ищете?

Символы языка – это основные неделимые знаки, в терминах которых пишутся все тексты на языке (например, v, a, l, u, e, 2, 5, 4, +, /).

Элементарные конструкции – это минимальные единицы языка, имеющие самостоятельный смысл (например, value). Элементарные конструкции образуются из последовательности символов.

Выражение задает правило вычисления некоторого значения (например, 2+5/4). Выражения представляют собой последовательность элементарных конструкций и символов.

Оператор задает полное описание некоторого действия, которое необходимо выполнить (например, value:=2+5/4). Оператор представляет собой последовательность выражений, элементарных конструкций и символов.

Описание языка программирования есть описание четырех указанных выше элементов.

Описание символов заключается в перечислении допустимых символов языка. Под описанием элементарных конструкций понимают правила их образования. Описание выражений – это правила образования любых выражений, имеющих смысл в данном языке. Описание операторов состоит из рассмотрения всех типов операторов, допустимых в языке.

Описание каждого элемента языка задается его синтаксисом и семантикой.

Синтаксические определения устанавливают правила построения элементов языка. Синтаксис проверяет компилятор – программа, преобразующая Ваш исходный текст на языке программирования в исполняемый код, понятный для компьютера (например, файл .exe). Если в исходном тексте программы имеется синтаксическая ошибка, то Вы не сможете запустить программу до тех пор, пока не устраните ошибку.

Семантика определяет смысл и правила использования тех элементов языка, для которых были даны синтаксические определения. Поиском таких ошибок занимается сам программист. Если при вычислении суммы чисел он по ошибке записал вместо знака «+» знак
«–», то с точки зрения синтаксиса все будет корректно и программа запустится. Однако полученный результат будет неверным, что может привести к непредсказуемым последствиям.

Действия, заданные операторами, выполняются над данными. Предложения языка, в которых даются сведения о типах данных, константах, метках и т. п., называются описаниями или неисполняемыми операторами.

Объединенная единым алгоритмом совокупность описаний и операторов образует программу на языке программирования.

Хочется отметить, что компьютер выполняет лишь то, что Вы ему прикажете, а не то, что Вы захотите. Если Вы захотите попить кофе, но вместо сахара по ошибке положите в чашку две ложки соли, то таким образом Вы лишь испортите одну порцию напитка. Точно так же и при разработке программ: если Вы хотите вычислить значение какой-либо функции, то Вы должны четко прописать правильную последовательность шагов, которая приведет к желанному результату. Будьте внимательны: прежде чем писать текст на языке программирования, подумайте, что именно Вы хотите получить в итоге и как этого можно достичь.

Основные символы языка Паскаль

Основные символы языка программирования – это буквы, цифры и специальные символы. Паскаль включает следующий набор основных символов:

1)  26 латинских строчных и 26 латинских прописных букв:

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

2)  символ подчеркивания: _

3)  10 цифр: 8 9

4)  знаки операций (обратите внимание – некоторые символы в Паскаль являются составными, т. е. состоят из нескольких символов. Например, <> ):

+ - * / = <> < > <= >= := @

5)  ограничители:

. , ' ( ) [ ]{ } (* *) .. : ;

6)  спецификаторы:

^ # $

7)  служебные (зарезервированные) слова. Список указанных слов можно найти в справочной литературе.

Элементарные конструкции языка Паскаль

Элементарные конструкции языка Паскаль включают в себя имена, числа и строки.

Имена (идентификаторы) называют элементы языка – константы, метки, типы, переменные, процедуры, функции, модули, объекты.

Имя – это последовательность букв и цифр, начинающаяся с буквы. В именах может использоваться символ «подчеркивание» (в том числе и на первой позиции). Имя может содержать произвольное количество символов, но значащими являются первые 63 символа.

Не разрешается в языке Паскаль использовать в качестве имен служебные слова и стандартные имена, которыми названы стандартные константы, типы, процедуры, функции и файлы.

Для улучшения наглядности программы в нее могут вставляться пробелы. По крайней мере один пробел требуется вставить между двумя последовательными именами, числами или служебными и стандартными именами. Пробелы нельзя использовать внутри имен и чисел.

Примеры: A b12 r1m SIGMA gamma I80_86

Числа в языке Паскаль обычно записываются в десятичной системе счисления. Они могут быть целыми и действительными. Положительный знак числа может быть опущен. Целые числа записываются в форме без десятичной точки.

Примеры: +483

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

Примеры: 24.0 5Е12 -1.72Е9 73.1Е-16

Паскаль допускает запись целых чисел и фрагментов вещественных чисел в форме с порядком в шестнадцатеричной системе счисления. В этом случае используется специальный символ $.

Примеры: $7F $40 $ABC0

Строки в языке Паскаль – это произвольная последовательность символов, записанная между апострофами (не следует их путать со строками исходного текста программы). Если в строке в качестве содержательного символа необходимо употребить сам апостроф, то следует записать два апострофа.

Примеры: 'СТРОКА' 'STRING' 'ПРОГРАММА' 'АД''ЮТАНТ'

Примеры записи чисел и выражений на языке Паскаль

1) Записать на Паскале следующие числа: 7; 5,18;

Запись числа 7 не изменится. Запись числа 5,18 будет отличаться лишь символом-разделителем целой и дробной части: в Паскале для этих целей используется точка, т. е. 5.18. можно записать в десятичной форме, т. е. 0.001, или в экспоненциальной: 1E-3.

2) Записать в общепринятой форме: 1.23; 2.1E1; 6.66E-3

В записи 1-го числа вместо точки появится запятая, т. е. 1,23. 2.1E1 и 6.66E-3 – это записи в экспоненциальной форме. Преобразовав их в общепринятую форму, получим 21 (2.1·10) и 0.00666 (6.66*10-3).

3) Записать на Паскале следующие формулы:

а) a+bx+cyz

В Паскале нельзя пропускать символы операций, т. е. нельзя записать bx. Кроме того, символ умножения отличается от привычной формы. В итоге получаем: a+b*x+c*y*z.

б) 

На Паскале не удастся записать числа в виде дроби. После их преобразований в строчную форму получим: a/(b*c)+(b*c)/a. Раскрыв скобки, можно получить: a/b/c+b*c/a.

Вопросы для самопроверки

1. Что понимают в языках программирования под символами, элементарными конструкциями, выражениями и операторами?

2. Какие ошибки в коде программы может обнаружить компилятор: синтаксические или семантические?

3. Какие элементарные конструкции языка Паскаль Вы знаете?

4. Как на языке Паскаль в строке записать символ апостроф « ‘ »?

5. Как будет выглядеть запись числа 2,5 на языке Паскаль?

6. Что означает запись $ABC на языке Паскаль?

§2. Типы данных

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

При обработке данных с помощью компьютера такая классификация еще более важна. Любая переменная или константа, результат любого вычисления относится к определенному типу.

Тип данных, в свою очередь, определяет:

·  формат представления данных;

·  множество допустимых значений;

·  множество допустимых операций.

В языке Паскаль существуют скалярные и структурированные типы данных. К скалярным типам относятся стандартные типы и типы, определяемые пользователем. Стандартные типы включают целые, вещественные, символьный, логические и адресный типы. Типы, определяемые пользователем, перечисляемый и интервальный.

К структурированным типам относятся массивы, записи и т. п. Более подробно такие типы данных будут рассмотрены позже.

Далее рассмотрим, что из себя представляют скалярные типы данных.

Целые типы

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

Тип

Допустимые значения

Формат

Integer

-32768 … 32767

2 байта со знаком

ShortInt

-128 … 127

1 байт со знаком

LongInt

4 байта со знаком

Byte

0

1 байт без знака

Word

0 … 65535

2 байта без знака

Так, например, оценку студента по физике (от 0 до 100) позволит сохранить любой из перечисленных целых типов. Однако лучше всего для этого выбрать тип ShortInt или Byte, т. к. они занимают меньше всего места в памяти (1 байт). В то же время ни один из перечисленных типов не позволит сохранить среднюю оценку группы по физике, т. к. обычно такая оценка имеет дробную часть и не относится к категории целых.

Вещественные типы

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

Тип

Допустимые значения

Точность

Формат

Real

2.9*10*1038

11-12 знаков

6 байт

Single

1.5*10*1038

7-8 знаков

4 байт

Double

5.0*10-*10308

15-16 знаков

8 байт

Extended

3.4*10-4*104932

19-20 знаков

10 байт

Comp

-

19-20 знаков

8 байт

Для вещественных чисел возможна запись в экспоненциальной форме.

Тип Real определен в стандартном Паскале и математическим сопроцессором не поддерживается. Остальные действительные типы определены стандартом IEEE 457 и реализованы на всех современных компьютерах.

Тип Comp хотя и относится к действительным типам, хранит только длинные целые значения.

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

Символьный тип

Символьный тип – Char, предназначен для хранения одного символа (буква, цифра, знак, код).

В переменную типа Char может быть помещён любой из 256 символов расширенного кода ASCII (American Standart Code for Interface Interchange; Американский Стандартный Код для Обмена Информацией).

Сама символьная константа может записываться в тексте программы несколькими способами, например:

·  как один символ, заключенный в апострофы, например: 'A', 'а', 'Ю', 'ю';

·  с помощью конструкции вида #K, где K – это код символа в таблице ASCII, при этом значение K должно находиться в пределах 0..255.

Логический тип

Логический тип – Boolean, определяет те данные, которые могут принимать логические значения True (истина) и False (ложь).

Например, результатом выражения 2 > 5 будет ложь, а 3 = 3 – истина. Также логический тип пригодится, чтобы хранить наличие домашнего задания у студента (выполнил или не выполнил, т. е. истина или ложь).

В Турбо Паскаль введены еще разновидности логического типа: ByteBool, WordBool и LongBool, которые занимают в памяти ЭВМ один, два и четыре байта соответственно и необходимы для совместимости с другими языками программирования.

Отметим также, что True кодируется как 1, а False как 0.

Скалярные типы, определяемые пользователем

Интервальный тип данных определяется посредством задания подмножества значений одного из ранее определенных в программе типов (за исключением вещественного). При задании диапазона указываются наименьшее и наибольшее значения, между которыми ставится две точки без пробела.

Пример: 1..100; ‘a’..’z’; ‘0’..’9’;

Перечисляемый тип определяется как упорядоченный набор идентификаторов, заданный путем их перечисления. При этом список идентификаторов, разделенных запятой, указывается в круглых скобках. Переменные перечисляемого типа могут участвовать в логических выражениях, но не могут выводиться на экран с помощью процедур Write и WriteLn.

Пример: (Monday, Tuesday, Wednesday, Thursday, Friday);

Вопросы для самопроверки

1. Что определяют типы данных в языке программирования?

2. Чем отличаются целые типы данных вещественных?

3. Какие целые типы данных языка Паскаль Вы знаете?

4. Для чего нужен тип Char?

5. Какие значения могут принимать переменные типа Boolean?

§3. Операции и выражения

Под операциями понимают некоторые стандартные действия, которые применимы для переменных того или иного типа. Все операции можно разделить на:

·  арифметические (математические);

·  операции отношения;

·  логические;

·  операции с символами и строками;

·  операции над множествами;

·  операции получения адреса.

К арифметическим операциям относятся сложение (знак +), вычитание (знак -), умножение (знак *) и деление (знак /). Результатом деления всегда будет вещественное число. Тип результата остальных операций зависит от операндов: если оба операнда целого типа, то и результат целый, иначе – вещественный.

Примеры:

2+3 – сложение, оба операнда целого типа, результат – целый (5);

4.2*2 – умножение, первый операнд вещественного типа, результат – вещественный (8.4);

3.4-0.4 – вычитание, оба операнда вещественного типа, результат – вещественный (3.0);

8/4 – деление, результат вещественного типа (2.0).

Также над целыми операндами можно выполнять целочисленное деление (div) и получение остатка от деления (mod). В первом случае результат есть целая часть частного. Во втором – остаток от деления целых. Результат в обоих случаях будет целого типа.

Примеры:

17 div 2 = 8 – результат обычного деления – 8.5, целая часть – 8;

17 mod 2 = 1 – ближайшее снизу от 17 целое, которое можно поделить на 2 без остатка – 16, 17-16=1;

23 div 5 = 4 – результат обычного деления – 4.6, целая часть – 4;

23 mod 5 = 3 – ближайшее снизу от 23 целое, которое можно поделить на 5 без остатка – 20, 23-20=3;

4 div 7 = 0 – результат обычного деления – 0.57, целая часть – 0;

4 mod 7 = 4 – ближайшее снизу от 4 целое, которое можно поделить на 7 без остатка – 0, 4-0=4.

В языке Паскаль имеются следующие операции отношения: равенство (=), неравенство (<>), больше (>), меньше (<), больше или равно (>=), меньше или равно (<=).

Операции отношения дают результат логического типа (True или False). Они применимы к целым, вещественным и логическим (False < True) операндам, а также к величинам символьного типа (больше тот символ, у которого больше код согласно таблице ASCII).

Примеры:

5>3 – результат True 9.2<4.1 – результат False

False=False – результат Truea’>’z’ – результат False

Для проверки, делится ли произведение чисел x и y на их сумму, можно записать: (x * y) mod (x + y) = 0, т. е. в таком случае остаток от деления произведения чисел на их сумму должен быть равен 0.

К логическим операндам применимы логические операции: логическое И (and), логическое ИЛИ (or), логическое исключающее ИЛИ (xor) и логическое НЕ (not).

Ниже приводятся таблицы, по которым можно определить результат логического выражения. Логическое И возвращает истину только в том случае, когда оба операнда истинны, логическое ИЛИ – когда истинен хотя бы один из двух операндов. Логическое исключающее ИЛИ возвращает истину в том случае, если один операнд – истина, а второй – ложь. Логическое НЕ, в отличие от других логических операций, используется лишь с одним операндом и возвращает противоположный результат.

Логическое И

Логическое ИЛИ

AND

True

False

OR

True

False

True

True

False

True

True

True

False

False

False

False

True

False

Логическое исключающее ИЛИ

Логическое НЕ

XOR

True

False

NOT

True

False

True

True

False

False

True

False

False

True

Примеры:

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6