Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК, информатика.doc
Скачиваний:
20
Добавлен:
01.03.2025
Размер:
1.58 Mб
Скачать

Раздел 3. Основы алгоритмизации и программирования

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

Алгоритмы линейной структуры (линейные алгоритмы) – действия выполняются последовательно одно за другим, т. е. все этапы решения задачи выполняются строго последовательно, без пропусков и повторений.

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

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

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

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

Арифметические выражения служат для определения одного числового значения. Арифметические выражения записываются по следующим правилам:

1. Нельзя опускать знак умножения между сомножителями и ставить рядом два знака операций.

2. Индексы элементов массивов записываются в скобках.

3. Операции выполняются в порядке старшинства: сначала вычисление функций, затем возведение в степень, потом умножение и деление и в последнюю очередь – сложение и вычитание.

4. Операции одного старшинства выполняются слева направо.

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

Классы алгоритмов:

  • вычислительные алгоритмы, работающие со сравнительно простыми видами данных, такими как числа и матрицы, хотя сам процесс вычисления может быть долгим и сложным;

  • информационные алгоритмы, представляющие собой набор сравнительно простых процедур, работающих с большими объемами информации (алгоритмы баз данных);

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

Классификация алгоритмов по типу передачи управления:

  • Основные: главные выполняемые программы).

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

Основные свойства алгоритмов:

  • понятность: инструкции должны быть четкими и понятными исполнителю; порядок исполнения команд не должен допускать неоднозначности;

  • дискретность: каждый алгоритм должен быть разбит на конечное число законченных действий (отдельных действий, шагов);

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

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

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

  • конечность (финитность): каждое из действий и весь алгоритм в целом обязательно завершаются за конечное число шагов.

Примеры алгоритмов: инструкция по использованию междугороднего телефонного автомата; правила пользования банкоматом; решение квадратных уравнений (нахождение корней квадратного уравнения).

Способы записи алгоритмов:

  • вербальный (словесный), когда алгоритм описывается на человеческом языке;

  • графический, когда алгоритм описывается с помощью набора графических изображений – блок-схем (осуществляется рисованием последовательности геометрических фигур, каждая из которых подразумевает выполнение определенного действия алгоритма, порядок выполнения действий указывается стрелками);

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

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

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

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

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

Команда – это указание исполнителю совершить некоторое действие.

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

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

Переменная – это «место» для подстановки значения. Переменная имеет имя и значение определенного типа (целого, вещественного, логического, строкового). В отличие от констант, переменные могут менять свое значение в процессе выполнения программы.

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

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

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

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

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

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

Интерпретаторы – это трансляторы, которые сканируют и проверяют исходный код пошагово.

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

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

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

Семантика языка программирования – система правил толкования конструкций языка.

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

Система команд – набор всех команд понятных для исполнителя.

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

Функция – это программная единица, которая может быть употреблена в выражении. Функция прямо возвращает величину, которая используется при вычислении этого выражения, и, кроме того, может возвращать величины через параметры.

Этапы решения задач на ЭВМ:

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

  2. Моделирование – нахождение решения и составление математической модели поставленной задачи.

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

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