
- •Утверждаю Зам.Директора по учебной работе
- •Основы Алгоритмизации и программирования учебно-методическое пособие
- •220301 Автоматизированные системы обработки информации и правления
- •Введение
- •Основные этапы решения задач на эвм
- •Глава 1 способы записи алгоритма
- •1.1 Алгоритм и его свойства
- •Схемы алгоритма
- •1.2 Структуры алгоритмов
- •1.2.1 Алгоритм линейной структуры
- •1.2.2 Алгоритм разветвляющейся структуры
- •1.2.3 Алгоритм циклической структуры
- •1.2.4 Алгоритм со структурой итерационных циклов
- •1.2.5 Алгоритм со структурой вложенных циклов
- •Глава 2 программа на языке высокого уровня
- •2.1 Системы программирования
- •2.2 Характеристика языка программирования Паскаль
- •2.3 Алфавит и структура программы на Паскале Алфавит программы
- •Структура программы
- •Глава 3 Стандартные типы данных
- •3.1 Данные. Типы
- •3.2 Вещественные типы
- •3.3 Целочисленные типы
- •3.4 Символьный тип
- •3.5 Логический тип
- •4 Представление основных структур программирования: итерация, ветвление, повторение
- •4.1 Линейная структура (следование)
- •Var X,y,f: real;
- •4.2 Разветвляющая структура (ветвление)
- •4.3 Циклическая структура (повторение)
- •4.3.1 Оператор цикла с параметром
- •I : Integrer; {номер числа }
- •4.3.2 Оператор цикла с постусловием
- •I,n: integer;
- •4.3.3 Оператор цикла с предусловием
- •4.3.4 Итерационные циклы
- •Var r,a:real;
- •Приближенное вычисление функций
- •Решение уравнений приближенными методами
- •Метод деления отрезка пополам
- •Xsl, Xpr, a, b, e, y1, y2, Lev, Prav, y: Real;
- •Метод Ньютона
- •Метод прохождения отрезка с переменным шагом
- •Вычисление определенных интегралов
- •1. Метод прямоугольников
- •X: Real;
- •2. Метод трапеций
- •X: Real;
- •Глава 5 Типы данных, определяемые пользователем
- •5.1 Пользовательский тип данных
- •5.1.1 Типизированные константы
- •5.1.2 Перечисляемый тип
- •I:1..6; loto: num;
- •5.2 Массивы
- •I : integer;
- •5.2.1. Работа с одномерными массивами
- •I,sum : integer;
- •Var a: array [1..N] of real;
- •Var I,s,r: integer;
- •I : list;
- •I : integer;
- •X : mass;
- •I, j, p, n, m, k:integer;
- •I, j, k, nd : integer;
- •Xmin : real;
- •X : mass;
- •Var I, j, nd : integer;
- •X : mass;
- •5.2.2 Работа с двумерными массивами( матицы)
- •Var I,j,n : integer;
- •I,j,n,m : integer;
- •5.2.3 Сортировка массивов
- •Сортировка методом "пузырька"
- •X : Array [1..Nmax] Of Real;
- •X : Array [1..Nmax] Of Real;
- •Сортировка выбором
- •Обменная сортировка
- •Var m:array[1..1000] of integer;
- •I,z,n:integer; Key:byte;
- •Сортировка слиянием
- •Var { Описание массивов и переменных}
- •X, y: array[1..1000] of integer;
- •5.3 Строковые типы
- •Var s: string[10];
- •5.3.1 Операции над строками
- •5.3.2 Стандартные процедуры и функции для строк
- •Функция Length
- •Функция Upcase
- •Функция Copy
- •Функция Роs
- •I, n, p: integer;
- •I: integer;
- •I: integer;
- •Insert (word2, text, I);
- •Insert (chr (k-32), t, I);
- •Insert (chr (k-80), t, I);
- •Insert (‘е’, t, I);
- •Глава 6 Процедуры и функции
- •6.1 Процедуры
- •I : Integer;
- •I, n: integer;
- •Input _ mas (k, n);
- •I,n : Integer;
- •I,k : Integer;
- •6.2 Функции
- •I:Integer;
- •2) Массивы;
- •I,n : Integer;
- •I : Integer;
- •I,tn,tk:Real;
- •Глава 7 Программирование рекурсивных алгоритмов
- •7.1 Понятие рекурсии
- •7.2 Техника построения рекурсивных алгоритмов
- •7.3 Формы рекурсий
- •If Prim(I) then
- •7.4 Рекурсия и итерация
- •7.5 Программирование с использованием рекурсии
- •Var p: Integer;
- •Var X, y: Integer; begin
- •Var z: Real; begin
- •Var I:integer; j:real;
- •Глава 8 Файлы
- •8.1 Текстовые файлы
- •I,n : Integer; {Вспомогательные переменные}
- •8.2 Типизированные файлы
- •X,m,s : Real;
- •8.3 Нетипизированные файлы
- •Глава 9 Записи
- •9.1 Описание записи
- •I: integer;
- •9.2 Оператор присоединения
- •I, j, k, m : integer;
- •X: real;
- •9.3 Вложенные записи
- •9.4 Записи с вариантами
- •Information: record
- •I, k, n : integer;
- •Vedom : Array [1..Nmax] Of Stud;
- •I,j : Integer;
- •Vedom : File Of Stud;
- •Vedom : File Of Stud;
- •I,j,kdv,k2 : Integer;
- •If Not Eof (Ftel) Then
- •If Not Eof(Ftel) then
- •If Not Eof(FilComp) then
- •Глава 10 Динамические структуры данных
- •10.1 Распределение памяти при выполнении программ
- •Верхняя граница памяти ms-dos
- •10.2 Ссылочные переменные
- •10.3 Процедуры управления кучей
- •10.4 Использование переменных ссылочного типа
- •I: Integer;
- •I, k : Integer;
- •Val(b, k, code);{Превратили второй символ в ч исло}
- •10.5 Списки
- •Var Ch : Char;
- •Var Ch : Char;
- •10.6 Деревья
- •10.7 Константы ссылочного типа
- •Глава 11. Язык Паскаль. Графический модуль Graph Список используемой литературы Основная
- •Дополнительная
1.2 Структуры алгоритмов
Основные структуры алгоритмов - это ограниченный набор блоков и стандартных способов их соединения для выполнения типичных последовательностей действий. Такие структуры рекомендуются при использовании так называемого структурного подхода к разработке алгоритмов и программ. Структурный подход предполагает использование только нескольких основных структур, комбинация которых дает все многообразие алгоритмов и программ.
1.2.1 Алгоритм линейной структуры
Алгоритм линейной структуры (следование) - алгоритм, в котором все действия выполняются последовательно друг за другом. Такой порядок выполнения действий называется естественным.
П
ример
1.1 Ввести
длины a,
b,
c
трех сторон треугольника. Вычислить
его площадь, используя формулу Герона:
S=(p*(p-a)(p-b)(p-c))½,
где p
– полупериметр треугольника (р=(а+b+c)/2).
Для того чтобы рассчитать S,
необходимо иметь численные значения
р, а, b,
c.
Можно рассчитать р по формуле, а вот
значения а, b,
c
должны быть заданы заранее, иначе задачу
решить невозможно.
Пример
1.2 Вычислить
значение функций Y
и Z.
Исходные данные: a,
b,
c.
Y
и X
должны быть определены раньше, чем Y
и Z
так как входят в расчетную формулу для
Y
и для Z.
1.2.2 Алгоритм разветвляющейся структуры
На практике редко удается представить схему алгоритма решения задачи в виде линейной структуры. Часто в зависимости от каких- либо значений промежуточных результатов необходимо организовать вычисление либо по одним, либо по другим формулам. Ветвление - такая схема, в которой предусмотрено разветвление указанной последовательности действий на два направления в зависимости от итога проверки заданного условия. В схемах такой структуры используется логический блок.
Пример 1.3 Рассчитать Y
Разработка
алгоритма. В этой задаче должно быть
задано Х. Далее анализируется Х. Если
Х<0, то вычисляется по первой формуле,
если это условие не выполняется, то
выполняется второе условие X
0,
так как условия Х<0 и X
0
взаимоисключающие, и Y
вычисляется по первой формуле.
Рисунок 1.5- Схема алгоритма разветвляющей структуры
Пример 1.4. На плоскости с центром в начале координат проведена окружность радиусом R. Пользователь вводит координаты (X, Y) некоторой точки. Следует вывести на дисплей ответ: находится ли эта точка внутри (в том числе и на границе) круга, или вне его.
1.2.3 Алгоритм циклической структуры
Алгоритмы, отдельные действия в которых многократно повторяются, называются алгоритмами циклической структуры (повторение) Совокупность действий алгоритма, связанную с повторением, называют циклом.
Для организации циклов в алгоритмах необходимо предусмотреть:
- подготовку цикла – задание начальных значений переменным цикла перед первым его выполнением;
- тело цикла – действия, повторяемые в цикле для различных значений переменных цикла;
- модификацию/изменение значений переменных цикла перед каждым новым его повторением;
- управление циклом – проверку условия продолжения/окончания цикла и переход на повторение цикла или его окончание
В зависимости от того, где осуществляется проверка условия продолжения или окончания цикла, последний относится к виду:
- цикла с предусловием, когда цикл начинается с проверки условия продолжения цикла;
-
цикла с постусловием, когда условие
проверяется после выполнения тела
цикла.
Рисунок 1.7 – Общие схемы циклического алгоритма
Пример 1.5 Определить средний рост студентов в группе.
Разработка алгоритма. Исходной информацией для решения ими задачи являются число студентов в группе и рост каждого студента. В этой задаче мы встречаемся с распространенной задачей расчета суммы. Сумма получается путем накопления слагаемых в какой-либо переменной. Накопление осуществляется в цикле. Начальному значению суммы присваиваемся значение ноль. В цикле к текущему значению суммы прибавляется значение очередного слагаемого S = S + R.
Ч
исло
студентов в группе обозначим N. Это и
исходная величина. В переменной S
будем накапливать сумму. Зададим S
значение мот, Подсчет номера студента
будем осуществлять в переменной i.
Начнем с первого студента i
= 1. Вводим рост первого студента. К
предыдущему значению суммы i,
т.е. нулю, прибавим рост первого студента
и результат присвоим переменной S.
Перейдем к следующему шагу i
=.i
+ 1 = 1 + 1 = 2. У переменной i
теперь, значение 2. Выполним проверку
выхода из цикла. Если i
не превысило еще значения N,
то мы возвращаемся к блоку 5 и вводим
рост следующего студент. К предыдущему
значению суммы, а это рост первого
студента, прибавляем рост второго
студента и результат записываем в
переменную S.
В переменной S
теперь будет храниться сумма двух
значений: рост первого студента и рост
второго студента. Далее переходим к
следующему шагу. Цикл повторится N раз
и в переменной S
накопится сумма всех значений ростов
студентов (рисунок 1.8).
Средний рост определяем по формуле S = S/N. Необходимо обратить внимание на форму записи данного выражения. В правой и в левой части этого выражения наименование одной и той же переменной.
П
ример
1.6 Вычислить
значение функции Y=Sin(X)
для аргумента, изменяющегося в некотором
диапазоне Xk
≤X≥
Xn
Границы диапазона и шаг его прохождения вводить с клавиатуры. Выводить на экран соответствующие значения аргумента и функции.
Рис.
1.9 – Схема примера 1.6