- •Утверждаю Зам.Директора по учебной работе
- •Основы Алгоритмизации и программирования учебно-методическое пособие
- •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 Список используемой литературы Основная
- •Дополнительная
Введение
Общеизвестна роль вычислительной техники в различных сферах человеческой деятельности. Особенно популярны персональные компьютеры (ПК), обладающие высокой производительностью и не требующие от пользователя глубокого знания процессов, происходящих в компьютере во время вычислений. Без преувеличения можно сказать, что появление ПК в середине 70-х годов и бурное их распространение в наше время открыло новую эру в массовом использовании вычислительной техники людьми всех рангов и профессий. Человечество заметно переходит от экономики, основанной на тяжелой промышленности, к экономике с компьютеризированной технологией, средствами связи и услугами. Например, на Канадских национальных железных дорогах в 1993 г. на 27 тыс. работников приходилось 16 тыс. компьютеров, то есть каждый работник этого предприятия, непосредственно связанный с процессом перевозок, активно использует вычислительную технику в своей повседневной работе что, несомненно, положительно сказывается на оперативности и качестве решения производственных вопросов. В нашей стране успехи компьютеризации заметно скромнее. Выбор Паскаля для обучения программированию объясняется рядом его достоинств. В частности, этот язык полно отражает идеи структурного программирования. Во-вторых, Паскаль предоставляет гибкие возможности в отношении используемых структур данных. Большое внимание в языке уделено вопросу повышения надежности программ: средства языка позволяют осуществлять достаточно полный контроль правильности использования данных различных типов и программных объектов как на этапе трансляции программ, так и на этапе их выполнения. Благодаря перечисленным возможностям, Паскаль широко применяется не только в области обучения, но и в практической работе.
Основные этапы решения задач на эвм
Решение задачи на ЭВМ - сложный и трудоемкий процесс. Любая задача начинается с постановки задачи. На основе словесной формулировки задачи выбираются переменные, подлежащие определению, записываются ограничения, связи между переменными, в совокупности образующие математическую модель решаемой проблемы. Анализируется метод решения. На этом этапе необходимо принять очень важное решение - использовать ли имеющееся готовое программное обеспечение или разрабатывать собственную программу. Дешевле и быстрее использовать имеющиеся в наличии готовые разработки. Обновление программного обеспечения - задача программистов. В этом случае традиционно выделяются следующие основные этапы решения задачи на ЭВМ
постановка задачи, разработка математической модели;
выбор метода численного решения;
разработка алгоритма и структуры данных;
проектирование программы:
производство окончательного программного продукта;
решение задачи на ЭВМ.
Постановка задачи - точное описание исходных данных, условий задачи и целей ее решения. На этом этапе многие из условии задачи, заданные в форме различных словесных описаний, необходимо выразить на точном (формальном) языке математики. Часто задача программирования задается в математической формулировке, поэтому необходимость в выполнении этапов 1 и 2 отпадает. Для решения достаточно сложных задач этап формализации может потребовать значительных усилий и времени. Среди опытных программистов распространено мнение, что выполнить этап формализации - это значит сделать половину всей работы по созданию программы.
Выбор метода решения тесно связан с постановкой задачи. На первом этапе задача сводится к математической модели, для которой известен метод решения. Метод численного решения сводит решение задачи к последовательности арифметических и логических операций. Однако возможно, что для полученной модели известны несколько методов решения и тогда предстоит выбрать лучший. Можно усовершенствовать существующий или разработать новый метод решения формализованной задачи. Эта работа по своему характеру является научно-исследовательской и может потребовать значительных усилий. Разработкой и изучением таких методов занимается раздел математики, называемый численным анализом.
При выборе метода надо учитывать требования, предъявляемые постановкой задачки, и возможности его реализации на конкретной ЭВМ: точность решения, быстроту получёния результата, требуемые затраты оперативной памяти для хранения исходных и промежуточных данных и результатов.
Алгоритм устанавливает последовательность точно определенных действий, приводящих к решению задачи. При этом последовательность действии может задаваться посредством словесного или графического описаний. Если выбранный для решения задачи численный метод реализован в виде стандартной библиотечной подпрограммы, то алгоритм обычно сводится к описанию и вводу исходных данных, вызову стандартной подпрограммы и выводу результатов на экран или на печать. Более характерен случай, когда стандартные подпрограммы решают лишь какую-то часть задачи. Здесь эффективным подходом является разделение сложной исходной задачи на некоторые подзадачи, реализующиеся отдельными модулями. Определяется общая структура алгоритма, взаимодействие между отдельными модулями, детализируемся логика. Этот этап тесно связан со следующим этапом проектирования программы.
Проектирование программы включает и себя несколько подзадач. Во-первых, необходимо выбрать язык программирования. Во вторых, определить, кто будет использовать разработанное программное обеспечение и каким должен быть интерфейс (средство общения с пользователем) В-третьих, решить все вопросы по организации данных. В-четвертых, кодирование, т.е. описание алгоритмов с помощью инструкций выбранного языка программирования. Если – задача, для которой разрабатывается алгоритм, сложная, то не следует сразу пытаться разрешить все проблемы. Сложившийся в настоящее время подход к разработке; сложных программ состоит в последовательном использовании принципов проектирования сверху вниз, модульной и структурного программирования.
Окончательный программный продукт получается после: отладки и испытания программы. При программировании и вводе данных с клавиатуры могут быть допущены ошибки. Их обнаружение, локализацию и устранение выполняют на этапе отладки и испытания (тестирования) программы. Причем могут быть допущены логические ошибки и на этапе постановки задачи, и на этапе алгоритмизации. В этом случае необходимо вернуться к предыдущим этапам. Дорабатывать, и улучшать программу можно в течение всего жизненного цикла программного продукта.
Решение задачи нa ЭВМ - выполнение всех предусмотренных программой вычислений и вывод результатов расчёта на экран дисплея или на печать.
Пример: Построить траекторию движения тела, брошенного под углом к горизонту, и определить дальность бросания.
Постановка задачи, разработка математической модели. Для упрощения модели примем следующие допущения:
а) пренебрегаем кривизной Земли, считая ее поверхность плоскостью:
б) ускорение свободного падения считаем константой:
в) пренебрегаем сопротивлением воздуха:
г) пренебрегаем движением Земли.
Математическое описание объекта. Уравнения движения тела, брошенного под углом к горизонту, в Декартовых координатах записываются следующим образом:
(1)
Рисунок 1 – Математическое описание объекта
Y, X - вертикальная и горизонтальная составляющие движения;
g - ускорение свободного падения;
t - время.
Создание математической модели позволяет поставить задачу математически.
Пусть движение тела, брошенного под углом а к горизонту с начальной скоростью Vo (рисунок 1), описывается системой уравнений (1), а и Vo заданы. Требуется определить дальность полета и положение тела в каждый момент времени от t = 0 до tK с шагом h.
Вторым этапом решения задачи можно пренебречь, так как никакого особенного численного метода решения в данном случае применять не нужно. Точка падения определяется из системы уравнений при условии Y - 0.
Изменяя значение t с шагом h, рассчитываем координаты X. Y. Алгоритм решения лучше всего представить в виде схемы (рисунок 2).
Рисунок 2 –Блок-схема
На следующем этапе алгоритм записываемся на языке программирования и текст программы переносится на носитель, с которого она вводиться в ЭВМ. Часто программа вводится с клавиатуры дисплея в оперативную память компьютера, а затем записывается на диск.
По готовой программе производятся расчеты и результаты сравниваются с контрольным примером. Контрольным примером могут служить экспериментальные данные. Если в процессе отладки программы возникают ошибки, то их необходимо исправить.
