Лекция №7 по учебной дисциплине Информатика
Оценка 4.9

Лекция №7 по учебной дисциплине Информатика

Оценка 4.9
Контроль знаний +1
docx
информатика
Взрослым
12.01.2017
Лекция №7 по учебной дисциплине Информатика
Полностью раскрытая тема по учебной дисциплине Информатика. Курс лекции разработан как аудиторной так и самостоятельной работы, где студент может подробно изучить тему, проверить свои знания с помощью проверочных вопросов и выполнить практические задания по теме. Такой курс лекции очень удобен для преподавателя и обучающихся!
Лекция 7.docx

Лекция 7. Основы программирования

План

1.      Начало программирования. Язык программирования Бейсик.

2.      Правила работы с программами.

3.      Графические программы на Бейсике.

4.      Выбор действий в Бейсике.

5.      Повторение действий на Бейсике.

6.      Организация подпрограмм на Бейсике.

7.      Переменные и массивы в Бейсике.

8.      Диалоговые программы.

 

1. Начало программирования. Язык программирования Бейсик

Говоря о программировании, мы часто понимаем под этим составление программ для вычислительных машин. Умение составлять простейшие программы для решения задач на ЭВМ считается одной из частей компьютерной грамотности.

Для составления программ применяются специально созданные языки - языки программирования. Одним из наиболее распространенных языков программирования является язык Бейсик.

Язык Бейсик был создан в 60-х годах как язык  для начального обучения программированию в диалоге с ЭВМ. Этот язык создавался американскими программистами, и по этому в основу его была положена лексика английского языка.

На персональных ЭВМ язык Бейсик позволяет составлять самые различные программы: для проведения математических расчетов и построения графиков, организации игр и различных экспериментов, диалоговых справочников, обучающие, консультирующие и многие другие программы.

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

Прежде всего, нужно понять, как ЭВМ выполняет команды. Команды - это отдельные фразы языка Бейсик, которые вводятся прямо с клавиатуры и сразу же выполняются ЭВМ. Выполнение команд следует немедленно после нажатия клавиши ¿. <Enter>

Для записи дробных чисел в Бейсике применяется не запятая, отделяющая дробную часть числа от целой части, а точка. Запись арифметических формул и алгебраических выражений не может быть «многоэтажной». Все формулы в Бейсике должны записываться в строчку. Примеры записи:

(2+5) / 6

 

(A*X+B) / (15*A)

(1/3)*4  (но не 1/3*4)

При организации расчетов на ЭВМ результаты вычислений могут храниться в ее памяти. В языке Бейсик для этого служат переменные. Понятие переменных в программировании и в математике различны. Если в математике переменные - это некоторые величины, то в программировании переменная - это область памяти, куда можно записывать различные значения.

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

В языке Бейсик для имен переменных  можно выбирать любые латинские буквы: A, B, C, ..., X, Y, Z.. Кроме того, в Бейсике в качестве имен переменных  можно использовать сочетание из двух букв - AX, VY, PR, а также сочетания из буквы и цифры - A0, X1, Y2 и т.п.

Все переменные в языке Бейсик обычно считаются вещественными.

Для проведения математических расчетов в языке Бейсик, как и в калькуляторах, имеются элементарные математические функции. Рассмотрите форму записи и примеры использования этих функций.

Команда:

Результат:

Функция:

? ABS (-3)       ¿

3

- модуль числа

? SIN (0)         ¿

0

- синус угла (в радианах)

? COS (0)        ¿

0.99999

- Косинус угла (в радианах)

? TAN (0)        ¿

0

- тангенс угла (в радианах)

? ATN (1)*4    ¿

3.14159

- арктангенс

? EXP (1)        ¿

2.71828

- число е

? LOG (2)       ¿

0.693147

- натуральный логарифм

? SQR (2)       ¿

1.414

- квадратный корень

 

Вопросы и упражнения и задания для самопроверки

 

ВОПРОСЫ:

                        Каковы основы возможности языка Бейсик?

                        Как использовать ЭВМ в качестве калькулятора?

                        Как записываются числа на языке Бейсик?

                        Какие математические функции есть в языке Бейсик?

УПРАЖНЕНИЯ:

1. Запишите по правилам языка Бейсик следующие числа:

а) 125;      б)-0,1;       в) 3*105;      г) -6,2*10-3

2. Запишите на языке Бейсик следующие выражения:

 

а)  Y = б) Y = sin2 x – cos2 2x + tg3 (2x-4) – ln2 ;

в)  Y = .

 

ЗАДАНИЯ:

                        Выполните на ЭВМ все приведенные примеры команд, и самостоятельно подберите дополнительные примеры.

                        Определите с помощью ЕХР максимальное вещественное число. Начните эксперимент с команды ? ЕХР (200) и действуйте далее по методу деления пополам.

 

2. Правила работы с программами

После первого опыта работы с ЭВМ в командном режиме, когда машина немедленно выполняла вводимые команды, легко понять, что такое программа.

П р о г р а м м а для ЭВМ - это последовательности команд, которые должна выполнять машина. Иными словами, программа для ЭВМ - это алгоритм, записанный на языке, понятной данной ЭВМ. Располагая алгоритмом, написанным на русском алгоритмическом языке, можно перевести этот алгоритм на любой язык программирования, имеющийся на ЭВМ.

Запись программ определяется правилами используемого языка программирования, а работа с программами на ЭВМ - правилами имеющейся на машине системы программирования. Язык Бейсик привлекает тем, что системы программирования на этом языке имеются практически на всех современных ЭВМ.

Программа на языке Бейсик - это последовательность команд, которые можно было бы одну за другой давать ЭВМ в режиме непосредственного ввода. Если же эти команды пронумеровать и ввести в ЭВМ, то машина автоматически будет работать по этой программе.

Начнем рассмотрение программ на Бейсике со следующего примера. Пусть нам требуется определить время движения по заданным скорости и длине пути. Для решения этой задачи на ЭВМ достаточно  четырех команд. 

Например:

S = 720          ¿

- указание длины пути

V = 60            ¿

- указание скорости движения

T = S/V          ¿

- расчет времени

? T                  ¿

- вывод времени

12     

- результат вычислений

 

Операторы в языке Бейсик - это команды, к которым приписаны некоторые номера и которые после ввода будут храниться в памяти ЭВМ.

Для записи операторов в Бейсике используются английские слова PRINT, INPUT, END и т. д. Таким образом, программа является переводом алгоритма на язык программирования.

Рассмотрим теперь операторы этой программы по отдельности. Первый оператор - оператор PRINT. Это оператор вывода сообщений на экран ЭВМ. Он в точности выполняет предписываемую алгоритмом операцию - вывод.

Оператор INPUT - это оператор ввода исходных данных.

Оператор - END - это оператор конца выполнения программы.

Программы на языке Бейсик - это пронумерованные последовательности строк, содержащие операторы и комментарии.

Комментарии  (оператор REM) в программах на языке Бейсик начинаются со знак апострофа: ¢. Комментарии могут стоять в конце строки либо занимать всю строчку целиком. С помощью комментариев можно включать программа слова и фразы, поясняющие смысл выполняемых действий. Для программы очень важно следующее свойство: чем понятнее программа, тем она лучше.

Для нумерации строк в программах на Бейсике обычно используются целые числа 10, 20, 30, 40, и т.д. Остальные номера остаются не заполненными, чтобы позже можно было вставлять новые операторы. Второе важнейшее свойство программ: чем проще вносить в программу изменения и дополнения, тем она лучше.

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

Составление программ на языке Бейсик лучше всего начинать с составления алгоритма для ЭВМ на родном языке, а уже затем записывать этот алгоритм на языке Бейсик. Такой способ дает возможность составлять более понятные программы, которые легче читать и легче исправлять. Поэтому в программах, составленных таким образом, легче получить на ЭВМ результаты решения задач.

Написание программ при таком подходе состоит в переводе русских слов, с помощью которых записываются алгоритмы, в слова используемого языка программирования. После составления программы начинается ее вывод и испытания на ЭВМ. Эта работа состоит в следующем:

                        ввод программы;

                        выполнение программы;

                        исправление программы; 

