Основы программирования на языке BASIC: Лабораторный практикум по дисциплине «Учебный практикум по вычислительной технике»

Страницы работы

135 страниц (Word-файл)

Фрагмент текста работы

Сортировка по возрастанию данной последовательности чисел

4

Сортировка по убыванию данной последовательности чисел

5

Сложение двух матриц

6

Нахождение следа матрицы

7

Умножение двух матриц

8

Транспонирование матрицы

9

Нахождение минора матрицы

10

Нахождение наибольшего общего делителя двух чисел

11

Поиск наименьшего общего делителя двух чисел

12

Нахождение простых чисел

13

Разложение числа на простые сомножители

14

Разложение числа на делители

15

Поиск совершенных чисел

16

Вычисление таблицы значений функции двух переменных

17

Нахождение наибольшего элемента таблицы

18

Нахождение наименьшего элемента таблицы

19

Поиск элементов таблицы по заданному условию

20

Таблица сложных процентов

21

Сложение столбцов определителя

22

Вычитание строк определителя

23

Вычитание столбцов определителя с умножением

24

Сложение строк определителя с умножением

25

Поиск целочисленных решений уравнения  ax + by = c

26

Поиск целочисленных решений уравнения ax + by + cz = d

27

Поиск целочисленных решений уравнения x2 + y2 = z2

28

Перевод 10-тичного числа в 2-ичную систему

29

Перевод 10-тичного числа в 8-ричную систему

30

Перевод 10-тичного числа в 16-ричную систему

31

Перевод 2-ичного числа в 10-тичную систему

32

Перевод 8-ричного числа в 10-тичную систему

33

Вычисление суммы с заданной точностью

34

Вычисление определителя 3-го порядка

35

Решение системы 3-х уравнений с 3-мя неизвестными

36

Решение системы 2-х уравнений с 2-мя неизвестными


Лабораторная работа № 5

Разработка и отладка программы
для работы с файлами

Задание на лабораторное  занятие

