Файл: Особенности и примеры использования массивов при разработке программ (Способы описания алгоритмов).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 30.03.2023

Просмотров: 255

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ВВЕДЕНИЕ

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

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

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

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

Предмет исследования – массивы данных в Дельфи.

Цель курсовой работы – изучение использования массивов данных в программировании, написание и отладка программ с использованием массивов на языке Дельфи 7.

При достижении цели курсовой работы решены задачи:

  • изучены основы алгоритмизации задач;
  • проведен обзор языков программирования высокого уровня, включая и язык Дельфи;
  • рассмотрено применение массивов одномерных и многомерных в Дельфи;
  • написана и отлажена программа massiv.pas, использующая одномерный массив;
  • написана и отлажена программа massiv2.pas, использующая двумерный массив.

При подготовке работы использовались учебное пособие «Основы алгоритмизации и программирования» Г.Р. Кадыровой; «Программирование и основы алгоритмизации» авторов А.Г. Аузяк, Ю.А. Богомолов, А.И. Маликов, Б.А. Старостин; учебники Фаронова В.В. «Delphi. Программирование на языках высокого уровня»; Осипова Д.Л. «Delphi. Программирование для Windows, OS X, iOS и Android» и другие.

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

Понятие алгоритмов

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

Данное определение алгоритма не считается строгим - не вполне ясно, что такое «точное предписание» или «последовательность действий, обеспечивающая получение требуемого результата». [5, с. 6-7]

Поэтому обычно формулируется несколько общих свойств алгоритмов, отличающих алгоритмы от других инструкций. Такие свойства представлены: [6, c. 8-9]


  • Дискретностью (прерывностью, раздельностью) - алгоритм должен быть процессом решения задачи в виде последовательного выполнения простых шагов. Каждое действие алгоритма выполняется только после конца исполнения предыдущего.
  • Определенностью - каждое правило алгоритма должно быть четко, однозначно и без произвола. Благодаря определенности выполнение алгоритма происходит механически и не нужны никакие дополнительные указания или сведения о решаемой задаче.
  • Результативностью (конечностью) - алгоритм должен решать задачу за конечное количество шагов.
  • Массовостью - алгоритм решения задачи разрабатывают в общем виде с целью применения для однотипного класса задач с различными исходными данными, выбираемыми из некой области, называемой областью применимости алгоритма. [1, c. 8-9]

Выражение «свойства алгоритма» является не совсем корректным. Свойствами обладают объективно существующие реальности. Алгоритм же является искусственной конструкцией, сооружаемой для достижения определенных целей. Для выполнения алгоритмом своего предназначения, он должен строиться по определенным правилам. Поэтому корректно говорить не о свойствах алгоритма, а о правилах построения алгоритма, или о требованиях, предъявляемых к алгоритму. [1, с. 8-9]

Итак, алгоритм – понятие теории алгоритмов, каждому определенному набору входных данных ставящий в соответствие некоторый набор выходных данных, т.е. вычисляющий (реализующий) функцию. Рассматривая конкретные вопросы в теории алгоритмов всегда имеют в виду какую-то конкретную модель алгоритма. [7, с. 4-7]

1.2. Способы описания алгоритмов

 Основные способы описания алгоритмов состоят из:

  • словесно-формульного (на естественном языке);
  • структурного или блок-схемного;
  • с использованием специальных алгоритмических языков.

При разработке программ чаще всего пользуются словесно-формульным и блок-схемным способами. [6, с. 9-10]

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

с=(а+5)/(b+3). [7, с. 4-7]

Словесно-формульный способ записи алгоритма решения этой задачи может выглядеть так: 

1. Ввод значений а и b. 


2. Умножение а на 5. 

3. Умножение b на 3. 

4. Деление из (а+5)/(b+3). 

5. Вывод результата c.

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

Данный способ в сравнении с другими способами записи алгоритма обладает рядом преимуществ. Он более нагляден: каждую операцию вычислительного процесса изображает отдельная геометрическая фигура. Кроме этого, графическим изображением алгоритма наглядно показываются разветвления путей решения задачи в зависимости от различных условий, повторение отдельных этапов вычислительного процесса и другое. [1, с. 8-10]

Программы должны быть оформлены в соответствии с определенными требованиями. В настоящее время действует единая система программной документации (ЕСПД), устанавливающая правила разработки, оформления программ и программной документации. ЕСПД определяет и правила оформления блок-схем алгоритмов (ГОСТ 10.002-80 ЕСПД, ГОСТ 10.003-80 ЕСПД).

Операции обработки данных и носители информации изображены на схемах соответствующими блоками. В одной схеме рекомендуется изображение блоков одинаковых размеров с их нумерацией. Линии соединений блоков и указывающие последовательность связей между ними, проводятся параллельно линиям рамки. Стрелку в конце линии можно не ставить, если линия направляется слева направо либо сверху вниз. В блок может входить несколько линий. Из блока (кроме логического) может выходить только одна линия. Из логического блока выходят две линии и может иметь один из двух блоков. [12]

