Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
краткий конспект по информатике.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
3.72 Mб
Скачать

Глава 10 алгоритмы и языки программирования

10.1 Свойства алгоритма

Слово алгоритм возникло от algorithm- латинской формы имени великого математика IX века аль- Хорезми, который сформулировал правила выполнения 4 арифметических действий над многозначными числами.

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

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

Алгоритм может быть предназначен для выполнения его человеком или компьютером.

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

1. Массовость - алгоритм должен быть применен для класса подобных задач.

2. Дискретность - алгоритм состоит из ряда шагов.

3. Определенность - каждый шаг алгоритма должен пониматься однозначно и не допускать произвола.

4. Результативность - алгоритм должен приводить к решению поставленной задачи за конечное число шагов

10.2 ОСНОВНЫЕ СТРУКТУРЫ И СРЕДСТВА ЯЗЫКА

ПРОГРАММИРОВАНИЯ

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

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

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

Линейный

Ветвление

Цикл

Рис.10.3 Блок-схема

Алгоритмы могут быть описаны различными способами:

  • записаны на естественном языке;

  • изображены в виде блок-схемы;

  • записаны на алгоритмическом языке;

  • закодированы на языке программирования.

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

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

Команда

Формат оператора

Ввод данных

Var <список переменных>

Команда

WRITE <список переменных>

Присваивание

<переменная>: = <арифметическое выражение>

Команда ветвления

IF <условие> THEN <операторы> ELSE <операторы>

Команда цикла

FOR <переменная> TO <арифметическое выражение> DО <арифметическое выражение>

<операторы> NEXT <переменная>

В формат операторов, кроме ключевых слов, входят переменные и арифметические выражения. Переменные бывают различных типов, тип переменной определяет, какие значения может принимать эта переменная. В Pascal переменные могут быть следующих типов: целые (А% := 5), вещественные (А := 3.14), символьные (А$: = "информатика") и массивы DIM А(М, N). Массивы представляют собой одномерные или двумерные таблицы.

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

Разветвляющиеся алгоритмы

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

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

Команда ветвления, как и любая другая, может быть:

  • записана на естественном языке;

  • изображена в виде блок-схемы;

  • записана на алгоритмическом языке;

  • закодирована на языке программирования.

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

Аргументами этого алгоритма являются две переменные А, В, а результатом — переменная X. Если условие А >= В истинно, то выполняется команда Х:=А*В, в противном случае выполняется команда Х:=А+В. В результате печатается то значение переменной X, которое она получает в результате выполнения одной из серий команд.

Рис.4 Блок-схема алгоритма разветвляющейся структуры

Запишем теперь этот алгоритм на алгоритмическом языке:

алг ветвление (вещ А, В, X) аргА, В рез Х

нач ввод А, В если А >= В то Х : - А*В иначе Х : =А+В

Вывод Х Конец )

все вывод Х кон

Циклические алгоритмы

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

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

Цикл, как и любая другая алгоритмическая структура, может быть:

• записан на естественном языке;

• изображен в виде блок-схемы;

• записан на алгоритмическом языке;

• закодирован на языке программирования.

Блок-схема

Алгоритмический язык

h:=(xk-xn)*0.1; // шаг h

x:=xn;

repeat // цикл по x

c:=-x*x*0.5;

S:=1;

for k:=1 to n do

begin

s:=s+c*(2*k*k+1);

c:=-c*x*x/((2*k+1)*(2*k+2));

end;

y:=(1-x*x*0.5)*cos(x)-0.5*x*sin(x);

Рис.5 Блок-схема алгоритма циклической структуры

Рассмотрим циклический алгоритм на примере алгоритма вычисления факториала, изображенного на блок-схеме. Переменная N получает значение числа, факториал которого вычисляется. Переменной N!, которая в результате выполнения алгоритма должна получить значение факториала, присваивается первоначальное значение 1. Переменной К также присваивается значение 1. Цикл будет выполняться, пока справедливо условие К <== N. Тело цикла состоит из двух операций N! : = N!*K и К:=К+1.

Рис. 6 Блок-схема циклического и разветвляющегося алгоритма

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

Рассмотрим в качестве примера алгоритм вычисления суммы квадратов целых чисел от 1 до 3. Запишем его на алгоритмическом языке. Телом цикла в данном случае является команда S :=S+ п*п. Количество повторений тела цикла зафиксировано в строке, определяющей изменение значений счетчика цикла (для пот 1 до 3), т.е. тело цикла будет выполнено три раза алгебраическая сумма квадратов (цел S)

рез S нач нат п S:=0 для п от 1 до 3

на

I S:=S+n*n кц