Ввод каждого оператора должен обязательно начинаться с нажатия клавиши ввода команды ¿. Только после этого ЭВМ запоминает введенный оператор и вставляет его в соответствующее место программы. Операторы могут вводится последовательно, начиная с младших номеров, но могут вводиться в любом порядке.

Ввод длинных программ требует много времени. Поэтому для ускорения процесса испытания и отладки лучше всего вводить и проверять их по частям. Первыми лучше всего вводить операторы ввода и вывода данных. Это позволяет начать диалог с программой, даже не введя еще всего текста. Действуя таким образом, можно намного раньше начать исправлять ошибки, прокравшиеся в программу.

Выполнение программ на Бейсике начинается по команде RUN¿

(RUN - выполнять). Диалоговые программы, как правило, предлагают ввод определенных данных. В таких ситуациях ЭВМ приостанавливает выполнение программы и ждет ввода данных с клавиатуры. Признаком конца ввода данных всегда служит нажатие клавиши ввода команды ¿. Выполнение программы ЭВМ продолжит только после нажатия этой клавиши.

Технику ввода и проверки программы по частям рассмотрим на примере разобранной ранее программы расчета времени движения. Одним из лучших решений будет ввод первыми операторов ввода:

20 PRINT «расчет времени» ¿

60 PRINT «время=»; Т ¿

Введенную часть программы  уже можно запустить на выполнение командой RUN. В результате на экране ЭВМ получим:

RUN ¿

- запуск программы

расчет времени

- результаты выполнения

время= 0

 

 

 Отметим, что всем числовым переменным в программах на Бейсике перед началом выполнения любой программы автоматически присваиваются нулевые значения. Поэтому введенная часть программы из двух операторов дает нулевое значение времени, которое извлекается из переменной Т.

Для получения времени движения при произвольной скорости и длине пути необходимо ввести следующие три оператора:

30 INPUT «путь=»; S ¿

- ввод длины пути

40 INPUT «скорость=»; V ¿

- ввод значения скорости

50 T = S/V  ¿

- расчет времени движения

 

 

Теперь можно запустить программу и ввести любые значения длины пути и скорости движения:

RUN ¿

- запуск программы

расчет времени

 

путь=? 720 ¿

- ввод длины пути

скорость=? 60 ¿

- ввод скорости

время=12

- конечный результат

 

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

Текст программы, хранящейся в памяти ЭВМ, можно увидеть на экране по команде  LIST. ¿

(LIST - список). В рассматриваемом примере результатом будет такой текст:

20 PRINT «расчет времени»

30 INPUT «путь=»; S

40 INPUT «скорость=»; V

50 T = S/V

60 PRINT «время=»; T

 

Для завершения ввода текста программы осталось ввести два оставшихся оператора:

10 ¢  время пути ¿

70 END ¿

Для вывода отдельного оператора программы в программе LIST указывается номер соответствующей строки. Пример такой команды:

LIST 50 ¿

Результатом будет появление на экране строки с номером 50:

50 T=S/V

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

LIST 30 - 40 ¿

Результат:

30 INPUT «путь=»; S

40 INPUT «скорость=»; V

Изменения в  отдельных строках программы можно проводить вводом нового варианта строки либо редактированием отдельных символов или части строки.

Редактирование внутри строки проводится с помощью курсора. Первый - ввести пустой оператор с номером удаляемой строки и нажать клавишу  ¿. Второй - ввести команду удаления строк DELETE. Например, если нужно удалить строки с 30-й по 50-ю, то нужно ввести команду

DELETE 30 - 50 ¿

Удаление из памяти всего текста программы осуществляется командой

NEW ¿           

(NEW - новый).

Нарушение правил языка программирования при записи команд и операторов в программах называются синтаксическими ошибками. Такие ошибки ЭВМ обнаруживает автоматически. При обнаружении этих ошибок в программах ЭВМ прерывает выполнение программы и выводит на экран сообщение с указанием номера ошибочного оператора. Тексты этих сообщений зависят от используемой системы программирования.

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

LIST ¿

либо ввести команду вида:     LIST 50 ¿  где 50 - это номер нужной строки.

 

Вопросы, упражнения и задания для самопроверки

ВОПРОСЫ:

                        Что такое программа для ЭВМ?

                        Какими командами:

            а) программа на Бейсике запускается на выполнение;

            б) выводится на экран текст всей программы;

            в) выводится на экран отдельные операторы программы;

            г) выводятся на экран фрагменты программы?

3. Что является признаком конца исправления оператора?

4. Что является признаком конца ввода данных в ответ на вопросы ЭВМ?

 

УПРАЖНЕНИЯ:

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

                        Составьте алгоритм и программу решения:

            а) линейного уравнения;

            б) системы линейных уравнений с двумя неизвестными.

 

ЗАДАНИЯ:

                        Введите и испытайте на ЭВМ программу расчета времени движения.

                        Составьте план ввода, введите и испытайте на ЭВМ программу:

            а) расчета средней скорости движения:

            б) решения системы линейных уравнений с двумя неизвестными.

 

3. Графические программы на Бейсике

Отличительной чертой особенностью современных ЭВМ является возможность  предоставлять людям  информацию в наглядной графической форме. В языке Бейсик для таких ЭВМ включены операторы ввода на экран ЭВМ как символьной, так и графической информации.

Язык Бейсик включает средства вывода на экран таких элементов графической информации, как точки, отрезки прямых линий, дуги, окружности, рамки, а также операторы для вывода надписей и раскраски точек и фигур.

Рассмотрение графических средств Бейсика можно начать с программы вывода на экран  рисунка первомайского праздника. Приведем описание алгоритма и соответствующую картинку:

АЛГ «ПЕРВОМАЙСКИЙ ПРАЗДНИК»

НАЧ

       КРАСНЫЙ ФЛАГ

       НАДПИСЬ  МИР, ТРУД МАЙ

       СИНИЙ ШАРИК

КОН

 

МИР, ТРУД, МАЙ

 

 

 

 

 

 


Детальный алгоритм:

АЛГ «ПЕРВОМАЙСКИЙ ПРАЗДНИК»

НАЧ

      ЛИНИЯ (80, 40) - (80, 160), КРАСНАЯ

      РАМКА (80, 50) - (180, 120), КРАСНАЯ

      РАСКРАСКА (130, 90), КРАСНАЯ

      НАДПИСЬ (10, 2)

     МИР, ТРУД, МАЙ

     ОКРУЖНОСТЬ (210, 60), 30, СИНЯЯ

      РАСКРАСКА (210, 60), СИНЯЯ

      ЛИНИЯ (210, 90) - (210, 120), СИНЯЯ

КОН

Программа на Бейсике:

10 ¢ первомайский праздник

20 С1=4: С2=1 ¢ графика

30 LINE (60, 40) - (60, 160), C1

40 LINE (60, 50) - (160, 120), C1, B

50 PAINT (130, 90), C1

60 LOCATE 10, 2

70 PRINT «мир, труд, май»

80 CIRCLE (210, 50), 30, C2

90 PAINT (210, 50), C2

100 LINE (210, 80) - (210, 120), C2

110 END

В 20-й строке записаны два присваивания: С1 = 4 и С2 = 1. Эти два присваивания фиксируют коды цветов: С1 - для красного, а С2 - для синего.

Ввод этой программы в ЭВМ лучше всего проводить по частям. В начале следует ввести и апробировать операторы 10, 20, 30, проверив начало программы, затем операторы 40 и 50, осуществляющие вывод рамки и раскраску флага. Далее необходимо подправить в программе координаты рамки, переместив флаг в центр экрана. После этого ввести и подкорректировать операторы 60 и 70, обеспечивающие вывод надписи. И, наконец, ввести операторы 80, 90 и 100, которые выводят и раскрашивают изображение шарика.

Вывод элементов изображения на экран ЭВМ производится в Бейсике следующими операторами:

COLOR C1, C2

