
- •Глава 1 Информация и информационные
- •Глава 2 Аппаратные средства Современных компьютеров
- •Глава 3 Программное обеспечение и операционная система
- •Глава 4 операционная система ms windows
- •Глава 5 компьютерная графика и мультимедиа
- •Глава 6 Текстовый процессор ms word
- •6.2 Элементы окна Microsoft Word
- •Глава 7 таблиЧный Процессор Ms Excel
- •7.8 Функции
- •Глава 8 компьютерные вирусы и программы
- •8.3 Антивирусная программа Norton AntiVirus
- •Глава 9 система управления базами данных
- •9.1 Технология обработки информации
- •Глава 10 алгоритмы и языки программирования
- •Глава 11 Компьютерные сети и сетевые технологии
- •Топология типа «звезда»
- •«Кольцевая» топология
- •11.3 Преимущества локальных вычислительных сетей
- •11.4 Стандарт передачи информации
Глава 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. Графическое описание в виде блок-схемы (набор связанных между собой геометрических фигур).
Описание на каком-либо языке программирования (программа).
Программа - это набор машинных команд, который следует выполнить компьютеру для реализации того или иного алгоритма.
Программа - это форма представления алгоритма для исполнения его машиной.
Фигуры, используемые в блок-схемах.
Начало и конец алгоритма |
ввод и вывод данных |
вычисления |
логический блок (проверка условия) |
|
|
|
да |
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,
Если ST< 15, то ZP :=18000, перейти к п. 5
ZP = 18000+(ST-15)*300
5. Сообщить значение , ST
Конец.
Пример блок-схемы алгоритма решения задачи приведен на рис. 10.4
Рис. 10.4 Блок-схема алгоритма
Описание алгоритма на алгоритмическом языке .
Алгоритмический язык - это средство для записи алгоритмов в аналитическом виде, промежуточном между записью алгоритма на естественном (человеческом) языке и записью на языке ЭВМ (языке программирования).
алг ЗАРПЛАТА (цел ST, вещ ZP)
арг ST
рез ZP
нач
если ST<5
то ZP:=13000
иначе
если ST<15
то ZP:=18000
иначе ZP=18000+(ST-15)* 10
все
все
кон