- •Содержание
- •Пояснительная записка
- •Раздел 1. Основы программирования
- •Тема 1.1 Понятие алгоритма
- •Понятие алгоритма. Свойства алгоритма
- •Алгоритмический язык
- •Понятие алгоритма. Свойства алгоритма
- •Хорезми
- •2. Алгоритмический язык
- •Тема 1.2 Методы описания алгоритма
- •Виды описания алгоритма
- •Тема 1.3 Типы алгоритмов
- •1.Типы алгоритмов
- •Алгоритм линейной структуры
- •3. Разветвляющийся алгоритм
- •4. Циклический алгоритм
- •5.Виды циклов
- •Цикл с предусловием (цикл пока)
- •2. Цикл с постусловием (цикл до)
- •3. Арифметический цикл (цикл для) – цикл с параметром.
- •Тема 1.4. Алгоритмический ряд.
- •Операторы цикла с условием
- •Операторы ограничения и прерывания цикла
- •Раздел 2. Решение задач на пэвм.
- •Тема 2.1. Основные этапы подготовки задачи к решению на пэвм.
- •Этапы решения задач
- •Тема 2.2 Программа на языке высокого уровня.
- •Тема 2.3. Методика Джексона
- •1. Методика Джексона
- •Шаг объект-действие
- •Раздел 3.Разработка программы на языке Турбо Паскаль
- •Тема 3.1 Основные элементы
- •История и классификация языков программирования
- •Элементы языка Турбо Паскаль
- •Тема 3.2. Типы данных
- •1. Типы данных Типы данных
- •Тема3.3 Программа на языке Турбо Паскаль
- •Структура программы на языке Паскаль
- •4. Вывод данных в тр
- •5. Ввод данных в тр
- •Тема 3.4 Массивы и их обработка
- •Строковый тип данных
- •Процедуры и функции для работы со строками
- •1. Определение массива
- •2 Описание массивов
- •3 Действия над массивами
- •4.Двумерный массив
- •6.Строковый тип данных
- •'Текстовая строка'
- •7. Процедуры и функции для работы со строками
- •Тема 3.5 Встроенные процедуры и функции
- •1. Арифметические процедуры и функции:
- •2. Функции преобразования типов:
- •3. Процедуры и функции для работы со строками:
- •Тема 3.6. Процедуры и функции пользователя
- •Отличия функции от процедур
- •3. Описание процедуры
- •4. Описание функций
- •5. Локальные и глобальные переменные.
- •6. Параметры в процедурах.
- •Тема 3.7. Записи
- •1. Структура записи в тр
- •2. Отличия записи от массива.
- •Тема 3.8 Файлы и их обработка
- •1. Понятие файла
- •2. Чтение и запись информации из файл или в файл
- •3.Доступ к файлам
- •4.Имена файлов
- •5. Связь файла с файловой переменной.
- •6. Открытие и переименование файла.
- •7. Типизированные фалы.
- •8. Нетипизированные файлы.
- •9.Текстовые файлы
- •Раздел 4. Объектно – ориентированная модель программирования
- •Тема 4.1. Основные характеристики ооп. Преимущества.
- •1. Основные характеристики ооп. Преимущества
- •Тема 4.2. Инкапсуляция.
- •Тема 4.3. Наследование.
- •Тема 4.4.Виртуальные методы и полиморфизм.
- •Перечень источников литературы для самостоятельного изучения учебной дисциплины «Основы алгоритмизации и программирования»
Тема 1.3 Типы алгоритмов
Тип лекции: текущая
План:
1. Типы алгоритмов
2. Алгоритм линейной структуры
3. Разветвляющийся алгоритм
4. Циклический алгоритм
5.Виды циклов
6. Вопросы для самостоятельного изучения:
- Структура программы. Разделы описательной части: Type, Const, Var, Label, Procedure, Function.
- Задача 1.На производство одного квадратного метра ситца затрачивают 5 минут. Определить количество ткани, выпущенное за N часов при ширине полотна D.
- Задача 2. Определить время движения поезда на перегоне длиной S , едущего со скоростью V.
- Задача 3.Вычислить функцию Y=AX2 + BX + C , где C = B - A. (Значения В, А, X сообщать компьютеру)
1.Типы алгоритмов
Все алгоритмы можно разделить на три типа.
1. Линейные – алгоритм в котором действия выполняются последовательно, друг за другом по линейке.
2. Разветвляющиеся – алгоритм в котором есть условие и если оно верно (истинно), то выполняется некоторое условие 1, если оно не верно (ложно) выполняется некоторое условие 2.
3. Циклические – алгоритм в котором одни и те же действия повторяются некоторое количество раз.
Алгоритм линейной структуры
Линейный алгоритм – алгоритм, в котором все предписания (шаги) выполняются так, как записаны, без изменения следования, строго друг за другом.
В общем виде структура «следование» (линейная структура) выглядит следующим образом:
Простейшие задачи имеют линейный алгоритм решения. Это означает, что он не содержит проверок условий и повторений.
Основным элементарным действием в вычислительных алгоритмах является присваивание значения переменной величине. Если значение константы определено видом ее записи, то переменная величина получает конкретное значение только в результате присваивания. Присваивание может осуществляться двумя способами: с помощью команды присваивания и с помощью команды ввода.
Рассмотрим пример. В школьном учебнике математики правила деления обыкновенных дробей описаны так:
1. Числитель первой дроби умножить на знаменатель второй дроби.
2. Знаменатель первой дроби умножить на числитель второй дроби.
3. Записать дробь, числитель которой есть результат выполнения пункта 1, а знаменатель — результат выполнения пункта 2.
В алгебраической форме это выглядит следующим образом:
Построим алгоритм деления дробей для ЭВМ. В этом алгоритме сохраним те же обозначения для переменных, которые использованы в записанной выше формуле. Исходными данными являются целочисленные переменные а, b, с, d. Результатом — также целые величины тип. Блок-схема и текст алгоритма на учебном алгоритмическом языке приведены ниже (в дальнейшем для краткости будем обозначать учебный алгоритмический язык буквами АЯ).
алг
Деление
дробей
цел
a,b,c,d,m,n
нач
ввод
a,b,c,d
m:=a*d
n:=b*c
вывод
m,n
кон
Формат команды присваивания следующий: Переменная:=выражение
Знак «:=» нужно читать как «присвоить». Команда присваивания обозначает следующие действия, выполняемые компьютером:
Вычисляется выражение.
Полученное значение присваивается переменной.
В приведенном выше алгоритме присутствуют две команды присваивания. В блок-схемах команда присваивания записывается в прямоугольнике. Такой блок называется вычислительным блоком.
В описаниях алгоритмов необязательно соблюдать строгие правила в записи выражений. Их можно писать в обычной математической форме. Это еще не язык программирования со строгим синтаксисом.
В приведенном алгоритме присутствует команда ввода:
ввод a,b,c,d
В блок-схеме команда ввода записывается в параллелограмме — блоке ввода-вывода. При выполнении данной команды процессор прерывает работу и ожидает действий пользователя. Пользователь должен набрать на устройстве ввода (клавиатуре) значения вводимых переменных и нажать на клавишу ввода Enter. Значения следует вводить в том же порядке, в каком соответствующие переменные расположены в списке ввода. Обычно с помощью команды ввода присваиваются значения исходных данных, а команда присваивания используется для получения промежуточных и конечных величин. Полученные компьютером результаты решения задачи должны быть сообщены пользователю. Для этих целей предназначена команда вывода:
вывод m,n
С помощью этой команды результаты выводятся на экран или на устройство печати на бумагу.
Поскольку присваивание является важнейшей операцией в вычислительных алгоритмах, обсудим ее более подробно. Рассмотрим последовательное выполнение четырех команд присваивания, в которых участвуют две переменные величины а и Ь. В приведенной ниже таблице напротив каждой команды присваивания указываются значения переменных, которые устанавливаются после ее выполнения.
Команда |
а |
b |
а : = 1 |
1 |
- |
b : = 2 * а |
1 |
2 |
а : =b |
2 |
2 |
b:=a+ b |
2 |
4 |
Этот пример иллюстрирует три основных свойства команды присваивания:
пока переменной не присвоено значение, она остается неопределенной;
значение, присвоенное переменной, сохраняется в ней вплоть до выполнения следующей команды присваивания этой переменной:
новое значение, присваиваемое переменной, заменяет ее предыдущее значение.
Рассмотрим один очень полезный алгоритм, который приходится часто использовать при программировании. Даны две величины: X'и Y. Требуется произвести между ними обмен значениями. Например, если первоначально было Х= 1, Y= 2, то после обмена должно стать: X= 2, Y= 1.
Хорошей моделью для решения этой задачи является следующая ситуация: имеются два стакана — один с молоком, другой с водой. Требуется произвести обмен их содержимым. Всякому ясно, что в этом случае нужен дополнительный третий пустой стакан. Последовательность действий будет следующей: 1) перелить из первого стакана в третий; 2) перелить из второго в первый; 3) перелить из третьего во второй. Цель достигнута!
По аналогии для обмена значениями двух переменных нужна третья дополнительная переменная. Назовем ее Z. Тогда задача обмена решается последовательным выполнением трех команд присваивания:
Аналогия со стаканами не совсем точна в том смысле, что при переливании из одного стакана в другой первый становится пустым. В результате же присваивания (Х:= Y) переменная, стоящая справа (Y), сохраняет свое значение.
Алгоритм для деления дробей имеет линейную структуру. В нем все команды выполняются в строго однозначной последовательности, каждая по одному разу. Линейный алгоритм составляется из команд присваивания, ввода, вывода и обращения к вспомогательным алгоритмам (об этом позже).
При описании алгоритмов в блок-схемах типы, как правило, не указываются (но подразумеваются). В алгоритмах на АЯ для всех переменных типы указываются явно. Описание типов переменных производится сразу после заголовка алгоритма. В них используются следующие обозначения типов: цел — целый тип, вещ — вещественный тип, лит — символьный (литерный) тип, лог — логический тип. В алгоритме для деления дробей для всех переменных указан целый тип.
Пример 1. Рассмотрим пример – вычисление площади треугольника по формуле Герона.
Составить алгоритм решения задачи
Найти площадь треугольника с заданными длинами сторон.
алг Герон
цел а, b, c, p, S
нач ввод a, b, c
p: = (a + b + c) / 2
вывод S
кон
Язык схем настолько четок, что исполнитель, получивший блок-схему алгоритма, ни в каких дополнительных разъяснениях не нуждается.
При составлении блок-схем следует руководствоваться простыми правилами:
Блок-схема должна развиваться сверху вниз; при необходимости – слева направо.
Каждый участок блок-схемы линейного алгоритма должен иметь один вход и один выход.
В линейном алгоритме выход рисуется точно под входом.
Выстроив команды по порядку и получив блок-схему, мы видим, что здесь не требовалось проверять выполнение каких-либо условий: последовательность выполняемых действий всегда одинакова. Такие алгоритмы называют линейными.
Пример 2. Пешеход шел по пересеченной местности. Его скорость движения по равнине v1 км/ч, в гору — v2 км/ч и под гору — v3 км/ч. Время движения соответственно t1, t2 и t3 ч. Какой путь прошел пешеход?
|
Алг Прогулка Цел v1, v2, v3, t1, t2, t3, S1, S2, S3, S Нач ввод v1, v2, v3, t1, t2, t3 S1:=v1*t1 S2:=v2*t2 S3:=v3*t3 S:=S1+S2+S3 вывод S кон
|
Для проверки работоспособности алгоритма необходимо задать значения входных переменных, вычислить конечный результат по алгоритму и сравнить с результатом ручного счета.