·      цвет фона = с2, букв = с1

PSET (X, Y), C

 

 

LINE (X1,Y1) - (X2,Y2),  C

 

 

LINE (X1,Y1) - (X2, Y2), C, B

 

 

 

 

CIRCLE (X, Y), R, C

 

 

CIRCLE (X, Y), R, C, α1, α2

 

 

 

PAINT (X, Y), C

 

 

 

 

 

CLS

·      точка (х, у), с, где х, у - координаты точки на экране, а с - ее цвет.

 

·      линия (x1, y1) - (x2, y2), с

Здесь (х1, у1) и (х2, у2) - координаты концов отрезка.

·      рамка ( х1, у1)  - (х2, у2) - координаты концов диагонали рамки. Стороны рамки параллельны  сторонам экрана. Символ В в этом варианте оператора LINE означает, что на экран будет вводиться рамка, а не линия.

·      окружность (х, у), r, c

Здесь (х, у) - координаты центра окружности, а r - ее радиус.

·      дуга (x, y), r, c, α1, α2.

Здесь a1, a2  - углы дуги окружности, задаваемые в радианах.

 

·      раскраска (х, у), с.

Здесь (х, у) - координаты точки, из которой начнется раскраска. Напомним, что раскрашиваться будет та фигура, контур которой имеет тот же самый цвет, что и указанный в операторе PAINT

·      очистка

В учебных ЭВМ возможен вывод на экран в графическом режиме нескольких градаций цветов. Номера этих цветов зависят от типа ЭВМ в диалектах языка Бейсик.

Вывод надписей в отечественных компьютерах проводится с помощью двух операторов: оператора указания места вывода - LOCATE Px, Py и оператора вывода сообщений PRINT, в котором указывается, что должно выводиться.

LOCATE Px, Py

PRINT «фраза»

n место надписи (Px, Py)

n вывод «фраза»

 

В персональном компьютере для вывода графических изображений, прежде всего, требуется задать режим вывода на экран графической информации. Для этого используется оператор SCREEN 2 или SCREEN 12.

 

Вопросы, упражнения и задания для самопроверки

ВОПРОСЫ:

                       Каковы размеры экрана при выводе графической информации на ваших машинах?

                       Какие цвета есть на вашем компьютере и как они кодируются?

                       Как вывести на экран окружность, если такого оператора нет в языке программирования?

УПРАЖНЕНИЯ:

Составьте описание, детальный алгоритм и программу на Бейсике для получения изображений;

а) домика;    б) автомобиля;    в) трактора;     г) книги

д) дворца;     е) цветка;             ж) рыбки;        з) птички.

ЗАДАНИЯ:

                       Составьте план ввода и испытаний для своей программы.

                       Введите свою программу в ЭВМ в соответствии с установленным планом.

4. Выбор действий в Бейсике

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

Выбор действий в Бейсике может кодироваться двумя способами: частным и общим. Начнем с частного способа, который применим только в ситуациях, когда выбору подлежат группы из одного - двух действий.

Для примера рассмотрим алгоритм «оракул», в котором машина предрекает, будет ли вам сопутствовать удача в ваших делах. Логика этого оракула проста - он случайным образом выбирает одну из двух фраз: «Вас ждет успех» или «Вас ждет неудача». Соответствующая программа на Бейсике приведена справа:

 

АЛГ    «ОРАКУЛ»

НАЧ

     Р:= СЛУЧАЙНОЕ (0,1)

     ЕСЛИ Р<0,5  ТО

            ВЫВОД ВАС ЖДЕТ УСПЕХ

     КЕСЛИ

     ЕСЛИ Р > = 0,5 ТО

            ВЫВОД ВАС  ЖДЕТ НЕУДАЧА

      КЕСЛИ

КОН  

10 ¢ оракул

 

20 Р = RND (- TIME)

30 IF P<  .5 THEN

          PRINT «Вас ждет успех»

 

40 IF P > =   .5 THEN

          PRINT «Вас ждет неудача»

 

 

50 END

 

Выполнение этой программы на ЭВМ после ее запуска командой RUN будет состоять в следующем. Выполняя 20-й оператор, ЭВМ вычислит некоторое случайное число р. Аргумент - TIME в датчике случайных чисел означает, что случайное число будет вычисляться в зависимости от значения счетчика времени, имеющегося в машине. По этой причине каждое новое обращение к этой программе будет давать совершенно новое непредвиденное предсказание.

Далее в 30-м операторе в соответствии с алгоритмом проверяется значение полученного случайного числа: р < 0,5? Если это так, то на экран будет введена фраза «Вас ждет успех». Затем, в 40-м операторе проверяется: р >= 0,5? Если число р больше или равно 0,5, то на экране появится фраза: «Вас ждет неудача».

Кодирование простейших условных действий, как видно из примера, заключается в замене слова «если» на слово «IF» и слова «то» на слово «THEN». Роль слова «кесли» в этом правиле играет номер следующего оператора.

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

Оператор безусловного перехода в Бейсике записывается с помощью словосочетания GO TO (GO TO - переход к …). Оператор условного перехода кодируется с помощью слов IF...THEN GO TO (если ... переход к …).

Рассмотрим теперь программу «оракул», закодированную по тому же алгоритму,  с помощью операторов условного и безусловного переходов:

 

АЛГ «ОРАКУЛ»

НАЧ

      Р:= СЛУЧАЙНОЕ (0,1)

      ЕСЛИ Р > 0,5 ТО

         ВЫВОД  ВАС ЖДЕТ УСПЕХ

     

      ИНАЧЕ

         ВЫВОД  ВАС ЖДЕТ НЕУДАЧА

      КЕСЛИ

КОН

10 ¢ оракул

 

20 Р = RND (-TIME)

30 IF NOT P >.5 THEN GO TO 60

40 PRINT «Вас ждет успех»

50 GO TO 80

60 ¢ иначе

70 PRINT «Вас ждет неудача»

80 ¢кесли

90 END

  Запись IF NOT P> 0,5 THEN GO TO 60 - это оператор условного перехода. Фраза  NOT P >0,5 означает: «неверно, что р > 0,5». Поэтому если случайное число р, вычисленное машиной, окажется меньше или равно 0,5 то условие NOT P >0,5 окажется выполненным и ЭВМ должна будет выполнить оператор GO TO 60.

Оператор GO TO 60 - это оператор безусловного перехода, выполнение перехода которого заключается в продолжении вычислений с оператора 60. В данном случае ЭВМ выведет фразу «Вас ждет неудача» и закончит свою работу.

 Если же случайное число р окажется больше 0,5, то условие NOT P > 0.5 окажется ложным. В этом случае ЭВМ перейдет к выполнению следующего по тексту программы оператора и выведет фразу «Вас ждет успех». Далее в строке 50,  стоит оператор GO TO 80 - оператор перехода к 80-му оператору. Выполняя его, ЭВМ изменит ход выполнения программы и завершит выполнение программы, не вывода фразы «Вас ждет неудача».

Правила кодирования:

а) слово если заменяется на слова IF NOT:

б) слово то заменяется на оператор перехода THEN GO TO, но номера операторов, куда должен производиться переход, заполняются позже;

в) слово инес заменяется на два оператора: оператор перехода GO TO к концу выбора и оператор условного перехода IF NOT с тем же условием;

г) слово иначе также заменяется на два оператора: оператор перехода GO TO к концу выбора и оператор - комментарий иначе;

д) слово кесли переписывается в строку - комментарий кесли, являющуюся концом выбора;

е) во всех операторах GO TO заполняются номера строк, куда производится переход, - номер конца выбора в операторах GO TO и номер начала следующей альтернативы в операторах условного перехода IF NOT . . . THEN GO TO.

В качестве примера рассмотрим перевод на язык Бейсик диалогового алгоритма решения на ЭВМ квадратного уравнения:

АЛГ «РЕШЕНИЕ КВАДРАТНОГО УРАВНЕНИЯ»

