- •1.1. Основные этапы создания программы
- •1.2. Алгоритмы
- •2.1. Структура типов в Turbo Pascal
- •Стандартные скалярные типы. Типы целых чисел
- •2.3. Операции побитовой обработки
- •2.4. Представление вещественных чисел в эвм
- •2.5. Символьный тип
- •2.6. Булевский тип
- •2.7. Перечисленный тип
- •2.8. Интервальный тип (диапазон)
- •3.1. Структура программы на turbo pascal
- •3.2. Основные операторы языка
- •3.2.1. Простые операторы
- •3.2.2. Операторы ввода-вывода
- •3.2.3. Структурные операторы
- •3.2.4. Условные операторы
- •3.2.5. Операторы повтора (цикла)
- •4.1. Массивы
- •4.2. Строковый тип
- •4.3. Множества
- •5.1. Процедуры и функции
- •5.2. Процедуры и функции пользователя
- •5.3. Передача параметров по значению и по ссылке
- •5.4. Рекурсивные процедуры и функции
- •6.1. Структура модулей
- •6.2. Компиляция и использование модулей
- •7.1. Записи
- •7.2. Вложенные записи
- •7.3. Записи с вариантами (вариантные записи)
- •7.4. Файлы
- •7.5. Подпрограммы для работы с файлами
- •7.5.1. Процедуры
- •7.5.2. Функции
- •7.6. Примеры программ для обработки файлов
- •7.7. Текстовые файлы
- •8.1. Структура оперативной памяти для программ на Turbo Pascal
- •8.2. Динамические структуры данных
- •8.3. Основные процедуры и функции для работы с динамическими переменными
- •8.4. Динамика выделения памяти в куче
- •8.5. Линейные списки. Способы создания и обработки
- •8.6. Нелинейные списки. Способы создания и обработки
- •Библиографический список
- •Оглавление
- •394026 Воронеж, Московский просп., 14
1.2. Алгоритмы
Алгоритм – это заранее заданная последовательность четко определенных правил или команд для получения решения за конечное число шагов. Основные свойства алгоритма:
- вход алгоритма;
- выход алгоритма;
- определенность его шагов;
- выполнимость;
- конечность;
- эффективность;
- универсальность;
- элегантность.
Определенность его шагов – инструкция должна быть определена четко и недвусмысленно. Например, инструкция:
если
является определенной, а инструкция:
если
не определена при
.
6
Выполнимость – алгоритм выполним, если включенные в
него
операции достаточно элементарны, чтобы
их за конечное время мог выполнить
человек, вооруженный карандашом и
бумагой. То, что простота, с которой
написана инструкция, не определяет его
выполнимость видно из следующего
примера: присвоить
значение, равное наибольшему вещественному
числу, меньшему единицы. Эту инструкцию
выполнить невозможно потому что, какое
бы значение мы не выбрали, всегда можно
указать число, большее выбранного путем
добавления любой цифры к десятичной
записи числа:
.
Конечность – алгоритм заканчивается за конечное число шагов. Пример бесконечного алгоритма:
;
;
.
Эффективность – алгоритм будет эффективным, если он производит вычисления максимально быстро и использует при этом минимально возможный объем памяти. Сочетание этих двух требований является противоречивым. Эффективность оценивается по отношению к другим алгоритмам, по отношению к ресурсам и никогда не бывает абсолютной.
Нельзя
использовать первый пришедший в голову
алгоритм, не рассмотрев альтернативных
вариантов. Например, необходимо найти
сумму
первых натуральных чисел. Алгоритм
решения этой задачи может быть представлен
так:
![]()
![]()
![]()
![]()
Более внимательное рассмотрение приводит к выводу, что натуральный ряд является арифметической прогрессией, и
7
сумма
членов этого ряда может быть определена
по формуле:
.
Универсальность – способность алгоритма решать широкий класс задач. Критерий универсальности и критерий эффективности противоречивы. Алгоритм для решения конкретной задачи может выиграть за счет особенностей данной задачи и быть эффективным, а универсальность снижает эффективность.
Элегантность
– весьма субъективное понятие. Элегантное
решение – это сочетание простоты и
оригинальности. Под оригинальностью
понимается его неочевидность. Например,
поменять значения двух переменных
можно без копирования, воспользовавшись
следующим алгоритмом:
![]()
![]()
![]()
Ниже приведено содержание ячеек памяти, соответствующее каждому шагу алгоритма:
Начальное
состояние:
![]()
Шаг
1.
![]()
Шаг
2.
Шаг
3.
![]()
Способы записи алгоритмов. Для записи алгоритмов можно воспользоваться следующими способами:
-
Запись алгоритмов на естественном языке.
2. Использование псевдокода (полуформального языка с ограниченным словарем, промежуточного между естественным языком и языком программирования). Псевдокод удобен тем, что позволяет программисту сосредоточиться на формулировке алгоритма, не задумываясь над синтаксическими особенностями конкретного языка программирования.
8
3. Запись алгоритма в виде структурной схемы. Для этого
используются специальные графические символы, подробное описание которых можно найти в [3].
Рассмотрим примеры разработки алгоритмов для решения следующих задач.
Задача 1. Разработать алгоритм для нахождения суммы членов бесконечного ряда
.
Суммирование
прекращать, если абсолютная величина
очередного члена ряда станет меньше
заданной погрешности
.
Решение.
В качестве входных переменных будут
выступать значение
и заданная погрешность
.
Задачу можно разбить на ряд
самостоятельных подзадач. Первая
подзадача – это возведение числа
в заданную целочисленную степень
,
то есть умножение
само на себя
раз. Вторая подзадача – нахождение
,
то есть вычисление по формуле
.
Определим
начальные значения переменных
и
:
в качестве начального значения суммы
целесообразно взять значение первого
члена ряда (
),
а начальному номеру очередного
суммируемого члена
придать значение 1 (
).
Тогда обобщенный алгоритм решения этой задачи будет выглядеть так:
-
Задать значения
и

