Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Информатика II

Покупка
Артикул: 769588.01.99
К покупке доступен более свежий выпуск Перейти
В учебном пособии по дисциплине «Информатика II» рассмотрены основы алгоритмического подхода для создания программ, основы языка программирования Free Pascal. Пособие снабжено большим количеством примеров, иллюстрирующих рассматриваемый материал. Учебное пособие по дисциплине «Информатика II» предназначено для студентов факультета дистанционного обучения ТУСУРа.
Гураков, А. В. Информатика II : учебное пособие / А. В. Гураков, П. С. Мещеряков. - Томск : Эль-Контент, 2013. - 114 с. - ISBN 978-5-4332-0117-0. - Текст : электронный. - URL: https://znanium.com/catalog/product/1845863 (дата обращения: 26.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Министерство образования и науки Российской Федерации

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

А. В. Гураков, П. С. Мещеряков

ИНФОРМАТИКА II

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

Томск
«Эль Контент»
2013

УДК
004.4(075.8)
ББК
32.973.2-018.1
Г 950

Рецензенты:

Миньков Л. Л., докт. физ.-мат. наук, доцент кафедры математической физики
Национального исследовательского Томского государственного университета;

Абдалова О. И., ассистент, зам. зав. кафедрой прикладной математики
и информатики ТУСУРа.

Гураков А. В.
Г 950
Информатика II : учебное пособие / А. В. Гураков, П. С. Мещеряков. —
Томск : Эль Контент, 2013. — 114 с.

ISBN 978-5-4332-0117-0

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

Учебное пособие по дисциплине «Информатика II» предназначено для
студентов факультета дистанционного обучения ТУСУРа.

УДК
004.4(075.8)
ББК
32.973.2-018.1

ISBN 978-5-4332-0117-0
©
Гураков А. В.,
Мещеряков П. С., 2013

©
Оформление.
ООО «Эль Контент», 2013

ОГЛАВЛЕНИЕ

Введение
5

1
Основные понятия теории алгоритмов
7

2
Основы языка программирования Free Pascal
14

2.1
Алфавит языка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15

2.2
Структура программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17

2.3
Организация ввода/вывода данных . . . . . . . . . . . . . . . . . . . . .
21

2.4
Типы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23

2.5
Выражения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26

2.6
Операторы языка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31

2.6.1
Условный оператор . . . . . . . . . . . . . . . . . . . . . . . . . .
33

2.6.2
Оператор выбора . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42

2.6.3
Оператор цикла While..do . . . . . . . . . . . . . . . . . . . . . .
44

2.6.4
Оператор цикла Repeat..until . . . . . . . . . . . . . . . . . . . . .
47

2.6.5
Оператор цикла For . . . . . . . . . . . . . . . . . . . . . . . . . .
49

3
Структурированные типы данных Free Pascal
52

3.1
Массивы. Сортировки массивов . . . . . . . . . . . . . . . . . . . . . . .
52

3.2
Строки типа String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65

3.3
Записи. Оператор над записями With . . . . . . . . . . . . . . . . . . .
69

3.4
Файлы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71

4
Подпрограммы. Библиотеки подпрограмм Free Pascal
77

4.1
Подпрограммы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
77

4.2
Run-Time Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
83

4.3
Модули пользователя . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
88

5
Интегрированная среда программирования Free Pascal
96

5.1
Система Free Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
96

5.2
Настройка IDE Free Pascal для работы . . . . . . . . . . . . . . . . . . .
97

5.3
Редактирование исходного текста программ . . . . . . . . . . . . . . . .
99

5.4
Работа с файлами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

5.5
Компиляция и исполнение программ . . . . . . . . . . . . . . . . . . . . 102

Заключение
104

Литература
105

Оглавление

Приложение А Сообщения об ошибках в программе
106

Приложение Б
Сообщения при исполнении программы
108

Глоссарий
109

Предметный указатель
112

ВВЕДЕНИЕ

Языки программирования высокого уровня предназначены для записи алгоритмов в форме, более удобной для человека по сравнению с машинными языками,
низкоуровневыми и состоящими из одних цифр. С развитием информатики придумано огромное количество языков программирования, однако в настоящее время
используются немногие из них. Язык Pascal создал в 1970 году Никлаус Вирт
специально для начального обучения программированию. Язык назван в честь великого физика и математика Блеза Паскаля, первого изобретателя суммирующего
механического устройства (арифмометра).