НАЧ

     ВЫВОД  КВАДРАТНОЕ УРАВНЕНИЕ

     ВЫВОД а * х ^ 2+ b*x+c=0

     ЗАПРОС а= , а

     ЗАПРОС b= , b

     ЗАПРОС с= , с

     d: = b2 - A * a * c

     ЕСЛИ а = 0 ТО

        ВЫВОД НЕДОПУСТИМО: а =  0

ИНЕС  d < 0 ТО

     

 

ВЫВОД КОРНЕЙ НЕТ

 

ИНАЧЕ

       х1: = (-b +) / (2 * a)

       x2: = (-b - ) / (2 * a)

       ВЫВОД КОРНИ:

       ВЫВОД Х1 = , Х1

       ВЫВОД Х2 = , Х2

КЕСЛИ

КОН    

10 ¢ решение квадратного уравнения

 

 

30 PRINT «квадратное уравнение»

40 PRINT «ax ^ 2 + bx +c = 0»

50 INPUT «A =»; А

60 INPUT «B =»; В

70 INPUT «C =»; C

80 D = B ^ 2 - 4 * A *  C

90 IF NOT A = 0 THEN GO TO 120

100 PRINT «недопустимо: а = 0»

110 GO TO 210

120 IF NOT D < 0 THEN GO TO     150

130 PRINT «корней нет»

140 GO TO 210

150 ¢ иначе

160 X1 = (- B + SQR (D)) / (2 * A)

170 X2 = (- B - SQR (D)) / (2 * A)

180 PRINT «корни

190 PRINT «x1 =»; х1

200 PRINT «x2 =»; x2

210 ¢ кесли

220 END

 

 

 

 

 

 

 

 

 

 

 

  Для упрощения понимания операторов условного перехода - IF . . . THEN GO TO - при их кодировании полезно применять следующее правило. Отрицания условий выбора лучше записывать  не в форме со словами NOT, а явно выразив отрицание условий выбора, записанных в алгоритме. Так, в рассмотренной программе вместо фразы  NOT А = 0 - «неверно, что а = 0» - лучше в соответствии с законами логики записывать условие А < > 0, означающее а ≠ 0, а вместо условия NOT D > 0 - «неверно, что d > 0» - записать условие D < = 0, означающее, что d ≤ 0.

 

Вопросы, упражнения и задания для самопроверки

 

ВОПРОСЫ:

                       Как кодируется на Бейсике выбор действий в простейших случаях?

                       Что такое операторы безусловного и условного переходов?

                       Как кодируется выбор действий на Бейсике в общем случае?

                       Как на Бейсике записываются отрицания условий?

УПРАЖНЕНИЯ:

                       Составьте диалоговый алгоритм решения линейных уравнений с анализом условия  а=0 и закодируйте его на языке Бейсик.

                       Составьте диалоговый алгоритм решения системы двух линейных уравнений с анализом условия D=0 и закодируйте его на языке Бейсик.

Примечание. В языке Бейсик буквы D и d означают одно и тоже имя переменной.

ЗАДАНИЯ:

Составьте план ввода и испытаний программы решения:

а) квадратного уравнения;

б) линейного уравнения;

в) системы двух уравнений

и проведите отладку программы на ЭВМ.

 

5. Повторение действий на Бейсике

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

Изложение правил начнем с разбора «звездного неба» из  п  случайных точек.

АЛГ «ЗВЕЗДНОЕ НЕБО»

НАЧ

     ЗАПРОС ЗВЕЗД = , п

     ГРАФИКА

     xm: = 255; ym: = 191; cm: = 3

     om К = 1 ДО П ЦИКЛ

         х: = хm * СЛУЧАЙНОЕ (0,1)

         у: = уm * СЛУЧАЙНОЕ (0,1)

         с: = сm * СЛУЧАЙНОЕ (0,1)

         ТОЧКА (Х, У), С

     ЦИКЛ

КОН

10 ¢ звездное небо

 

20 INPUT «звезд =»; N

30 ¢  графика

40 XM = 255: YM = 191: CM =3

50 FOR K = 1 TO N

60 X = XM * RND (1)

70 Y = EM * RND (1)

80 C = CM * RND (1)

90 PSET (X, Y), C

100 NEXT K

110 END

 

Приведенная программа формирует картинку  из  п  случайных точек. Количество точек указывает человек, отвечая на вопрос «звезд =?», который выведет 30-й оператор программы. Далее ЭВМ фиксирует число точек по горизонтали хm = 255, по вертикали уm = 191 и количество цветов сm = 3. Зная характеристики своих ЭВМ, вы должны изменить эти значения так, чтобы звездное небо заняло весь экран, и звезды были бы всех возможных цветов.

Для повторения действий заданное число раз в языке Бейсик существует оператор FOR. Такой оператор мы видим в 50-й строке. В данной программе он означает, что операторы 60, 70, 80 и 90, вплоть до оператора NEXT в 100-й строке, будут выполняться  п  раз при изменении  к  от 1 до п. Это означает, что п раз (с помощью датчика случайных чисел) будут вычислены координаты х, у  и цвет  с точки на экране и она будет выведена на экран 100-м оператором.

В общем случае повторение действий заданное число раз в Бейсике кодируется по следующей схеме:

 

Повторение:

от «к» = «l» до «п» цикл

        «действия»

цикл

Бейсик:

100 FOR «k» = «1» TO «n»

       . . .   «действия»

180 NEXT «k»

 

Здесь «k» - некоторая числовая переменная, а «l» и «n» - числа или формулы, выражающие начальное и конечное  значения переменной «k». действия в такого вида циклах повторяются n-l+1  раз для значений k = l, l+1, l+2, . . . , n.

Конструкции повторения действий с проверкой условия пока в языке Бейсик кодируются с использованием операторов условного и безусловного перехода. Изучение правил можно начать с проверки на ЭВМ программы, реализующей алгоритм игры «Угадай-ка».

 

АЛГ «ИГРА: УГАДАЙ-КА»

НАЧ

     Х: = СЛУЧАЙНОЕ (1,100)

     ВЫВОД УГАДАЙ ЧИСЛО

     ВЫВОД ОТ 1 ДО 100

     ЗАПРОС ЧИСЛО = , Р

     ПОКА Р ≠ Х ЦИКЛ

        ЕСЛИ Р > Х ТО

            ВЫВОД МНОГО

        КЕСЛИ

        ЕСЛИ  Р < Х ТО

            ВЫВОД МАЛО

        КЕСЛИ

         ЗАПРОС  ЧИСЛО =  Р

    КЦИКЛ

    

 ВЫВОД  МОЛОДЕЦ, УМНИЦА!

КОН

10 ¢ игра: угадай-ка

20 DEFINT X, P ¢ - WTKST

30 X = 99 * RND (1) + 1

40 PRINT «угадай число»

50 PRINT «от 1 до 100»

60 INPUT «число =»; Р

70  IF NOT X < > P GO TO 120

80     IF P > X THEN

           PRINT «много»

 

90      IF  P < X THEN

           PRINT «мало»

 

100 INPUT «число =»; Р

110 GO TO 70

120 ¢ кцикл

130 PRINT «молодец, умница

140 END

 

Прежде всего отметим, что приведенная программа начинается с оператора DEFINT P, Х. Этот оператор означает, что переменные Х и Р в качестве значений будут принимать не вещественные, а целые числа. Далее, в операторе 30, с помощью датчика случайных чисел ЭВМ «некоторое вещественное число, умножает его на 99, прибавляет к нему 1 и запоминает в переменной Х, отбросив дробную часть.

Затем ЭВМ начинает диалог, спрашивая у человека число-ответ и отвечая «мало» или «много» до тех пор, пока он не угадает задуманное машиной число. Ввод и проверку этой программы так же полезно проводить  по частям. Первыми следует ввести и проверить операторы 20, 30, 40 и 50, которые фиксируют случайное число и начинают диалог. Далее нужно ввести операторы 60, 80 и 90 - ввода и анализов ответов. Запуская только эту часть программы, уже можно начать игру-эксперимент с ЭВМ.

