- •Кафедра «Информационные технологии сферы сервиса»
- •Содержание
- •Введение
- •Лабораторная работа № 1 Разработка и отладка линейной программы Задание:
- •Выполнение задания:
- •Лабораторная работа № 2 Разработка и отладка программы с разветвлениями Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 4
- •Разработка и отладка
- •Сложной циклической программы
- •Задание на лабораторное занятие
- •Лабораторная работа № 3 Разработка и отладка циклической программы Задание на лабораторное занятие
- •Выполнение задания
- •Выполнение задания
- •Лабораторная работа № 5 Разработка и отладка программы для работы с файлами Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 6 Разработка и отладка программы для работы с графикой Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 7 Разработка и отладка программы для работы с графикой в статике Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 8 Разработка и отладка программы для работы с графикой в динамике Задание на лабораторное занятие
- •Выполнение задания
- •Методические рекомендации По разработке программы
- •Формализация задачи.
- •Разработка структуры вход - выходных данных.
- •Разработка машинно-ориентированного алгоритма.
- •Запись текста программы на языке программирования.
- •5. Трансляция и отладка программы.
- •К лабораторной работе №1
- •К лабораторной работе № 2
- •К лабораторной работе № 3
- •К лабораторной работе № 4
- •Исходная последовательность
- •Отсортированная по возрастанию
- •Программа разложения числа на простые сомножители
- •Делителями числа 28 являются 1, 2, 4, 7, 14.
- •Программа вычисления таблицы значений функции 2-х переменных
- •Программа построения таблицы сложных процентов
- •Вариант 24 Программа сложения строк определителя с умножением
- •Вариант 31 Программа перевода 2-ичного числа в 10-ичную систему
- •Вариант 32
- •Вариант 36
- •Варианты 34-36
- •Логика цикла
- •Логика цикла
- •К лабораторной работе № 5
- •К лабораторной работе № 6
- •К лабораторной работе № 7
- •К лабораторной работе № 8
- •Гипотрохоида. Вариант 25
- •Строфоида. Вариант 43
- •Трактриса. Вариант 47
- •50 Line (0, 175) – (640, 175), 1 'Ось абсцисс
- •60 Line (320, 0) – (320, 350), 1 'Ось ординат
- •Основы программирования на языке basic
- •192171, Г. Санкт-Петербург, ул. Седова, 55/1
Методические рекомендации По разработке программы
Программа – это логически упорядоченная последовательность команд и данных для компьютера, необходимая для решения им некоторых задач. Процесс создания любой программы обычно разбивают на 5 этапов:
Формализация задачи.
То есть ее описание на языке математики. Например, дана словесная постановка задачи: найти объем прямой призмы с октагоном (правильным 8-угольником) в основании. Тогда формализованная математическая постановка задачи будет иметь следующий вид:
V = hSосн = h(1 + )2a2,
где h – высота призмы, a – сторона 8-угольника. В случае работы с графикой формализацией задачи будет привязка рисуемого изображения к координатной сетке экрана.
Разработка структуры вход - выходных данных.
Данные могут быть представлены отдельными переменными и константами, массивами и файлами сложной структуры. Для графики под входными данными имеется в виду ввод координат опорных точек изображения, а под выходными – само изображение.
Поскольку в качестве предлагаемых задач выбраны математические примеры, то, как правило, первые два этапа уже реализованы.
Разработка машинно-ориентированного алгоритма.
Под машинно-ориентированным понимается алгоритм, удобный для решения данной задачи на ЭВМ. Это очень важный этап, так как алгоритм определяет логическую структуру программы. Алгоритм может быть описан словесно или графом (называемым блок-схемой). Это строже и нагляднее. Словесное описание применяется обычно для разрешения затруднений при построении графа. Граф состоит из вершин (блоков), объединенных ребрами. Типы блоков представлены в таблице 0.0.1.
Таблица 0.0.1.
Основные блоки схем алгоритмов |
||
Наименование |
Обозначение |
Функция |
1. Процесс |
|
Выполнение действия или действий, изменяющих значение, форму представления или расположение данных |
2. Решение |
нет
да |
Выбор направления выполнения алгоритма в зависимости от некоторых переменных условий |
3. Ввод-вывод |
|
Преобразование данных в форму, пригодную для обработки (ввод) или для отображения результатов обработки (вывод) |
4. Пуск-останов |
|
Начало или конец процесса обработки данных |
5. Межстраничный соединитель |
|
Указание связи между разъединенными частями схемы алгоритма, расположенными на разных листах |
К вершинам типа 1 и 3 подходят два ребра (одно входящее и одно выходящее). К вершинам типа 4 и 5 - лишь одно ребро (либо входящее, либо выходящее). В таблице для типа 4 представлен вариант блока "Начало". К вершинам типа 2 подходят три ребра (одно входящее и два выходящих – для "да" и "нет"), причем одно из выходящих может начинаться из нижнего угла ромба. Таким образом, вершине типа 2, в зависимости от расположения выходящих ребер и сопоставленных им "да" и "нет", соответствует 6 вариантов. Вершины типа 1 – 3 в блок-схеме обычно нумеруются. Движение по графу подразумевается сверху – вниз. При соблюдении этого правила стрелки не используются, а иное направление указывается ребром со стрелкой.
В соответствии с основной теоремой структурного программирования, доказанной Э. Дейкстрой, алгоритм любой сложности можно реализовать, используя только три конструкции: следование (оператор за оператором), повторение (цикл), выбор (альтернатива). Первой конструкции соответствует линейная программа (пример алгоритма, которой приведен на рисунке слева), второй – циклическая (на рисунке справа), третьей – с разветвлениями (в середине).
В укрупненном виде алгоритм состоит из:
а) ввода входных данных
б) собственно алгоритма программы, представляющего собой необходимую комбинацию из трех конструкций
в) вывода результата
Ввод входных данных и вывод результата тоже могут иметь сложную структуру.
Рассмотрим для примера построение алгоритма программы нахождения произведения всех нечетных чисел из заданной последовательности.
После блока 1, реализующего ввод размерности (длины) последовательности, организуем цикл из блоков 2-7 для ввода элементов последовательности, причем сначала рисуется тело цикла - блоки 3-5, которые затем обрамляются блоками 2, 6, 7, обеспечивающими выполнение цикла. Блок 3 задает выбор: ввод элементов последовательности с помощью генератора случайных чисел (блок 4) или с клавиатуры (блок 5). Блок 2 определяет начальное значение счетчика цикла, блок 6 – конечное, реализуя при этом условие окончания цикла, а блок 7 увеличивает значение счетчика цикла. Аналогично организуется цикл из блоков 8-14, тело которого составляют блоки 10-12. Блоки 10-11 обеспечивают проверку на четность, а блок 12 – вычисление произведения нечетных чисел последовательности. Блок 8 задает начальное значение для вычисления произведения P1 = 1. Блок 15 служит для вывода результата на экран.
10 CLS 20
RANDOMIZE 32767 - TIMER 30
PRINT "Программа
умножения"
40
PRINT
"Введите размерность последовательности"
50 INPUT
"n = ", n1 60
DIM
a(n1) 70
PRINT
"Автоматический ввод - 1" 80
PRINT
"С клавиатуры - 2" 90
INPUT
"Выбор - ", n2 100
IF n2 = 1 OR n2 = 2 THEN 110 ELSE 70 '=1========================== 'Блок
ввода последовательности 110
FOR
i
= 1 TO
n1
120 IF n2 = 2 THEN PRINT "a";
i:
INPUT a(i): GOTO 150 ELSE 130 130 a(i) =
INT(1 + 20 * RND(1)) 140 PRINT
a(i) 150
NEXT
i:
PRINT '=2========================== 'Блок
вычисления произведения 160 P1 = 1 170 FOR j
= 1 TO n1
180 IF a(j) MOD 2 = 0 THEN
ELSE
P1
= P1 * a(j) 190 NEXT j '============================ 200
PRINT
"Произведение нечетных чисел
последовательности P1
= "; P1 210 END
Хорошо составленный алгоритм позволяет проверять правильность работы программы без компьютера. Для этого необходимо добросовестно пройтись по блокам алгоритма.
Например:
Бл.1: вводим n = 4. Начинается цикл по вводу. Бл.2: i = 1.
Шаг 1: Бл.3: по "нет" выбираем ввод с клавиатуры. Бл.5: вводим a(1) = 5. Бл.6: проверка (i = 1) < (n = 4), по "да". Бл.7: i = 1+1=2.
Шаг 2: Бл3: по "нет". Бл.5: вводим a(2) = 4. Бл.6: (i = 2) < (n = 4), по "да". Бл.7: i = 2 + 1 = 3.
Шаг 3: Бл.3: по "нет". Бл.5: вводим a(3) = 2. Бл.6: (i = 3) < (n = 4), по "да". Бл.7: i = 3 + 1 = 4.
Шаг 4: Бл.3: по "нет". Бл.5: a(4) = 7. Бл.6: (i = 4) = (n = 4), по "нет". Завершен цикл по вводу, начинается цикл по вычислению произведения. Бл.8: Р1 = 1. Бл.9: j = 1.
Шаг 1: Бл.10: деление (a(1) = 5) / 2 = 2.5. Бл.11: деление не нацело, по "нет". Бл.12: Р1 = 1 * a(1) = 1*5 = 5. Бл.13: проверка (j = 1) <
< (n = 4), по "да". Бл.14: j = 1 + 1 = 2.
Шаг 2: Бл.10: (a(2) = 4) / 2 = 2. Бл.11: деление нацело, по "да". Бл.13: (j = 2) < (n = 4), по "да". Бл.14: j = 2 + 1 = 3.
Шаг 3: Бл.10: (a(3) = 2) / 2 = 1. Бл.11: деление нацело, по "да". Бл.13: (j = 3) < (n = 4), по "да". Бл.14: j = 3 + 1 = 4.
Шаг 4: Бл.10: (a(4) = 7) / 2 = 3.5. Бл.11: деление не нацело, по "нет". Бл.12: Р1 = 5*а(4) = 5*7 = 35. Бл.13: (j = 4) = (n = 4), по "нет".
Завершен цикл. Бл.15: вывод на экран Р1 = 35.
Для больших и сложных программ сначала рисуется укрупненный алгоритм, блоки которого потом конкретизируются, вследствие чего алгоритм доводится до машинно-ориентированного вида.