Язык Pascal является универсальным, потому что на нём можно писать программы для обработки данных различных видов (числовых, текстовых), как простых, так и организованных в сложные структуры. На нём можно записывать алгоритмы самых различных видов и самой разной сложности.

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

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

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

В приложении приводятся сообщения об основных ошибках, выводимых системой Free Pascal при трансляции и выполнении программы.

При необходимости для более полного изучения языка Free Pascal следует
обратиться к дополнительной литературе.

При изучении данного пособия рекомендуется набирать примеры программ на
компьютере, запускать их на исполнение, вносить изменения для проверки неяс
Введение

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

Соглашения, принятые в книге

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

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Эта пиктограмма означает определение или новое понятие.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

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

. . .. . . . . . . . . . . . . . . . . . . . . .
Пример
. . .. . . . . . . . . . . . . . . . . . . . . .

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

. . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Контрольные вопросы по главе
. . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Глава 1

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

Наверняка можно утверждать, что каждый знаком с термином «алгоритм». Его
применяют весьма широко не только в области вычислительной техники и программирования. Также несомненно и то, что у каждого сформировалось своё (пусть
даже большей частью интуитивное) понимание смысла этого термина.

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

Конечно, это нестрогое определение понятия алгоритма, и именно попытки
сформулировать такое понятие привели к возникновению теории алгоритмов.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Теория алгоритмов — это раздел математики, изучающий общие
свойства алгоритмов. С возникновением и развитием вычислительной техники и смежных наук выяснилось, что в основе этих
наук должна лежать теория алгоритмов.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

В рамках теории алгоритмов можно дать следующие основные определения:

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Алгоритм — это точное предписание, которое задаёт алгоритмический процесс, начинающийся с произвольного исходного данного (из некоторой совокупности возможных исходных данных)
и направленный на получение полностью определённого этим исходным данным результата.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Глава 1. Основные понятия теории алгоритмов

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Алгоритмический процесс — это процесс последовательного преобразования конструктивных объектов (слов, чисел, пар слов, пар
чисел, предложений и т. п.), происходящий элементарными «шагами». Каждый шаг состоит в смене одного конструктивного
объекта другим.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Поскольку алгоритмы могут применяться к произвольным объектам (числам,
буквам, словам, логическим выражениям и т. п.), в определении алгоритмического
процесса используется специальный термин — «конструктивный объект», объединяющий в себе все эти возможные случаи.

В основе понятия «алгоритм» лежит идея построения алгоритмической модели. Составляющими такой модели должны быть конкретный набор элементарных
шагов, способы определения следующего шага и т. д. От модели также требуется
простота и универсальность. Требование простоты важно для того, чтобы выделить
действительно необходимые элементы и свойства алгоритма и облегчить доказательства общих утверждений об этих свойствах. Универсальность необходима для
того, чтобы модель позволяла описать любой алгоритм.

В результате теоретических исследований разработаны различные классы алгоритмических моделей [1], которые здесь рассматриваться не будут. На практике
же в программировании очень часто используется описание алгоритмов в виде
блок-схем.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Блок-схема — это композиция ориентированных элементарных
схем.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Любая программа для ЭВМ может быть представлена блок-схемой.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Структурное программирование — это процесс разработки алгоритмов с помощью блок-схем.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

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

Рис. 1.1 – Составляющие блок-схемы.
Стрелками показывается направление выполняемых действий

Структурное программирование сверху вниз — это процесс программирования
сверху вниз, ограниченный использованием блок-схем.

Существует большое количество всевозможных приёмов и методов разработки
алгоритмов. Однако среди имеющегося разнообразия можно выделить два основных метода, в том смысле, что они применяются часто и лежат в основе многих
процедур и алгоритмов. Можно утверждать, что знание приводимых ниже методов
необходимо для любого программиста.

Рассмотрим первый метод — метод частных целей, общая формулировка которого звучит: «Необходимо свести трудную задачу к последовательности более простых задач». Приведённая формулировка выглядит столь естественной и разумной,
что не вызывает возражений. Более того, любой человек очень часто использует
этот метод решения стоящих перед ним задач, при этом даже не догадываясь (или
не отдавая себе отчёта) об имеющемся у метода названии. С другой стороны, в конкретной сложной задаче часто очень трудно указать способ её разбиения на набор
более простых задач. Здесь большое значение имеет опыт и искусство специалиста.
Тем не менее, несмотря на общность метода и отсутствие «точного рецепта» его
применения, очень важно освоить этот метод, так как он лежит в основе решения
многих задач и по своей сути составляет основу алгоритмизации и программирования. Именно с вопроса «Можно ли данную задачу разбить на последовательность
более простых задач?» и нужно начинать разработку простого алгоритма.