Схема алгоритма должна выполняться как единое целое, однако при необходимости допускается обрыв линии, соединяющей блоки. Если при обрыве линии продолжение схемы находится на этом же листе, то на обоих концах линии изображается специальный символ соединитель — окружность диаметром 0,5 мм, внутри которых указывается один и тот же идентификатор. В качестве идентификатора, как правило, используют порядковый номер блока, к которому направляется соединительная линия. Если схема расположена на более чем одном листе, то при разрыве линии вместо окружности используют межстраничный соединитель. Внутри каждого соединителя указывают адрес — откуда и куда направляется соединительная линия. Запись адреса в две строки: в первой указывается номер листа, во второй — порядковый номер блока. Основные блоки схем алгоритмов даны в Приложении 1.


Блок-схема должна состоять из всех разветвлений, циклов и обращений к подпрограммам, содержащихся в программе. [9]

Основные алгоритмические структуры

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

Линейными алгоритмами описываются линейные вычислительные процессы, выполнение этапов которого однократно и последовательно. Линейный алгоритм включает последовательное выполнение этапов:

  • ввода исходных данных в память ЭВМ;
  • вычисления искомых величин по формулам;
  • вывода результатов из памяти ЭВМ на внешний носитель. [6, с. 12-13]

Пример 1. Разработать алгоритм определения площади круга по формуле S = πR2. Блок-схема алгоритма дана на рис. 1. [7, с. 15-16]

Начало

Ввод R

S=π R2

Вывод S

Конец

Рисунок 1 - Линейный алгоритм

Разветвляющимся алгоритмом описывается вычислительный процесс, реализуемый по одному из нескольких заранее предусмотренных направлений - ветвей. Выбор конкретной ветви вычисления зависим от результатов проверки выполнения некого логического условия. Результатом проверки является: "истина" (да) при выполнении условия, и "ложь" (нет), если не выполняется условие. [6, с. 13-14]

Пример 2. Разработать алгоритм определения функции

F(x) = 2xпри x > 0 и

F(x) = х2 при x < 0.

Блок - схему разветвляющегося алгоритма представляет рисунок 2.

Начало

Начало

Ввод х

x>0

F=0

F=x*x

Конец

Вывод F

Рисунок 2 - Разветвляющийся алгоритм [7, с. 16]

Циклическим алгоритмом описывается вычислительный процесс, многократно повторяющийся. Существуют простые циклы, не содержащие внутри себя другие циклы, и сложные (вложенные), содержащие несколько вложенных циклов. Существуют циклы с известным числом повторений и циклы с неизвестным числом повторений. [1, с. 32]

Цикл с известным числом повторений состоит из последовательности:

  • подготовки первого выполнения цикла (присвоения счетчику цикла начального значения);
  • тела цикла, состоящего из блоков, выполняемых многократно;
  • изменения значения счетчика циклов и сравнения его с конечным значением. [1, с. 31-33]

Существуют структуры повторения "повторение ДО" (повторение до выполнения условия окончания цикла) или "повторение ПОКА" (повторение пока выполняется условие продолжения цикла). В первом случае проверка условий окончания цикла осуществляется в конце цикла (рис. 3, а), во втором - в начале цикла (рис. 3, б).


Как видно из блок-схем, цикл "повторение ДО " выполняется, по крайней мере, один раз, а цикл "повторение ПОКА" может сразу выйти из цикла.

Подготовка выполнения первого цикла

Подготовка выполнения первого цикла

Условие окончания

Тело цикла

нет

Тело цикла

Подготовка выполнения следующего цикла

Подготовка выполнения следующего цикла

Условие окончания

нет

да

а б

Рисунок 3 - Циклы с известным числом повторений [7, с. 17]

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

│Yi –Yi-1│<d, где d – допустимая точность вычисления. [6, с. 10-16]

Типовую структуру алгоритма итерационных вычислений демонстрирует рис. 4.

Y1=Y(0)

Задание начальных условий

Первая итерация

Y=f (Y1)

Вычисление текущей ошибки

D=│Y -Y1

Y1=Y

Переприсвоение

D≤d

Оценка точности

нет

да

Рисунок 4 - Циклы с неизвестным числом повторений [7, с. 19]

Сложные циклы. Вычислительные процессы, содержащие два и более включенных друг в друга циклов, называются сложные циклические процессы (алгоритмы). Цикл, содержащий внутри себя другой цикл, называется внешним, а содержащийся внутри цикл - внутренним (вложенным). Нужно учесть, что за одно выполнение внешнего цикла происходит многократное повторение внутреннего цикла. [1, с. 35-37]

Пример 5. Разработать алгоритм вычисления и вывода на печать функции y = x*z / (b + c) при изменении аргументов 1< x < 8 c шагом ∆x = 1 и 1< z<5 c шагом ∆z = 1. Алгоритм решения примера приведен на рис. 5.

Внутренний цикл организован по переменной z, а внешний - по переменной x. При каждом значении переменной x (переменной внешнего цикла) от 1 до 8 переменная z (переменная внутреннего цикла) изменяется от 1 до 5 с шагом 1.

Блок вывода на печать находится во внутреннем цикле, что позволяет отслеживать значения переменных на всем диапазоне их изменения. На рис. 6 эту же задачу решает модифицированная блок-схема алгоритма, в которой циклы представлены более компактными условными обозначениями, принципы организации которых проясняет рис. 7. [7, с. 21]