Вариант игры становится полным после ввода операторов 100, 110, 70, 120 и 130 - повторного запроса чисел, перехода к началу цикла, анализа совпадения чисел, выхода из цикла и «поздравления с победой». Именно эти операторы - 70, 110 и 120 организуют цикл в повторениях действий вычислительной машины.

Общий принцип кодирования циклов такого типа с повторением действий пока на языке Бейсик  можно изобразить следующей схемой:

200 IF NOT (<условие>) THEN GO TO 300

       . . .      <операторы>

290 GO TO 200

300 ¢ кцикл

            ПРАВИЛА КОДИРОВАНИЯ:

а) слово пока заменяется на слова IF NOT, а слово цикл - на оператор перехода на последний оператор цикла;

б) перед последним оператором цикла ставится оператор перехода к началу цикла.

Примечание: вместо записи NOT (<условие>) при организации цикла можно записывать отрицание этого условия, выраженное на Бейсик. В приведенном примере оператор

70 IF NOT X < > P THEN GO TO 110

может быть заменен на равносильный ему оператор

70 IF X = P THEN GO TO 110.

 

Вопросы и упражнения и задания для самопроверки

ВОПРОСЫ:

                       Как на Бейсике кодируется цикл со счетчиком?

                       Как изменяется значение счетчика цикла?

                       Как на Бейсике кодируется пока-цикл?

УПРАЖНЕНИЯ:

                       Составьте алгоритмы и программы формирования изображений из случайных:

а) отрезков;                         б) рамок;

в) окружностей;                   г) кругов.

2. Модифицируйте алгоритм и программу игры «Угадай-ка» так, чтобы можно было сыграть с ЭВМ несколько раз.

ЗАДАНИЯ:

                        Выведите и отладьте программу вывода звездного неба по приведенному плану ввода и испытаний.

                        Составьте план ввода и испытаний программы формирования изображений с выбранными графическими элементами. Введите по этому плану свою программу в ЭВМ и проведите эксперименты.

                        Введите и отладьте на ЭВМ программу игры «Угадай-ка» по приведенному плану ввода и испытаний.

                        Составьте план ввода и испытаний модифицированной программы игры «Угадай-ка» и проведите ее отладку на ЭВМ.

 

6. Организация подпрограмм на Бейсике

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

В качестве примера программ использования подпрограмм рассмотрим задачу рисования графиков функций на экране ЭВМ.

Задача построения графика функции у = f (x) на экране ЭВМ предполагает расчет и вывод последовательности точек с координатами (xk, yk), где xk = f (xk). Расчет должен производиться на некотором заданном отрезке [a, b] с шагом h = (b - a) / n между точками, где п - это заданное число разбиений.

В качестве конкретного начального примера рассмотрим построение на экране ЭВМ графиков функций у = х2.

Представленные ниже алгоритм и программа состоят из трех частей:  первая часть строит график на экране, вторая вычисляет значения функций, третья организует ввод данных - параметров графика (области определения [a, b], числа разбиений  п  и области значений функций [c, d]).

АЛГ «ГРАФИКИ ФУНКЦИЙ»

НАЧ

       ВВОД ДАННЫХ

       ГРАФИКА

      

 

       UM: = 255; YM: = 191

       h: = (b - a) / n

       от к = 0 до n цикл

          х: = a + h * k

          ВЫЧИСЛЕНИЕ: У = f(x)

          u: = (x - a) * um / (b - a)

          y: = (d - y) * vm / (d - c)

          ТОЧКА (u, v), ЗЕЛЕНАЯ

      КЦИКЛ

КОН

10 ¢ графики функций

 

20 GOSUB 400 ¢ ввод данных

30 C1 = 2 ¢ цвет графика

40 ¢ графика

50 UM = 255: VM = 191 ¢ размеры экрана

60 H = (B - A) / N

70 FOR K = 0 TO N

80        X = A + N * K

90         GOSUB 200 ¢ y = f(x)

100       U = (X - A) * UM / (B - A)

110       V = (D - Y) * VM / (D - C)

120       PSET (U, V), C1

130 NEXT

140 END

 

Основная часть алгоритма и программы, как видно из их описаний, организуют ввод данных, а затем осуществляют в цикле от k = 0 до n  вычисление координат точек графика некоторой функции y = f(x) и вывод их на экран. Конкретный вид функций в этой части программы и алгоритма не определяется. Описание способа вычисления значений функции выделяется во вспомогательный алгоритм. В программе на Бейсике появляется соответствующая подпрограмма:

 