1. Составить по разработанному алгоритму программу для работы с файлами, имеющую 3 подпрограммы: создание файлов, добавление в файлы и считывание из файлов. Файлы состоят из
5-буквенных слов. Оформить подпрограммы с помощью операторов GOSUB и RETURN. Текст программы должен иметь заголовок, например, Программа для работы с файлами (использовать оператор PRINT). Программу начинать  с оператора CLS. Текст программы должен быть снабжен комментариями (использовать оператор REM или ' – апостроф) и разбит на блоки.  Выбор варианта работы с файлами реализовать посредством управляющего оператора SELECT CASE … END SELECT.

2. Придумать десять 5-буквенных слов, начинающихся с той же буквы, что и Ваша фамилия, имена существительные, нарицательные, в единственном числе (исключение: слова имеющие только множественное число – штаны, шорты и т.д.), без повторения букв в слове. Например, для студента Попова такими словами могут быть: петух, поезд, паром и т.д.

3. Блок-схему алгоритма и программу записать в отчет по занятию. Блок-схема и текст программы должны располагаться на одном листе рядом.

Выполнение задания

1. Работа выполняется бригадами из 2-х человек.

2. Запустить Среду программирования BASICи ввести в компьютер текст подготовленной Вами программы.

3. Отредактировать тест программы, исправив выявленные с помощью редактора ошибки.

4. Запустить отлаженную программу и создать файл из десяти придуманных слов (1-й студент).

5. Открыть файл для добавления и записать другие десять слов
(2-й студент).

6. Открыть файл для считывания и результат показать преподавателю. 


Лабораторная работа № 6

Разработка и отладка программы для работы
с графикой

Задание на лабораторное занятие

1. Разработать блок-схему алгоритма программы в соответствии с вариантом задания из таблицы 6.1.

2. Составить по разработанному алгоритму  программу. Текст программы должен иметь заголовок, например, Эпициклоида, вариант 24 (использовать оператор PRINT). Программу начинать  с оператора CLS. Установить экранный режим SCREEN 9. Текст программы должен быть снабжен комментариями (использовать оператор REM или ' – апостроф). Использовать оператор DEF FN, описывающий функцию как пользовательскую. Рисование кривых осуществить с помощью операторов LINE или PSET. Предусмотреть возможность вывода нескольких кривых с разными параметрами и разным цветом.

3. Подготовить входные данные для демонстрации графика преподавателю.

4. После проверки блок-схему алгоритма и программу записать в отчет по занятию. Блок-схема и текст программы должны располагаться на одном листе рядом.

Выполнение задания

1. Запустить Среду программирования BASICи ввести в компьютер текст подготовленной Вами программы.

2. Отредактировать тест программы, исправив выявленные с помощью редактора ошибки.

3. Запустить отлаженную программу и результат показать преподавателю.

4. Зарисовать кривую в отчет.


Таблица 6.1.

Вари-ант

Название графика и уравнение

1

Косинусоида

y = a cos (t0 + t)

2

Тангенсоида

y = a tg (t0 + t)

3

Абсолютная величина

y = | ax + b |

4

Парабола

y = (ax + b)2

5

Гипербола

y = a/x

6

Показательная функция

y = ax

7

Гиперболический синус

y = shx = (exe-x)/2

8

Гиперболический косинус

y = chx = (ex + e-x)/2

9

Гиперболический тангенс

y = thx = (exe-x) / (ex + e-x)

10

Арктангенс

yArctgx

11

Астроида

x = 3a cos t + a cos 3t 

 y = 3a sin t – a sin 3t

12

Квадратиса

y = x / tgax

13

Параболическая гипербола

y =

14

Ареа-синус

y = arshx = ln (x + Öx2 + 1 )

15

Гиперболическая спираль

r = c / t

16

Секансоида

y = 1 / cosx

17

Косекансоида

y = 1 / sinx

18

Котангенсоида

y = 1 / tgx

19

Логарифмика

y = logax

20

Антье (целая часть) – наибольшее целое число, не превосходящее заданного числа

y = [a]

21

Дробная часть

y = {a} = a – [a]

22

Локон Аньези (верзиера)

y = a3 / (a2 +x2)

23

Эпициклоида

x = (a + b) cos t – a cos (a + b) t/a

y = (a + b) sin t – a sin (a + b) t/a

24

Эпитрохоида

x = (a + b) cos t – c cos (a + b) t/a

y = (a + b) sin t – c sin (a + b) t / a

25

Гипотрохоида

x = (b - a) cos t + c cos (b - a) t / a

y = (b – a) sin t – c sin (b - a) t / a

26

Гипоциклоида

x = (b - a) cos t + a cos (b - a) t / a

y = (b – a) sin t – a sin (b - a) t / a

27

Трохоида

x = at – b sin t

y = a – b cos t

28

Циклоида

x = a (t – sin t)

y = a (t – cos t)


Окончание таблицы 6.1.

29

Узлы

r = a / tg bt

30

Улитка Паскаля

x = a cos2t + b cos t

y = a sin t cos t + b sin t

31

Конхоида Никомеда

r = b + a/cost

32

Кохлеоида

r = (a sin t)/ t

33

Жезл

r = a/

34

Спираль Галилея

r = at2 - b

35

Розы

r = a sin bt

36

Серпантина Ньютона

y = a2x / (x2 + b2)

37

Спираль Архимеда

r = ct

38

Нормальное распределение

 

39

Лемниската Бернулли

40

Овал Кассини

41

Декартов лист

x = 3atgt / (1+ tg3t)

y = 3a tg2t / (1+ tg3t)

42

Циссоида Диокла

43

Строфоида

r =  -a cos2t / cos t

44

Парабола Нейля (полукубическая)

y2 = cx3

45

Цепная линия

y = a ch x/a = a (ex/a + e-x/a) / 2

46

Кубическая парабола

y = cx3

47

Трактриса

x = a cos t + a ln tg t/2

y= a sin t

48

Эвольвента

x = k (cos t + t sin t)

y = k (sin t – t cos t)

49

Каппа

r = a / tg t

50

Кардиоида

r = 2a (1 + cos t)

51

Логарифмическая спираль

r = r0qt / 2p

52

Спираль Ферма (параболическая)

53

Ареа-косинус

54

Ареа-тангенс

y = 0.5 ln (1 +x)/(1 – x)


Лабораторная работа № 7

Разработка и отладка программы для
работы с графикой в статике

Задание на лабораторное занятие

1. Разработать блок-схему алгоритма программы в соответствии с вариантом задания из таблицы 7.1.

2. Составить по разработанному алгоритму  программу. Текст программы должен иметь заголовок, например, Автобус, вариант 35 (использовать оператор PRINT). Программу начинать  с оператора CLS. Установить экранный режим SCREEN 9. Текст программы должен быть снабжен комментариями (использовать оператор REM или ' – апостроф). Рисование осуществлять посредством операторов LINE, CIRCLE, DRAW (использовать все три оператора).

3. При рисовании выбрать начальную (опорную) точку, привязав к ней остальные координаты. После проверки блок-схему алгоритма и программу записать в отчет по занятию. Блок-схема и текст программы должны располагаться на одном листе рядом.

Выполнение задания

1. Запустить Среду программирования BASICи ввести в компьютер текст подготовленной Вами программы.

2. Отредактировать тест программы, исправив выявленные с помощью редактора ошибки.

3. Запустить отлаженную программу и результат показать преподавателю.

4. Зарисовать рисунок в отчет.


Таблица 7.1.

Вариант

Задание

Вариант

Задание

1

Ваза

31

Рюмка

2

Кувшин

32

Усеченный полый конус

3

Рюмка с яйцом

33

Фрагмент цилиндра

4

Теннисная ракетка

34

Дорожный знак

5

Подсвечник

35

Автобус

6

Настольная лампа

36

Магнитофон

7

Часы с маятником

37

Лорнет

8

Ложка

38

Люстра

9

Торшер с фонарем

39

Весы

10

Светофор

40

Пасхальное яйцо

11

Торшер с шарами

41

Лопата

12

Торшер с плафонами

42

Телефон

13

Ключ

43

Жук

14

Часы

15

Гимнастическая гиря

16

Секира

17

Цепь

18

Курительная трубка

19

Цветок в горшке

20

Морда кота

21

Легковая машина

22

Яхта

23

Вазочка с мороженым

24

Шпага

25

Стрела в мишени

26

Воздушный шар

27

Экскаватор

28

Грузовик с фургоном

29

Полый цилиндр

30

Шаровой слой


1

2

3

4

5

6

7

 

13

 
 

8

9

10

11

12

14

15

 

17

21

16

18

19

20

 

22

23

24

25

 
 

26

27

28

29

30

31

32

35

36

33

34

37

38

39

40

41

42

43


Лабораторная работа № 8

Разработка и отладка программы для работы
с графикой в динамике

Задание на лабораторное занятие

1. Разработать блок-схему алгоритма программы в соответствии с вариантом задания из таблицы 8.1.

2. Составить по разработанному алгоритму  программу. Текст программы должен иметь заголовок, например, Итальянский круиз (использовать оператор PRINT). Программу начинать  с оператора CLS. Установить экранный режим SCREEN 9. Текст программы должен быть снабжен комментариями (использовать оператор REM или ' – апостроф) и разделен на блоки.

Границы страны рисовать с помощью оператора DRAW.

3. Обеспечить движение теплохода или яхты (в случае круиза), автобуса или машины (тур) по разработанному Вами маршруту с остановками в соответствующих городах. Во время остановки на экран выводится поясняющий текст. Например, для Итальянского круиза: Анкона, стоянка 1 день, автобусная экскурсия по городу, посещение местных погребков с дегустацией "Кьянти". Тексты оформить как подпрограммы с использованием оператора GOSUB.

4. После проверки блок-схему алгоритма и программу записать в отчет по занятию. Блок-схема и текст программы должны располагаться на одном листе рядом.

Выполнение задания

1. Запустить Среду программирования BASICи ввести в компьютер текст подготовленной Вами программы.

2. Отредактировать тест программы, исправив выявленные с помощью редактора ошибки.

3. Запустить отлаженную программу и результат показать преподавателю.


Таблица 8.1.

Вари-ант

Круизы

Вари-ант

Туры

1

Австралийский

41

Австрийский

2

Адриатический

42

Азербайджанский

3

Аравийский

43

Армянский

4

Аргентинский

44

Африканский

5

Африка-восток

45

Белорусский

6

Африка-запад

46

Бельгийский

7

Африка-север

47

Болгарский

8

Африка-юг

48

Боливийский

9

Балтийский

49

Венгерский

10

Бирманский

50

Германский

11

Бразильский

51

Голландский

12

Британский

52

Грузинский

13

Венесуэльский

53

Египетский

14

Вьетнамский

54

Иракский

15

Гайана – Гвиана

55

Иранский

16

Индийский

56

Казахский

17

Индонезийский

57

Канадский

18

Испанский

58

Китайский

19

Итальянский

59

Колумбийский

20

Каспийский

60

Лаосский

21

Китайский

61

Молдавский

22

Корейский

62

Монгольский

23

Кубинский

63

Норвежский

24

Мексиканский

64

Пакистанский

25

Никарагуа – Панама

65

Парагвайский

26

Новозеландский

66

Польский

27

Персидский

67

Португальский

28

Перуанский

68

Румынский

29

Прибалтийский

69

Сирийский

30

Сиамский

70

Словацкий

31

США - восток

71

США

32

США - запад

72

Таджикский

33

Турецкий

73

Туркменский

34

Филиппинский

74

Узбекский

35

Французский

75

Украинский

36

Черноморский

76

Финский

37

Чилийский

77

Французский

38

Шведский

78

Чешский

39

Ямайка – Гаити

79

Швейцарский

40

Японский

80

Эквадорский





МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ

По разработке программы

Программа – это логически упорядоченная последовательность команд и данных для компьютера, необходимая для решения им некоторых задач. Процесс создания любой программы обычно разбивают на 5 этапов:

1. Формализация задачи.

То есть ее описание на языке математики. Например, дана словесная постановка задачи: найти объем прямой призмы с октагоном (правильным 8-угольником) в основании. Тогда формализованная математическая постановка задачи будет иметь следующий вид:

V = h×Sосн = h(1 +)×2a2,

где h – высота призмы, a – сторона 8-угольника. В случае работы с графикой формализацией задачи будет привязка рисуемого изображения к координатной сетке экрана.

2. Разработка структуры вход - выходных данных.

Данные могут быть представлены отдельными переменными и константами, массивами и файлами сложной структуры. Для графики под входными данными имеется в виду ввод координат опорных точек изображения, а под выходными – само изображение.

Поскольку в качестве предлагаемых задач выбраны математические примеры, то, как правило, первые два этапа уже реализованы.

3.  Разработка машинно-ориентированного алгоритма.

Под машинно-ориентированным понимается алгоритм, удобный для решения данной задачи на ЭВМ. Это очень важный этап, так как алгоритм определяет логическую структуру программы. Алгоритм может быть описан словесно или графом (называемым блок-схемой). Это строже и нагляднее. Словесное описание применяется обычно для разрешения затруднений при построении графа. Граф состоит из вершин (блоков), объединенных ребрами. Типы блоков представлены в таблице 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.

Для больших и сложных программ сначала рисуется укрупненный алгоритм, блоки которого потом конкретизируются, вследствие чего алгоритм доводится до машинно-ориентированного вида.

4. Запись текста программы на языке программирования.

Используя нарисованный алгоритм, можно без особых трудностей написать текст программы. Начинать программу следует с оператора CLS – очистки экрана. Нумерация строк в Бейсике принята через 10 (если вы что-то пропустили, то между строками 10 и 20 можно вставить строки 11, 12… 19 с необходимыми операторами, не меняя остального текста программы). Оператор в строке 20 запускает генератор случайных чисел. Строка 30 выводит на экран название программы. Блок 1 алгоритма реализуется строками 40-50 программы. Строкой 60 подготавливается место в памяти для вводимых элементов последовательности, объявляя массив a(n1). Строки 70-80 выводят на экран своеобразное меню, выбор режима ввода завершается в строке 90 (строки 70-90 соответствуют блоку 3 алгоритма). Строка 100 исключает ошибку выбора (допустимы n2 = 1 или n2 = 2, если введено число > 2, то программа возвращается к повторению выбора. В литературе это обычно называют защитой от дурака). Цикл, реализованный в алгоритме в блоках 2-7, записан в программе в строках 110-150 с помощью операторов FOR…NEXT. Причем блоки 2,6,7 алгоритма отображаются в строках 110, 150 программы. В строке 120 обрабатываются результаты выбора (блок 3 алгоритма) и осуществляется ввод последовательности с клавиатуры (блок 5 алгоритма). Автоматический ввод последовательности из чисел в диапазоне от 1 до 20 с помощью функции случайных чисел RND(1) обеспечивается строкой 130 программы (блок 4 алгоритма). 

Цикл блоков 8-14 алгоритма записан в строках 160-190 программы с помощью оператора FOR…NEXT. Блоку 8 алгоритма соответствует строка 160 программы, блокам 9,13,14 – строки 170,190. Блоки 11,12 реализованы в строке 180 посредством оператора IF… THEN…ELSE, где в качестве условия использована функция MOD, вычисляющая остаток от деления очередного a(j) на 2. Очевидно, что четные числа делятся на 2 без остатка. В противном случае по ELSE вычисляется произведение всех нечетных элементов последовательности. Вывод результата на экран обеспечивается строкой 200 с помощью оператора PRINT. Конец программы.

Рекомендуется в программе каждый оператор записывать в своей строке. Если же логика программы диктует многооператорную строку, то операторы в ней отделяются двоеточием.

Например:

10 FOR i = 1 TO 1000: NEXT i

пустой цикл, реализующий временную задержку.

10 CIRCLE (320, 165), 40, 1: PAINT (320, 165), 1, 1

оператор CIRCLE рисует окружность, которую затем оператор PAINT заливает краской.

Тип переменных лучше объявлять только при необходимости, так как Бейсик, анализируя программу, сам это успешно делает. В начале программы обычно объявляются массивы (см. рекомендации к лабораторной работе № 3). Строковые переменные лучше объявлять с помощью суффикса $, например p$.

Ввод входных данных, в основном, осуществляется тремя способами: с помощью операторов READ и DATA (лабораторная

Похожие материалы

Информация о работе