1. Линейный - алгоритм, в котором все предписания (шаги) выполняются так, как записаны, без изменения порядка следования, строго друг за другом.

2. Разветвляющийся - алгоритм, в котором выполнение того или иного действия (шага) зависит от выполнения или не выполнения какого-либо условия.

3. Циклический - алгоритм, в котором некоторая последовательность действий повторяется несколько раз.

Пример: Исполнитель чертежник имеет свою систему команд: вперед (1 см), направо 90 градусов (по часовой стрелке) и свою среду - чертежную доску. Результатом исполнения следующего алгоритма будет рисунок 10.1.

В перед (1 см), направо 90, вперед (1 см),

направо 90, направо 90, направо 90,

вперед (1 см), направо 90, вперед (1 см)

Рис. 10.1

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

1. Словесно-формульное описание (на естественном языке с использованием математических формул).

2. Графическое описание в виде блок-схемы (набор связанных между собой геометрических фигур).

  1. Описание на каком-либо языке программирования (программа).

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

Программа - это форма представления алгоритма для исполнения его машиной.

Фигуры, используемые в блок-схемах.

Начало и конец алгоритма

ввод и вывод данных

вычисления

логический блок (проверка условия)

Нет

да

10.4 Основные этапы решения задач на ЭВМ

1-этап. Математическая постановка задачи - это формулировка задачи как задачи некоторого раздела математики.

2 - этап. Построение математической модели.

Модель - Это замещение изучаемого объекта другим объектом, который отражает существенные стороны данного объекта. Изучаемый объект может иметь несколько моделей в зависимости от требуемой точности результатов вычислений.

3 - этап. Выбор метода решения.

4 - этап. Построение алгоритма.

5 - этап. Запись алгоритма на языке программирования.

6 - этап. Отладка программы на ЭВМ.

Пример 1. Определить периметр крышки стола.

а)

б)

Рис. 10.3 Крышка стола

Здесь нас интересуют лишь размеры крышки стола, поэтому заменим реальный объект - “стол” плоской геометрической фигурой (рис. 10.2 а, б), размеры и конфигурация которой соответствуют поверхности крышки. Однако предварительно следует доказать, что радиусы закругления всех углов крышки стола, с точки зрения требуемой точности вычисления результатов, можно считать равными, и только после того фигуры на рис.10.2 может считаться моделью крышки стола.

Если это доказано, то математическая постановка задачи имеет такой вид:

  • исходные данные: r- радиус закругления, a, b, c, d- размеры прямолинейных частей фигуры;

  • результат: Р (периметр);

Вычислить значение Р: Р= 2πr или Р=a+b+c+d.

Если величина r такова, что при требуемой точности вычисления результатов закруглением углов можно пренебречь, то в качестве модели объекта можно взять четырехугольник общего вида (рис.10.2). В этом случае приходим к такой задаче:

  • исходные данные: а, b, с, d- размеры прямолинейной части фигуры;

  • вычислить значение Р (периметр).: Р = a+b+c+d.

В качестве модели объекта задачи можно взять прямоугольник со сторонами а и b. Если окажется, что при заданной точности вычисления противоположенные стороны крышки можно считать равными, как и диагонали ее, МПЗ имеет такой вид:

исходные данные: a, b - размеры прямоугольника;

вычислить значение Р:

P=2(a+b).

Пример 2. Составить программу начисления зарплаты согласно следующему правилу:

если стаж сотрудника менее 5 лет, то зарплата 13000 тг., при стаже работы от 5 до 15 лет - 18000 тг., при стаже свыше 15 лет зарплата повышается с каждым годом на 300 тг.

Сформулируем задачу в математическом виде: Вычислить

13000, если ST< 5;

ZP < 18000, если 5<ST<15

18000 +(T-15)*300, если 15<ST

ZP - заработанная плата, ST - стаж работы.

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

1. Запросить ST;

2. Если ST< 5, то ZP :=13000, перейти в п.5,

  1. Если ST< 15, то ZP :=18000, перейти к п. 5

  2. ZP = 18000+(ST-15)*300

5. Сообщить значение , ST

  1. Конец.

Пример блок-схемы алгоритма решения задачи приведен на рис. 10.4

Рис. 10.4 Блок-схема алгоритма

Описание алгоритма на алгоритмическом языке .

Алгоритмический язык - это средство для записи алгоритмов в аналитическом виде, промежуточном между записью алгоритма на естественном (человеческом) языке и записью на языке ЭВМ (языке программирования).

алг ЗАРПЛАТА (цел ST, вещ ZP)

арг ST

рез ZP

нач

если ST<5

то ZP:=13000

иначе

если ST<15

то ZP:=18000

иначе ZP=18000+(ST-15)* 10

все

все

кон