АЛГ «ВЫЧИСЛЕНИЕ: y = f(x

АРГ  Х: ВЕЩ

РЕЗ   У: ВЕЩ

НАЧ

         У: = Х2

КОН

200 ¢ ВЫЧИСЛЕНИЕ ФУНКЦИЙ

 

 

 

210 Y = X * X

230  RETURN

 

В данном примере строится график функции у = х2. На экране ЭВМ мы должны увидеть фрагмент параболы появится на экране, зависит от исходных данных, ввод которых выделен в отдельный вспомогательный алгоритм и соответствующую подпрограмму:

 

АЛГ  «ВВОД ДАННЫХ»

РЕЗ  a, b, c, d: ВЕЩ, n: ЦЕЛ

НАЧ

      ВЫВОД ПАРАМЕТРЫ ГРАФИКА

      ЗАПРОС  СЛЕВА: а =, а

      ЗАПРОС  СПРАВА: b =, b

      ЗАПРОС  СНИЗУ: c =, c

      ЗАПРОС  СВЕРХУ: d =, d

      ЗАПРОС   n =, n

КОН

400 ¢ ввод данных

 

 

410 PRINT «параметры графика»

420 INPUT «слева: а =»; А

430 INPUT «справа: b =»; B

440 INPUT «снизу: c =»; C

450 INPUT «сверху: d =»; D

460 INPUT«n =»; N

470 RETURN

 

ЭВМ, как видно из этого алгоритма, запросит числа a, b - концы отрезка [a, b], c и d - нижние и верхние границы области значения функции, а также n - число точек графика, которые ЭВМ нарисует на экране. Для рассмотрения графика функции на другом отрезке или получения на графике большого числа точек необходим запуск программы с новыми исходными данными.

Главная особенность этого алгоритма - возможность его применения для построения графиков любых функций в любой части их области определения. Выделение вычисления значений функции в отдельную подпрограмму значительно упрощает замену функции. Для построения графика функции, например y = x sin x, необходимо будет заменить подпрограмму на новую:

АЛГ «ВЫЧИСЛЕНИЕ: y = f(x)

АРГ   Х: ВЕЩ

РЕЗ    У: ВЕЩ

НАЧ

        У: = Х * SIN X

КОН

200 ¢ вычисление функции

 

 

 

210 Y = X * SIN (X)

230  RETURN

Вызов подпрограмм в зыке Бейсик реализуется оператором   GOSUB <номер>,       где <номер> указывает начало подпрограммы. Например, оператор GOSUB 200 означает переход к подпрограмме, начинающейся с 200-го оператора.

Правила выполнения подпрограмм можно проиллюстрировать следующей схемой:

50 . . . . . . . . .

60 GOSUB 200

70 <оператор>

200 ¢ подпрограмма

. . .  . . . . . . . . . . . . . . .

280 RETURN

 

Вычисление оператора GOSUB состоит в переходе к выполнению первого оператора подпрограммы, а ее завершении оператор RETURN осуществляет переход к выполнению оператора, следующего за оператором GOSUB в основной программе.

Описание подпрограммы должно начинаться с ее названия - названия решаемой подзадачи или реализуемой функции. Концом подпрограммы в Бейсике должен быть оператор возврата из подпрограммы RETURN (RETURN - возврат).

Аргументы и результаты вспомогательных алгоритмов в подпрограммах называются параметрами. Передачу параметров-аргументов вспомогательных алгоритмов в подпрограммах  на Бейсике оформляются в следующем виде:

 

<ПОДЗАДАЧА> (x1 = a, x2 = b)

100   X1 = A: X2 = B

110   GOSUB 600: ¢ подзадача

 

где х1, х2 - аргументы вспомогательного алгоритма. Аналогично на языке Бейсик приходится оформлять и передачу результатов выполнения вспомогательных алгоритмов, если таковы есть.

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

Изображение двухэтажного дома на экране ЭВМ в соответствии с ранее составленным алгоритмом построит следующая программа на Бейсике:

 

АЛГ «ДВУХЭТАЖНЫЙ ДОМ»

НАЧ

  L1: = 60; H1: = 5

  ОТ  К = 1  ДО  3 ЦИКЛ

   СТЕНА С ОКНОМ (Х = L1 * K, Y = H1, L = L1, H = H1, C = ЗЕЛЕНЫЙ)

    СТЕНА С ОКНОМ (X = L1 * K, Y = 2 * H1, L = L1, H = H1, C = ЗЕЛЕНЫЙ)

 

КЦИКЛ

КРЫША (Х = L1, Y = H1, L = 3 * L1, H = H1, C = БЕЛЫЙ)

КОН

10 ¢ двухэтажный дом

20 ¢ графика

30 L1 = 60: H1 = 50: C1 = 3: C2 = 4

40 FOR K = 1 TO 3

50   X = K * L1: Y = H1: L = L1: H                 = H1: C = C1

60   GOSUB 200 ¢ стена с окном

70    X = K * L1: Y = H1: L = L1:: H = H1: C = C1

80   GOSUB 200 ¢ стена с окном

90  NEXT K

100   X = L1: Y = H1: L = 3 * L1: C = C2

110 GOSUB 400 ¢ крыша

120  END

 

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

АЛГ   «СТЕНА С ОКНОМ»

АРГ  x, y, l, h :ВЕЩ, С: ЦЕЛ

НАЧ

      РАМКА (x, y) - (x + l, y + h), c

      РАМКА (x+3 * l / 5, y + h / 4)

                - (x +4 * l / 5, y + h / 2), c

 

КОН

200 ¢ стена с окном

210 ¢ арг: х, у, 1, h: вещ

220 ¢    с - цвет

230  LINE (X, Y) - (X + L, Y + H),        

        C, B

240  LINE (X + 3 * L /  5, Y + H / 4) - (X + 4 *  L / 5, Y +  H / 2), C, B

250  RETURN

 

АЛГ   «КРЫША»

АРГ  x, y, l, h: ВЕЩ, С: ЦЕЛ

НАЧ

       ЛИНИЯ (x, y) - (x + l, y), c

       ЛИНИЯ (x, y) - (x + l / 2, y - h), c

       ЛИНИЯ (x + l / 2, y - h) - (xx + l, y), c

 

КОН

400 ¢ крыша

410 ¢ арг: X, Y, L , H,: вещ

420 ¢ С - цвет крыши

430 LINE (X, Y) - (X + L, Y), C

440 LINE (X, Y) - (X + L / 2, Y - H), C

450 LINE (X + L / 2, Y - H) - (X + L, Y), C

460 RETURN

 

Работу с этой программой на ЭВМ можно начать с построения изображения крыши. Для этого необходимо ввести операторы 30, 100, 110, 120 - вызовы подпрограммы рисования крыши с соответствующими координатами, которые задаются в подпрограмме параметрами операторы 400-460 - операторы самой подпрограммы.

Далее можно ввести подпрограмму рисования стены с окном - операторы 200-250 - и операторы вызова этой подпрограммы 50 и 60, а также часть оператора 40 в таком виде: 40 К = 1. Затем после ввода и отладки обеих подпрограмм можно ввести полный вариант построения двухэтажного дома целиком. Для этого осталось ввести операторы 40, 70, 80 и 90.

Добавляя к этой программе новые подпрограммы рисования других блоков, или перестраивая программу, можно получать на экране ЭВМ изображения разнообразных домов, улиц и даже целых поселков. Существенным при этом является использование уже имеющихся вспомогательных алгоритмов и подпрограмм. В тоже время, усовершенствуя вспомогательные алгоритмы и подпрограммы, можно получать более красивые изображения и искать гармонию между отдельными частями здания и композицией в целом.

 

Вопросы и упражнения и задания для самопроверки

 

ВОПРОСЫ:

                       Как на Бейсике записывается вызов подпрограмм?

                       Как в языке Бейсик оформляются подпрограммы?

                       Каков  механизм выполнения подпрограмм в языке Бейсик?

                       Как на Бейсике оформляется передача параметров-аргументов?

УПРАЖНЕНИЯ:

                       Составьте вспомогательный алгоритм и подпрограмму на языке Бейсик для вычисления функции:

а) у =   х    при х > 0,         б) у =  sin x   при х ≥ 0,

            0    при х ≤ 0;                       0       при х < 0;

 

2. Составьте программу на Бейсике для построения:

а) трех домиков;                 б) трехсекционного дома;

ЗАДАНИЯ:

1.    Составьте план ввода и испытаний программы рисования графика функции. Введите и отладьте программу по составленному плану. Проведите исследование функции - найдите по графику корни функции или ее максимумы и минимумы.

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

 

7. Переменные и массивы в Бейсике

Одним из основных направлений использования ЭВМ является накопление и обработка данных - различных таблиц, справочников, словарей и другой информации, большую часть которой занимают не столько числовые, сколько символьные данные.

В Бейсике для обработки и хранения символьной информации используются символьные переменные и массивы. Все переменные и массивы в Бейсике принадлежат к одному из трех основных типов:

а) вещественные;

б) целочисленные;

в) символьные.

Если в программе на языке Бейсик нет описаний типов переменных и массивов, то все они считаются вещественными.

Для вычисления целочисленных переменных в начале программы должен быть записан оператор DEFINT. Например, оператор

            DEFINT  I, J, K, L

Данный оператор объявляет, что все переменные и массивы, начинающиеся с букв I, J, K, L, будут принимать целочисленные значения.

Второй способ получения в языке Бейсик переменных и массивов с целочисленными значениями - приписывание к имени символа процента: %. Примеры: N%, K% - это имена целочисленных переменных.

Для выделения символичных переменных и массивов в программах на Бейсике можно использовать оператор DEFSTR. Пример:

          DEFSTR S, P, Q

Этот оператор объявляет, что у все переменных и массивов, имена которых начинаются с букв S, P, Q, значениями будут символьные строки.

Другой способ описания переменных и массивов с символьными значениями состоит в приписывании к их именам символа «солнышко»: ¤ или знака доллара: $. Примеры, С¤, S$, L¤ - это символьные переменные.

Значениями символьных переменных в Бейсике могут быть комбинации любых символов, имеющихся в машинном алфавите, длиной не более 255 знаков.

Примеры команд над символьными переменными.

 

Команды:

N = «Марина» ¿

? «Привет,»; N  ¿  

Результаты:

 

Привет, Марина

   

Основными операциями над символьными данными являются сцепление слов и выделение подслов. Эти две операции позволяют образовать новые слова и выделять отдельные буквы и части слов.

Сцепление слов в Бейсике обозначается знаком «+». Пример сцепления: «про» + «грамм» + «а» - результатом этого сцепления будет слово «программа». Проверим на ЭВМ.

 

Команда:

? «про» + «грамм» + «а» ¿

Результат:

программа

 

Для выделения подслов в Бейсике предусмотрена специальная функция MID ¤ (S¤  , K, L), где S¤ - символьная переменная или элемент символьного массива. Здесь К - начало, L - длина выделяемой части слова. Пример выделения подслова:

? MID  («информатика», 3, 5) ¿

Результатом будет слово «форма», которое содержит 5 символов и входит в слово «информатика», начиная с 3-й буквы.

Массивы в языке Бейсик описываются с помощью специального оператора DIM - оператора описания размерности (DIM - сокращение то слова DIMENSION - размерность).

Примеры описания одномерного и двумерного массивов:

                  DIM V (10),                  DIM XY (2, 12)