-
Установить начальные значения:
и

-
Вычислить значение

4.
Вычислить значение
![]()
5.
Вычислить значение очередного члена
ряда
![]()
9
6.
Если
,
то перейти к шагу 7. В противном случае
перейти к шагу 8;
7.
;
;
перейти к шагу 3;
8.
Вывести значение
;
Детализируем
алгоритм вычисления
(шаг
3).
3.1.
Задать начальные значения переменным
;
3.2.
Вычислить
;
3.3.
Если
.
Перейти к шагу 3.2. В противном случае
перейти к шагу 4;
Детализируем
алгоритм вычисления
(шаг 4).
4.1.
Задать начальные значения переменным
;
4.2.
Вычислить
;
4.3.
Если
.
Перейти к шагу 4.2. В противном случае
перейти к шагу 5.
Полный алгоритм решения задачи будет выглядеть так:
-
Задать значения
и
; -
Установить начальные значения:
и
;
3.
Вычислить значение
;
3.1.
Задать начальные значения переменным
;
3.2.
Вычислить
;
3.3.
Если
.
Перейти к шагу 3.2. В противном случае
перейти к шагу 4;
4.
Вычислить значение
;
4.1.
Задать начальные значения переменным
;
4.2.
Вычислить
;
4.3.
Если
.
Перейти к шагу 4.2.
10
В противном случае перейти к шагу 5.
5.
Вычислить значение очередного члена
ряда
;
6.
Если
,
то перейти к шагу 7. В противном случае
перейти к шагу 8;
7.
;
;
перейти к шагу 3;
8.
Вывести значение
;
Задача
2. Дано натуральное число
.
Сколько цифр в числе
?
Для подсчета количества цифр в числе необходимо целочисленно разделить данное число на 10, полученный результат снова разделить на 10 и так до тех пор, пока результат целочисленного деления не станет равным нулю.
Алгоритм решения этой задачи будет выглядеть так:
1.
Задать исходное число
;
2. Установить начальное значение счетчика количества цифр в числе, равным нулю;
3.
Найти результат целочисленного деления
на 10:
;
4.
Если
,
то
;
.
Перейти к шагу 3. В противном случае
перейти к шагу 5.
5.
Вывести значение
.
Контрольные вопросы и упражнения
-
Перечислите основные этапы разработки программы и охарактеризуйте каждый из них.
2. Перечислите основные свойства алгоритма и дайте пояснения по каждому из них.
3. Дайте характеристику способам записи алгоритмов.
4. Для следующих задач разработать алгоритм решения и представить его в виде структурной схемы:
11
4.1. Треугольник задан координатами своих вершин. Найти периметр треугольника и его площадь.
4.2. Даны три произвольных числа. Определить, можно ли построить треугольник с такими длинами сторон.
4.3. Определить, равен ли квадрат заданного трехзначного числа кубу суммы цифр этого числа.
4.4.
Дано натуральное число
.
Выяснить входит ли цифра 3 в запись
числа
.
4.5.
Даны целые числа
.
Вычислить
.
4.6.
Дано натуральное число
.
Вычислить
.
4.7.
Дано натуральное число
.
Определить, чему равна сумма цифр в
числе
.
4.8.
Дано натуральное число
.
Вычислить произведение первых
сомножителей:
.
4.9.
Дано действительное число
![]()
.
Вычислить
.
4.10.
Дано натуральное число
и действительное число
.
Вычислить:
.
4.11. Дано натуральное число k. Найти k-ую цифру последовательности, в которой идут подряд квадраты всех натуральных чисел. Последовательность предварительно не формировать.
4.12. Автобусные билеты пронумерованы от 000001 до
999999. Найти номера всех счастливых билетов в заданном диапазоне.
12
4.13.
Куб любого натурального числа
равен сумме
нечетных чисел, следующих по порядку
за числами, сумма которых составила куб
числа
:
,
,
,
,
.
Основываясь на этом свойстве, разработать алгоритм получения таблицы кубов натуральных чисел.
4.14.
В книге
страниц. Определить, сколько цифр
потребуется для нумерации всех страниц
этой книги.
4.15.
Для нумерации страниц книги потребовалось
цифр. Определить количество страниц в
книге.
4.16.
Дано целое число
.
Записываем это число в двоичной системе
счисления и циклически сдвигаем вправо,
то есть, берем последнюю цифру числа и
переносим ее в начало. Для заданного
числа
определить максимальное значение числа,
которое получится в результате таких
сдвигов.
4.17. Разработать алгоритм перевода числа из десятичной системы в системы счисления с основаниями 3 и 5.
4.18. Найти все трехзначные числа, в десятичной записи которых нет одинаковых цифр. Найденные трехзначные числа расположить в порядке возрастания.
4.19. Определить число, получаемое выписыванием в обратном порядке цифр заданного натурального числа.
4.20. Определить, является ли заданное натуральное число палиндромом, то есть таким, десятичная запись которого читается одинаково слева направо и справа налево.
13
ЗАНЯТИЕ 2. ТИПЫ ПЕРЕМЕННЫХ В TURBO PASCAL