Метод подъёма является вторым методом, который, как и предыдущий, можно
отнести к одному из общих «рецептов» разработки алгоритмов. Его суть заключается в следующей процедуре. Строятся решения задачи для нескольких частных

Глава 1. Основные понятия теории алгоритмов

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

Для иллюстрации применения методов частных целей и подъёма разберём
алгоритм следующей задачи.

. . . . . . . . . . . . . . . . . . . . . .
Пример 1.1
. . . . . . . . . . . . . . . . . . . . .

Найти минимальный элемент и вычислить сумму элементов главной диагонали
квадратной матрицы

M =

⎡⎢⎢⎢⎢⎢⎢⎢⎣

m1
1
m2
1
...
mn
1
m1
2
m2
2
...
mn
2
...
...
...
...
m1
n
m2
n
...
mn
n

⎤⎥⎥⎥⎥⎥⎥⎥⎦

.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Очевидно, что задача разбивается на части:
1) найти минимальный элемент;

2) вычислить сумму элементов главной диагонали.
Первым шагом алгоритма нахождения минимального элемента является задание начального значения минимума. Это значение должно выбираться из диапазона значений элементов матрицы M, например min = m1
1, где min — переменная для
значения минимального элемента. Затем min сравнивается с элементом m2
1, если
min оказывается больше m2
1 тогда min = m2
1, и т. д. Сравнение min должно быть
последовательно произведено со всеми элементами матрицы M с запоминанием
минимального значения.

Представим алгоритм решения первой подзадачи в виде блок-схемы (рис. 1.2).
Для обозначения номеров строки и столбца матрицы M вводятся переменные i и j
соответственно.

Первое условие i ⩽ n (по ходу стрелок в блок-схеме) совместно с оператором
i = i + 1 реализует алгоритмическую конструкцию — цикл, который отвечает за увеличение номера строки матрицы. Второй цикл (j ⩽ n с j = j+1), вложенный в первый
цикл, увеличивает номер столбца. При помощи такой конструкции осуществляется
перебор элементов матрицы и их сравнение со значением, хранящимся в min.

Для решения второй подзадачи рассмотрим матрицы.

M1 = [m1
1
m2
1
m1
2
m2
2
]
и
M2 =

⎡⎢⎢⎢⎢⎢⎣

m1
1
m2
1
m3
1
m1
2
m2
2
m3
2
m1
3
m2
3
m3
3

⎤⎥⎥⎥⎥⎥⎦

.

Сумма элементов главной диагонали матрицы M1 вычисляется как

sum1 = m1
1 + m2
2,
(1.1)

а матрицы M2 —

sum2 = m1
1 + m2
2 + m3
3.
(1.2)

Рис. 1.2 – Блок-схема алгоритма поиска
минимального элемента двухмерной матрицы

Анализируя выражения (1.1) и (1.2), видим, что сумма элементов главной диагонали складывается из элементов с одинаковыми номерами строки и столбца.
Тогда, обобщая для матрицы M размера [n × n], можно записать

sum = m1
1 + m2
2 + ... + mn
n =

n
∑
i=1
mi
i.
(1.3)

Блок-схема алгоритма вычисления суммы по формуле (1.3) представлена на
рис. 1.3. В единственном цикле по i происходит накапливание суммы элементов
матрицы за счёт последовательного прибавления значения элемента с одинаковыми
номерами строки и столбца к текущему значению переменной sum. Поэтому sum
должна быть обнулена перед входом в цикл.

Глава 1. Основные понятия теории алгоритмов

Рис. 1.3 – Блок-схема алгоритма вычисления
суммы элементов главной диагонали матрицы

Окончательная блок-схема алгоритма решения поставленной задачи приведена
на рис. 1.4. При подстановке в неё блок-схем с рис. 1.2 и 1.3 блоки, обозначающие
«Начало» и «Конец» алгоритма, можно опустить.

В заключение первой главы необходимо заметить, что многие стандартные
алгоритмы (а программы составляются именно из стандартных, несколько видоизменённых в зависимости от задачи блоков) разобраны в учебнике [2], который
рекомендуется для изучения.

К покупке доступен более свежий выпуск Перейти