В этих описаниях в скобках указываются верхние границы массивов. Отметим, что в Бейсике отчет индексов начинается с 0. В качестве размеров массивов язык Бейсик разрешает указывать не только константы - 10, 20, 30 и т. п., но и переменные - N, M и т. д. Но переменные, используемые в описаниях массивов, должны получать конкретные значения до выполнения оператора DIM. Пример описания массива с переменными размерами:

N = 4; M = 3; DIM A (N, M)

В качестве простейшего примера применения массивов рассмотрим программу формирования и печати таблицы умножения:

АЛГ «ТАБЛИЦА УМНОЖЕНИЯ»

НАЧ АРГ  t [1: 9, 1: 9]: ЦЕЛ

     ОТ    К= 1 ДО  9 ЦИКЛ

        ОТ  L= 1 ДО 9 ЦИКЛ

         t (K, L): = K * L

           ВЫВОД (t (K, L))

     КЦИКЛ

      ВЫВОД (НОВАЯ СТРОКА)

  КЦИКЛ

КОН  

10 ¢ таблица умножения

20 DIM T% (9, 9)

30 FOR K = 1  TO 9

40   FOR L = 1  TO 9

50     T% (K, L) = K * L

60      PRINT  T% (K, L);

70    NEXT L

80    PRINT

90   NEXT K

100 END

  

Главную роль в этой программе играет 20-й оператор, в котором описывается двумерный массив Т [0:9, 0:9]. В этом массиве могут храниться 100 целых чисел. Заполнение элементов этого массива и вывод их на экран в форме таблицы умножения проводятся в этой программе парой вложенных циклов.

Внутренний цикл по L от 1 до 9 формирует и выводит на экран строки таблицы умножения. Знак точки с запятой в операторе PRINT T% (K, L); означает, что следующее число будет выводиться на той же строке экрана. Оператор PRINT без аргументов означает перевод курсора на новую строку экрана. Тем самым подготавливается вывод следующей строки таблицы умножения, который осуществляется внешним циклом по К то 1 до 9. 

Массивы в программах используются для организации и обработки различных таблиц и других совокупностей данных. Рассмотрим в качестве примера алгоритм и программу анализа успеваемости в группе.

Для этой задачи данные об успеваемости в машинной памяти могут быть представлены двумя массивами. Фамилии студентов могут быть помещены в массив символьной информации фам [1:30]:симв, а оценки студентов, например, по трем дисциплинам - в двумерный массив оц  [1:25, 1:3] с целочисленными данными. Описания этих массивов в Бейсике будут такими:

N = 30:    M = 3:       DIM FM (N),      OC % (N, M)

Заполнение массивов осуществляется либо вводом данных с клавиатуры, либо путем их заблаговременной записи в память ЭВМ. В программах на Бейсике таблицы и другие совокупности данных могут записываться в тексте программ с помощью операторов данных.

Рассмотрим пример описания данных в программе на Бейсике для нашей задачи со следующими конкретными данными:

 

ДАН «ОБ УСПЕВАЕМОСТИ»

НАЧ

        КРЫЛОВ,   5, 5, 5

        РУДАКОВ, 4, 5, 5

        ИВАНОВ,   3, 3, 3

КОН

1000 ¢ данные об успеваемости

1010 DАТА Крылов, 5, 5, 5

1020 DАТА Рудаков, 4, 5, 5

1030 DАТА Иванов,   3, 3, 3

1040 DАТА  ¤, 0, 0, 0

 

В этом примере первые три оператора DATA описывают первые три строки таблицы успеваемости. Далее можно будет добавить любое число новых строк. Последний оператор с номером 1040 служит признаком конца табличных данных. В каждой строке операторов DATA через запятые перечисляется некоторая последовательность числовых и символичных значений. В приведенном примере в каждой строке должны указываться фамилии и три числа - три оценки студента.

Обработка этих последовательностей в данных программах на Бейсике проводиться с помощью операторов READ. Это операторы последовательного чтения данных, записанных в программе в операторах DATA. В нашем конкретном примере чтение данных об студентах можно проводить оператором

 READ F¤, O1%, O2%, O3% - читать (фам, о1, о2, о3)

Выполнение этого оператора приведет к тому, что в переменную F¤ будет записана фамилия «Крылов», а переменные О1%, О2% и О3% будут записаны пятерки. Для чтения следующей, второй строки данных оператор READ должен быть выполнен повторно. Для считывания третьей строки данных - в третьей раз и т. д.

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

Алг  «студенты с пятерками»

нач

арг   фам [1:30] симв

         оц [1:30,1:3] цел

   вывод  пятерки имеют

    L:=0

   читать (f, 01, 02, 03)

    пока f # «*» цикл

           

                если 01 = 5 или 02 = 5

                или  03 = 5 то

                 вывод (f, 01, 02, 03)

                 L:= L+1

               кесли

           читать (f, 01, 02, 03)

           

            кцикл

            если L = 0 то

                  вывод никто

             кесли

кон

дан « об успеваемости»

 

нач . . . . . . . . . . . . . . .

 

кон

 

10 ‘ студенты с пятерками

 

20 N=30 : DIM FM$ (N )

30 DIM OC % ( N, 3 )

40 PRINT «пятерки имеют

50 L = 0

60 READ F$, 01%, 02%, 03%

70 IF F$ = «¤» THEN

GO TO 140

80 IF 01%<>5 AND 02%<>5

  AND 03%<>5 THEN GO TO 110

90 PRINT F$; 01%; 02%; 03%

100 L = L + 1

110 ‘ кесли

120 READ F$, 01%, 02%, 03%

130 GO TO 70

140 ‘ кцикл

150  IF L = 0 THEN

     PRINT «никто»

 

160 END

1000 ‘ данные

            об успеваемости

1010 DATA . . . . .

... ... ... ... ... ... ... ... ... ...

1500 DATA ¤, 0, 0, 0

 Для решения в дальнейшем и других задач обработки данных об успеваемости в данную программу вставлены два массива: массив фамилий и массив оценок. Для описания размера этих массивов используется переменная n = 30, значение которой при необходимости может быть изменено.

 Рассмотрим логику работы этой программы. Чтение данных об успеваемости проводится в 60 - м и 120 - м операторах. В 60 - м операторе считывается первая строка таблицы. Далее в 70 - м операторе проверяется, не достигнута ли последняя строка таблицы. Если это не так, то анализируются прочитанные оценки студента. Обратите внимание: в алгоритме записано условие «О1 = 5 или О2 = 5 или О3 = 5», а в программе закодировано его отрицание «О1 =/= 5 и О2 =/=  5 и О3 =/= 5».

Цикл чтения и обработки данных прекращается, как только в переменной F$ окажется знак ¤. После этого будет проведён анализ числа выявленных студентов, и если ни у кого не  окажется пятёрок, то ЭВМ выведет соответствующее сообщение.

Работу с данной программой на ЭВМ лучше всего начать с ввода операторов 50 и 150  для вывода сообщений. Далее можно по частям проверить средства описания и чтения таблицы. Прежде всего, ввести оператор 1010 со своей фамилией и последними оценками по физике, математике и информатике. Затем ввести оператор 60 – чтение этой строки данных и операторы 90, 50, 100 – вывод на экран введённых данных  и подсчёта числа выведенных фамилий. После этого можно дать команду на выполнение введённой части программы.

После проверки этих операторов необходимо ввести операторы 80 и 110 – операторы анализа данных и точку соответствующего перехода. Затем ввести вторую и конечную строки таблицы – операторы 1020 и 1500, операторы 120, 130 и 70 – ввода следующей строки данных, переход к началу цикла и анализ конца введённых  данных. Теперь введённая часть программы уже может ввести любую таблицу с данными и выделить всех студентов, имеющих пятёрки.

После проверки этой части программы в неё осталось ввести её конец – оператор 160, заголовок – оператор 10, описания массивов – операторы 20 и 30 – и ввести остальные данные об успеваемости. Теперь можно с проверками добавлять новые и новые строки таблицы данных об успеваемости вплоть до завершения ввода и получения окончательного результата.

 

Вопросы и упражнения и задания для самопроверки

1.      Получите на ЭВМ с помощью операций сцепления и выделения подслов новые слова из слова:

а) электрификация               б) индустриализация

в) компьютеризация             г) информатизация

2.      Введите и отладьте на ЭВМ  программу формирования выбранной таблицы чисел.

3.      Составьте таблицу успеваемости в своей группе по выбранным трём дисциплинам и подготовьте план ввода и испытаний своей программы. Введите и испытайте программу на ЭВМ в соответствии со своим планом. По завершении отладки введите пробную часть составленной таблицы успеваемости и после этого введите всю таблицу.

4.      Составьте алгоритм и программу выбора студентов, имеющих только пятёрки и четвёрки.

5.      Составьте алгоритм и программу выбора лиц, имеющих  только положительные оценки.

6. Какие  операции над словами можно проводить в Бейсике?

7. Какова длина символьных строк в Бейсике?

8. Как в программах на Бейсике описываются символьные данные?

9. Как в  программах на Бейсике описываются массивы?

10. Как в программах на Бейсике организуются таблицы?

11. Как считываются данные  из операторов DATA?

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

 а) электрификация                  б) индустриализация

 в) компьютеризация                г) информатизация

13. Составьте алгоритм и программу формирования таблицы:

 а) сложения чисел                     б)  вычитания чисел

 в) деления чисел нацело          г) модуля разности чисел

14. Составьте алгоритм и программу  выбора всех отличников по заданной таблице успеваемости.

 

8. Диалоговые  программы

Одним из назначений языка  Бейсик является создание  простейших диалоговых программ для персональных ЭВМ: моделирующих и обучающих программ, диалоговых справочников, игр и т.д. По существу, язык Бейсик позволяет получать на персональных ЭВМ всё многообразие функций и форм предоставления информации, имеющееся в этих машинах.

Выбор вариантов функций и других возможностей в диалоговых программах обычно организуется в форме меню. Примером использования меню в  организации диалога человека с ЭВМ служит следующая программа построения абстрактных картинок из всевозможных, случайных точек, отрезков и рамок:

 

 

элементовВаш выбор3. из рамок2. из отрезков1. из точекАбстрактные картинкиАлг « Абстрактная живопись»

Нач

        вывод

 

        вывод

        вывод                    

        вывод

 

        запрос                                         ,V

 

        запрос                                           ,N

        графика

        если   V = 1 то

         рисунок из точек

         кесли

         если  V = 2  то

                     рисунок из отрезков

         кесли

         если  V = 3  то

                   рисунок из рамок

кесли

кон

10   , абстрактная живопись

 

20   PRINT «абстрактные картинки»

 

30   PRINT «1.  Из точек»

40   PRINT «2.  Из отрезков»

 

50    PRINT «3.  Из рамок»

100  INPUT «Ваш выбор: « :V

 

110  INPUT «элементов = « :N

120    , графика

130  IF  V = 1  THEN

        GOSUB 200 ' из точек

 

140   IF  V = 2  THEN

GOSUB 400 ' из отрезков

 

150   IF  V = 3   THEN

 GOSUB  800 '  из рамок

 

190   END

 

Построение отдельных картинок  должно осуществляться вспомогательными алгоритмами и соответствующими подпрограммами, начинающимися с номеров 200, 400 и 600. Пример алгоритма построения картинок из случайных  точек «звёздное небо» приводился раньше. Поэтому здесь приведены только алгоритм и подпрограмма рисования картинки из случайных отрезков:

 

 

Алг «Рисунок отрезков»

Арг  n: цел

Нач  cm = 3

     xm = 255;  ym = 191

     от  К = 1  до  n цикл

          x = xm случайное (0,1)

          y = ym  случайное (0,1)

          x1 = xm случайное (0,1)

          y1 = ym  случайное (0,1)

          с =  сm  случайное (0,1)

          отрезок (х, у) – (х1, у1), с

кцикл

кон

400 ' рисунок из отрезков

410  ' n – число отрезков

420  СМ = 3

430  ХМ = 255; УМ = 191

440  FOR  K= 1  TO  N

450  X = XM * RND (1)

460  Y = YM * RND (1)

470  X1 = XM * RND (1)

480  Y1 = YM * RND(1)

490  C = CM * RND(1)

500   LINE (X, Y) – (X1, Y1), C

510  NEXT  K

520  RETURN

 

Представленный алгоритм и программу легко расширить, добавляя новые  вспомогательные алгоритмы и подпрограммы для рисования новых картинок. При этом нужно добавлять новые строки в меню и в соответствующие операторы вывода сообщений и выбора подпрограмм.

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

Вопросы, упражнения и задания для самоконтроля

1.      Как можно организовать добавление новых частей в программу на языке Бейсик?

2.      Проведите отладку на ЭВМ программы «абстрактная живопись».

3.      Составьте программу проверки знаний арифметических действий на языке Бейсик и проведите отладку программы на ЭВМ.

4.      Составьте диалоговый алгоритм проверки знания обозначений первых 20 элементов таблицы Менделеева.

 

 

 

 

 

 

 

 

 

 


 

Лекция 7. Основы программирования

Лекция 7. Основы программирования

Команда: Результат:

Команда: Результат:

Например: S = 720 ¿ - указание длины пути

Например: S = 720 ¿ - указание длины пути

RUN - выполнять ). Диалоговые программы , как правило, предлагают ввод определенных данных

RUN - выполнять ). Диалоговые программы , как правило, предлагают ввод определенных данных

Для вывода на экран части программы в команде

Для вывода на экран части программы в команде

Отличительной чертой особенностью современных

Отличительной чертой особенностью современных

CIRCLE (X, Y), R, C, α1, α2

CIRCLE (X, Y), R, C, α1, α2

АЛГ «ОРАКУЛ» НАЧ

АЛГ «ОРАКУЛ» НАЧ

Вас ждет успех». Далее в строке 50, стоит оператор

Вас ждет успех». Далее в строке 50, стоит оператор

АЛГ «РЕШЕНИЕ КВАДРАТНОГО УРАВНЕНИЯ»

АЛГ «РЕШЕНИЕ КВАДРАТНОГО УРАВНЕНИЯ»

Для упрощения понимания операторов условного перехода -

Для упрощения понимания операторов условного перехода -

Для повторения действий заданное число раз в языке

Для повторения действий заданное число раз в языке

Именно эти операторы - 70, 110 и 120 организуют цикл в повторениях действий вычислительной машины

Именно эти операторы - 70, 110 и 120 организуют цикл в повторениях действий вычислительной машины

Представленные ниже алгоритм и программа состоят из трех частей: первая часть строит график на экране, вторая вычисляет значения функций, третья организует ввод данных - параметров…

Представленные ниже алгоритм и программа состоят из трех частей: первая часть строит график на экране, вторая вычисляет значения функций, третья организует ввод данных - параметров…

Главная особенность этого алгоритма - возможность его применения для построения графиков любых функций в любой части их области определения

Главная особенность этого алгоритма - возможность его применения для построения графиков любых функций в любой части их области определения

АЛГ «ДВУХЭТАЖНЫЙ ДОМ» НАЧ

АЛГ «ДВУХЭТАЖНЫЙ ДОМ» НАЧ

ЗАДАНИЯ: 1. Составьте план ввода и испытаний программы рисования графика функции

ЗАДАНИЯ: 1. Составьте план ввода и испытаний программы рисования графика функции

Для выделения подслов в Бейсике предусмотрена специальная функция

Для выделения подслов в Бейсике предусмотрена специальная функция

ДАН «ОБ УСПЕВАЕМОСТИ» НАЧ

ДАН «ОБ УСПЕВАЕМОСТИ» НАЧ

Рассмотрим логику работы этой программы

Рассмотрим логику работы этой программы

Составьте алгоритм и программу выбора всех отличников по заданной таблице успеваемости

Составьте алгоритм и программу выбора всех отличников по заданной таблице успеваемости

Алг «Рисунок отрезков» Арг n : цел

Алг «Рисунок отрезков» Арг n : цел
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
12.01.2017