Методическое пособие по изучению языка программирования QBASIC (8-10 классы)

  • Домашнее обучение
  • Руководства для учителя
  • docx
  • 24.03.2017
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Целями освоения дисциплины “Программирование и алгоритмизация” являются: - формирование у школьников знаний о синтаксисе и семантике алгоритмического языка программирования QBASIC; - принципы и методых построения алгоритмов. Данное методическое пособие предназначено для самостоятельного обучения программированию. Он адресован учащимся школ, изучающих язык программирования QBASIC, а также преподавателям для построения учебных программ. Учебник даёт первоначальные знания, необходимые для того, чтобы начать программировать, и формирует программистское мышление на основе языка QBASIC. После изучения данного материала освоение других языков не составит труда. Его достоинством является то, что все знания в нём даются порциями и последовательно, накладываясь одно на другое. Изучая его последовательно, вопросов возникать не должно. Плюсом ко всему он написан доступным и простым для понимания языком. Материал представлен в виде меню, каждый пункт которого имеет гиперссылку. Помимо теоретических знаний по каждой теме даются задачи для практического закрепления пройденного материала. В результате освоения данного пособия обучающийся должен знать: - синтаксис и семантику алгоритмического языка программирования; - принципы и методологию построения алгоритмов основных структур; уметь: - проектировать простые программные алгоритмы и реализовывать их с помощью современных средств программирования; владеть: - навыками проектирования простых программных алгоритмов и реализации их на языках программирования.
Иконка файла материала Методический материал ЯЗЫК ПРОГРАММИРОВАНИЯ QBASIC.docx

МЕНЮ

1.     Этапы решения задач на компьютере

2.     Оболочка QBASIC

3.     Алфавит языка. Данные на языке QBASIC

4.     Арифметические выражения на языке QBASIC

5.     Стандартные функции

6.     Оператор LET

7.     Программирование линейных алгоритмов

8.     Оператор INPUT

9.     Оператор PRINT

10. Функция RND

11. Оператор RANDOMIZE

12. Оператор LOCATE

13.  Оператор COLOR

14.  Программирование разветвляющихся алгоритмов

15.  Условный оператор IF

16.  Безусловный оператор GOTO

17.  Программирование циклических алгоритмов

18.  Цикл ДО

19.  Цикл ПОКА

20.  Цикл ДЛЯ

21.  Составление программ с использованием циклов

22.  Операторы ввода данных DATA b READ

23.  Понятие массива

24.  Ввод элементов массива

25.  Вывод элементов массива

26.  Другие действия с элементами массива

27.  Символьные переменные и константы. Операции.

28.  Функции для символьных переменных

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

30.  Символьные массивы. Действия с элементами массивов.

31.  Графика в QBASIC.

                

Этапы решения задач с помощью компьютера

  1. Постановка задачи:
    • что дано;
    • что требуется найти;
    • определить исходные данные, промежуточные и конечные результаты.
  2. Математическая постановка задачи:
    • разработка математической модели (исходные данные и результаты должны быть связаны формулой);
  3. Разработка алгоритма:
    • выбор метода проектирования алгоритма;
    • выбор формы записи алгоритма (блок-схемы, словесной др.);
    • разбивка алгоритма на последовательность отдельных простых  модулей.
  4. Программирование:
    • запись алгоритма на выбранном языке программирования.
    • ввод текста программы в память компьютера.
  5. Отладка, получение и анализ результатов с повторным выполнением этапов  2 - 5:
    • синтаксическая отладка;
    • отладка семантики и логической структуры;
    • необходимо проверить правильность работы программы.

1 и 2 этапы.

 

Вычислить площадь треугольника по формуле Герона

S =, где a, b, c – стороны треугольника, p – полупериметр

P =. Результат вывести на экран.

a, b, c – исходные данные;

p – промежуточный результат;

S – конечный результат.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

3 этап. Составляем блок-схему алгоритма.

 

 

 

 

 

 

 

 

 

                                                                   

 

 

 

 

 

 

4 этап. Программирование.

CLS

REM Вычисление площади треугольника

     PRINT «Введите стороны треугольника»

     INPUTa = “, a

     INPUT “b = “, b

     INPUT  “c = “, c

     LET p = (a + b + c)/2

     LET S = SQR (p * (p – a) * (p - b) * (p - c ))

     PRINT  “S =”; S

Оболочка языка QBASIC

Запуск программы. Программа запускается с помощью клавиши ENTER или двойным щелчком мыши на ярлыке QBASIC, находящемся на Рабочем столе. На экране монитора появляется окно среды языка QBASIC с приглашением, которое удаляется клавишей ESC.

Характеристики окна. В верхней части экрана имеется главное меню: Файл, Редактирование и др. Для входа в меню используется клавиша ALT. Рабочее поле разделено на 2 окна (области):

Верхнее – окно редактирования текста программы;

Нижнее – окно немедленного выполнения (на экране сразу виден результат).

Переход из одного окна в другое осуществляется клавишей <F6> или щелчком левой клавиши мыши в соответствующем окне.

Ввод и редактирование текста программы. Программа на языке QBASIC состоит из последовательности строк, в каждой строке записывается 1 команда (оператор) на английском языке. Команды набираются с помощью клавиатуры. Для перехода на следующую строку используется клавиша ENTER. Для редактирования текста программы используются клавиши DELETE. BACKSPACE. Для перехода с одного алфавита на другой используются следующая комбинация клавиш:

 

CTRL + SHIFT (справа) – переход с английского языка на русский;

CTRL + SHIFT (слева) – переход с русского языка на английский.

 

В языке QBASIC можно работать с фрагментами текста: удалять, копировать, перемещать. Надо выделить фрагмент текста и в меню Редактирование выбрать нужную команду. Для удаления фрагмента текста используется клавиша DELETE.


Запуск программы на выполнение. В меню Запуск выбрать одну из команд Запуск или Продолжить. Можно использовать «горячие» клавиши:

 

SHIFT + <F5> - запустить программу сначала;

<F5> - запустить программу с места, где она прервалась.

<F4> - окно для просмотра результата программы.

Сохранение и открытие файла. Написав программу и желая ее сохранить на диске, выберите в меню Файл команду Сохранить или Сохранить как. Откроется диалоговое окно, в котором вы должны выбрать диск и папку (каталог) для сохранения, дать имя файлу и нажать ОК. В заголовке окна редактирования появится имя файла.

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

Для работы с новым файлом в меню Файл выбрать команду Новый.

Для выхода из  QBASIC в меню Файл выбрать команду Выход.

 

Алфавит языка QBASIC

В языке QBASIC используются:

- 26 латинских букв от A до Z;

- 10 цифр от 0 до 9;

- знаки арифметических операций: + (сложение), - (вычитание), * (умножение), /

(деление), ^ (возведение числа в степень);

- знаки сравнения (операций отношения): > (больше), < (меньше), = (равно), >=

(больше или равно), <= (меньше или равно), <> (не равно);

- разделители и прочие символы: точка, точка с запятой, запятая, кавычки, апостроф,

круглые скобки, процент и другие;

- буквы русского алфавита от А до Я.

 

Данные языка QBASIC

Язык QBASIC позволяет обрабатывать любую информацию – числовую и текстовую. (символьную). Независимо от типа информации данные могут быть представлены в виде констант, переменных или массивов.

 

 

 

 

 

 

 

 

 

 

 


Константы

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

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

12 – целая константа;

- 35 – целая константа отрицательная;

3.14 – вещественная константа;

- .876 – вещественная константа (- 0,876);

2.5Е4 – вещественная константа (2,5 . 104);

-7.86Е-6 – вещественная константа (-7,8 . 10-6).

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

“Результат Х =”;

“у =”.

Переменные

Переменная – это величина, которая изменяется в ходе выполнения программы и имеет имя. Имя переменной – это буква, слово на английском языке или комбинация букв, цифр или знаков (в последнем случае первый символ в имени должна быть буква). Переменные бывают числовые (целые и вещественные) и символьные. В имени целой числовой переменной стоит знак % (процент), в имени символьной переменной – знак $ (доллар).

Например:

А – вещественная переменная с именем А;

B7 – вещественная переменная с именем В7;

Н% - целая переменная с именем Н;

M$ - символьная переменная с именем М.

 

Команда присвоить LET

 

Между константой и переменной существует прямая связь:

 

Константа

 

Имя переменной

 
                                                                        =

 

где знак  =  читается присвоить

      имя переменной – это ячейка оперативной памяти, в которой хранится значение 

      константы

 

Например:

А2 = 3.5 – вещественной числовой переменной А2 присвоить значение 3,5;

M% = 8 –целой числовой переменной присвоить значение 8;

С$ = “мяч” – символьной переменной присвоить значение «мяч».

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

                                               

 

 

 

 

 

 

 

 

 

 

 

 

 

 


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

А = В - переменной А присвоить значение В;

F = 3*A^2 – переменной F присвоить значение 3*А2.

В языке QBASIC команда присвоить определяется оператором LET (пусть), который в программе можно не писать.

T = 3 или LET T = 3 это одно и тоже.

Задача. Какое значение переменная Х присвоит в ходе выполнения фрагмента программы?


А = 3

В = 2

С = 5

Х = В + С – А                         или

Х = 2*Х

LET А = 3

LET В = 2

LET С = 5

LET Х = В + С - А

LET Х = 2*Х


 

Ответ: Х = 8

 

Что такое стандартная функция?

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

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

 


 

Таблица стандартных функций школьного алгоритмического языка

Название и математическое обозначение функции

Указатель функции

Абсолютная величина (модуль) 

| х | 

abs(x) 

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

ОБУЧАЮЩИЕ_ПРОГРАММЫ/Учебник%20Шауцуковой/www.kbsu.ru/~book/theory/chapter7/0034.gif

sqr(x)

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

ln x

log(x)

Экспонента (степень числа е " 2.72)

ex

exp(x)

Целая часть х (т.е. максимальное целое число, не превосходящее х)

 

int(x)

Частное от деления целого х на целое y

 

div(x,y)

Остаток от деления целого х на целое y

 

mod(x,y)

Случайное число в диапазоне от 0 до 1

 

rnd(x)

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

sin x

sin(x)

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

cos x

cos(x)

Тангенс (угол в радианах)

tg x

tan(x)

sin(3.05)

 sin(x)

sin(2*y+t/2)

sin((exp(x)+1)^ 2)

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

 

ПРИМЕЧАНИЕ:

1.                    В случае тригонометрических функций аргумент указывают в радианах. Для перевода градусов в радианы используют формулу:

 

радианы = градусы * p/180

 

2.                    Для перевода натуральных логарифмов в десятичную используют формулу:

 

lg X = ln X /ln 10

 

 

 

 

 

 


Арифметические выражения

 

Арифметические выражения записываются по следующим правилам:

·         Нельзя опускать знак умножения между сомножителями и ставить рядом два знака операций.

·         Индексы элементов массивов записываются в квадратных (школьный АЯ, Pascal) или круглых (Basic) скобках.

·         Для обозначения переменных используются буквы латинского алфавита.

·         Операции выполняются в порядке старшинства: сначала вычисление функций, затем возведение в степень, потом умножение и деление и в последнюю очередь — сложение и вычитание.

·         Операции одного старшинства выполняются слева направо. Например, a/b*c соответствует a/b*c. Однако, в школьном АЯ есть одно исключение из этого правила: операции возведения в степень выполняются справа налево. Так, выражение 2^ (3^2) в школьном АЯ вычисляется как 2^3^2) = 512. В языке QBasic аналогичное выражение 2^3^2 вычислясляется как (2^3)^2 = 64. А в языке Pascal вообще не предусмотрена операция возведения в степень, в Pascal x^y записывается как exp(y*ln(x)), а x^y^z как exp(exp(z*ln(y))*ln(x)).

Примеры записи арифметических выражений

Математическая запись

Запись на школьном алгоритмическом языке

0035

x*y/z

0036

x/(y*z) или x/y/z

0037

(a^3+b^3)/(b*c)

0039

(-b+sqr(b^2-4*a*c))/(2*a)

0041

0.49*e^(a^2 –b^2)+log(cos(a^2))^ 3

0042

x/(1+x*x/(3+(2*x)^3))

5x+1
a+sin x
((a+b)/c^3

Пропущен знак умножения между 5 и х
Аргумент x функции sin x не заключен в скобки
Не хватает закрывающей скобки

Типичные ошибки в записи выражений:
 

 

 

 

 

 

 

 

Программирование линейных алгоритмов

ПримерОпределить объём и площадь боковой поверхности цилиндра с

                                 заданными радиусом основания R и высотой H.

 

Исходные данные

Результаты

Радиус R

Высота H

Объем цилиндра V

Площадь боковой поверхности цилиндра S

 

 

Алгоритм

 

 

 

 


                                               Исходные данные вводятся

                                               с клавиатуры в ячейки R и H

 

 

                                             

                                              Ячейка V присваивает

                                              значение алгебр. выражения

 

 

 

                                              Ячейка S присваивает

                                              значение алгебр. выражения

 

                                     

                                              Результаты выводятся

                                              на экран из соответствующих

                                              ячеек V и S

                                                    

 

 

 

 

 

Программа на языке QBASIC

 

CLS

INPUT "Введите высоту цилиндра: ", H

INPUT "Введите радиус основания: ", R

V = 3.14 * R ^ 2 * H

S = 2 * 3.14 * R * H: PRINT

PRINT "Объем цилиндра = "; V

PRINT "Площадь боковой поверхности = "; S

END

 

Для составления линейных программ достаточно знать 5 оператора: LET, INPUT, PRINT, CLS, END.

 

 

Оператор CLS

Очистка экрана от предыдущей информации. Как правило, стоит в начале программы.

 

Оператор END

Заканчивает выполнение программы. Как правило, стоит в конце программы.

 

 

 

Оператор INPUT

Вводит исходные данные с клавиатуры. В общем виде оператор имеет 2 формы записи:

 

INPUT <имя переменной>

 

 
1)

 

 

Например,  INPUT a

                     INPUT в

INPUT <”текст”>, <имя переменной>

 
 


2)

 

Например,  INPUT  “a = ”; a

                     INPUT  “Ведите целое число  ”; в

 

Рассмотрим 1 случай.

Встретив, оператор INPUT, приостанавливается выполнение программы и на экране появляется знак вопроса «?».  Необходимо ввести, используя клавиатуру, нужное число и нажать ENTER. Переменная присвоит значение.

В этом случае пользователь не понимает, что требуется ввести.

 

Рассмотрим 2 случай.

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

В этом случае пользователь понимает, что требуется ввести.

 

Таким образом, вторая форма записи более удобна, ее мы и будем использовать в дальнейшем.

    Оператор PRINT

Выводит на экране результат (-ы) работы программы из соответствующих ячеек памяти.

 

В общем виде оператор имеет оператор имеет вид:

 

PRINT  <выводной список>

 

 
 

 

 


Где:

<выводной список> - это константа, алгебраическое выражение, имя переменной или

                                          комбинация чисел, алгебр. выражения и имен переменных с

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

                   запятой.                                                                                                  

Разделительные знаки играют важную роль в выводе информации.

Знак «;» (точка с запятой) – каждое значение выводного списка печатается со следующей

                                                 позиции;

                                               

Знак «,» (запятая) – каждое значение выводного списка печатается с 16-ой позиции

                                 данной строки, т.к. в каждой строке 80 позиций по 5 зон. Такой вывод

                                 называется «зонным форматом».

 

 

 

Например:

 


1)PRINT  12.3Е3

на экране: 12300

 

2) PRINT  2^3 + 72/8

на экране: 17

 

3)   A = 3

      B = 4

      PRINT  А; В

на экране: 34

 

4)   A = 3

      B = 4

      PRINT  А, В

на экране: 3                4

 

5)   A = 3

      B = 4

      PRINT  A + B

на экране: 7

 

6)   A = 3

      B = 4

      PRINT  “Сумма = ”; A + B

на экране: Сумма = 7

 

7)   PRINT  “Вычисление функции Y

на экране: Вычисление функции Y

 

8)   PRINT  1, 2, 3, 4

на экране: 1        2        3       4  


Примечание: если в операторе PRINT  отсутствует выводной список, то компьютер

                        сформирует пустую строку.

 

Оператор LOCATE

Позволяет управлять выводом данных в определенное место экрана, который в текстовом режиме представляет условную сетку из столбцов и строк. В стандартном режиме 80 столбцов и 50 строк.

Оператор в общем виде имеет вид:

LOCATE Y, X

 

 
 

 

 


Где: Y, X - координаты курсора

  Yномер строки (0<Y<50);

   X – номер столбца (0< X <80).

Оператор LOCATE стоит либо перед оператором PRINT, либо перед оператором INPUT.

Например,

 

1) CLS

   LOCATE 3, 7

   PRINT “привет”

на экране в 3 строке 7 столбце: привет

3 строка

 

 
                                 7 столбец                                                         

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

п

р

и

в

е

т

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2) CLS

      LOCATE 10, 5

      INPUT  “Введите число а  ”, а

на экране в 10 строке 7 столбце: Введите число а


Оператор COLOR

 

Предназначен для изменения цвета символов и фона для знакоместа. В общем виде имеет вид:

COLOR N1, N2

 

COLOR N1

 
 


          1)                                                      или  2)

 

 

Где: N1 –номер цвета символов (шрифта);

         N2 –номер цвета фона.

 

Во втором случае цвет фона может отсутствовать.

В текстовом режиме различают 16 цветов от 0 дл 15.

 

Номер цвета

Название цвета

Номер цвета

Название цвета

0

1

2

3

4

5

6

7

Черный

Синий

Зеленый

Голубой

Красный

Фиолетовый

Коричневый

Белый

8

9

10

11

12

13

14

15

Серый

Светло-синий

Светло-зеленый

Светло-голубой

Светло-красный

Светло- фиолетовый

Желтый

Интенсивно белый

 

 

 

 

 

 

 

 

 

 

 

 

По умолчанию устанавливается следующие цвета: фон - черного цвета и шрифт - белого цвета. Оператор COLOR должен стоять перед выводом данных на экран.

 

Например,

1)CLS

   COLOR 14, 4

    PRINT “привет”

на экране желтым цветом на красном фоне выведется фраза: привет

 

2) CLS

   COLOR 4

   INPUT  “Введите число 10 ”, а

   COLOR 14

   PRINT а*2

 

на экране красным цветом на черном фоне выведется фраза: Введите число 10

на экране желтым цветом на черном фон выведется число:  20

 

 

 

 

 

 

 

 

 


Функция RND

В памяти компьютера вырабатывается случайное число в интервале [0, 1.]. Случайными называют числа, величина которых заранее неизвестна. Например, случайно значение числа, выпадающего при бросании игрального кубика. Случайные числа находят широкое применение в игровых и прикладных программах. Функция RND используется в операторах LET и PRINT в общем виде имеет вид:

A = RND

 

PRINT RND

 
 


                                                                            или

 

Например:

1) CLS

   PRINT RND

на экране выведется случайное число в {0, 1}:  .7055475 

 

2) CLS

   а = RND

   PRINT а

на экране выведется случайное число в {0, 1}: .7055475

 

 Чтобы  изменить интервал случайного числа существует формула:

RND * (B – A) + A

 
 

 

 


где: Aнижняя граница интервала

         Bверхняя граница интервала

 

 

 

 


Например:

CLS

A = 5

B = 20

PRINT RND * (B – A) + A

на экране выведется случайное число в {5, 20}: 15.58321 

 

Оператор RANDOMIZE и функция TIMER

Для изменения базы генератора случайных чисел используется оператор RANDOMIZE вместе с функцией TIMER  (возвращает число секунд от начала суток до текущего момента времени), которые в программе имеют вид:

RANDOMIZE  TIMER

 
 

 

 

 


При каждом запуске программы компьютер будет вырабатывать новое случайное число в данный момент времени. Оператор RANDOMIZE должен стоять в начале программы.

Например:

CLS

RANDOMIZE TIMER

A = 5

B = 20

PRINT RND * (B – A) + A

на экране выведется случайное число в {5, 20}: 5.611789 


Функция INT

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

INT <аргумент>

 
 

 

 


где: аргумент – это число или алгебраическое выражение.

Используется в операторах LET и PRINT.

Например:

1) а = INT (10.51)

   PRINT а

на экране: 10

 

2) PRINT INT (- 10.25)

на экране: -11

 

3) CLS

      RANDOMIZE TIMER

      A = 5

      B = 20

      PRINT INT (RND * (B – A) + A)

на экране целое случайное число в {5, 20}: 9 

 

FIX <аргумент>

 
 

 

 


Отбрасывает дробную часть от аргумента. В программе имеет вид:

где: аргумент – это число, имя переменной  или алгебраическое выражение.

Используется в операторах LET и PRINT.

Например:

1) а = FIX (10.51)

   PRINT а

на экране: 10

 

2) PRINT FIX (-10.25)

на экране: -10

ПРИМЕР

Составить алгоритм и программу для вычисления площади прямоугольного треугольника S со сторонами a и b, где стороны a и b – случайные числа в [10, 25]. Результат вывести на экран целым случайным образом в пределах экрана и случайным цветом.

CLS

RANDOMIZE TIMER

А= RND * (25 – 10) + 10 ‘сторона а

B= RND * (25 – 10) + 10 ‘сторона b

S = A * B / 2 ‘ площадь

COLOR RND*15

Y= RND * 49 ‘ строка

X= RND * 79 ‘ столбец

LOCATE Y, X ‘ позиция курсора

PRINT “Площадь треугольника S =”; INT (S) ‘ вывод результата

END

 

 

 

 
 

 

 

 

 

 

 

 

 



Программирование разветвляющихся алгоритмов

 

Пример 1Вычислить значение Y по формулe в зависимости от X.

 

Y = 1 + sin X, если Х>0

‘ однострочный оператор IF

CLS

INPUT "Введите значение Х: ", X

IF X>0 THEN Y = 1 + SIN (X) :  PRINT “При  Х  =”; X, “Y(X) = ”; Y

END

 

или

 

‘ многострочный оператор IF

CLS

INPUT "Введите значение Х: ", X

IF X>0 THEN

Y = 1 + SIN (X) 

PRINT “При  Х  =”; X, “Y(X) = ”; Y

END IF

END

 

 
 

 

 

 

 

 

 

 

 


                             

                             

 

 

 

 

 

 

 

 

Пример 2Вычислить значение Y по двум разным формулам в зависимости от X:

 

 


               1 + sin X, если Х>0

Y =    

               2 + cos X, если Х<=0

 

‘ однострочный оператор IF

CLS

INPUT "Введите значение Х: ", X

IF X>0 THEN Y = 1 + SIN(X) ELSE Y = 2 + COS (X)

PRINT “При  Х  =”; X, “Y(X) = ”; Y ‘ вывод результата

END

 

 

 

 
 

 

 

 

 

 

 

 

 


                                                                                  или

‘ многострочный оператор IF

CLS

INPUT "Введите значение Х: ", X

IF X>0 THEN

Y = 1 + SIN (X)

ELSE

Y = 2 + COS(X )

END IF

PRINT “При  Х  =”; X, “Y(X) = ”; Y ‘ вывод результата

END

 

 

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 



Условный оператор IF

Оператор IF изменяет ход выполнения программы в зависимости от результатов проверки условий. В операторе IF используются

знаки сравнения (операции отношения):

>   (больше),

<   (меньше),

=   (равно),

>= (больше или равно),

<= (меньше или равно),

<> (не равно);

связывающие слова AND (И) – в интервале, OR (ИЛИ) – вне интервала

 

 

 


Существует 2 формы оператора IF: полная и неполная.

 

1) Неполная форма имеет вид:

 

IF <условие>THEN <оператор 1:  оператор 2> …

 

 
 

 


 

(если условие выполняется, то выполни команду1: команду2)

Неполная форма оператора IF используется в примере 1, в котором действия выполняются на веточку «да» (THEN), на веточку «нет» никаких действий нет.

 

2) Полная форма  имеет однострочную или многострочную записи:

IF <условие> THEN <оператор 1>:< оператор 2> ELSE <оператор 3>:< оператор 4>

 

 
 


 

1

 

однострочная запись

 

Надпись: IF <условие> THEN  
<оператор 1>
<оператор 2>
………………
ELSE
<оператор 3>
<оператор 4>
………………..
END IF

 

 

многострочная запись

 

 

 

 

 

 

 

 

 

(если условие выполняется, то выполни команду1: команду2 иначе выполни команду3: команду4)

 

Полная форма оператора IF используется в примере 2, в котором на веточку «да» (THEN) выполняются действие 1, на веточку «нет» (ELSE)  - действие 2.

 

Ключевые слова переводятся:

IF – если

THEN – то

ELSE – иначе

 

 
 

 

 



Безусловный оператор GOTO

 

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

В общем виде оператор GOTO записывается:

GOTO <номер строки>

 
 

 

 

 


Где <номер строки> - число =1 , 2, 3 и т.д.

 

Предыдущий пример 2  можно записать другим способом с использованием оператора

GOTO:

                                                              

CLS

INPUT "Введите значение Х: ", X

IF X>0 THEN Y = 1 + SIN(X) :     GOTO 1

Y = 2 + COS (X)

1 PRINT “При  Х  =”; X, “Y(X) = ”; Y ‘ вывод результата

END

 

 

 

 
 


              1 + sin X, если Х>0

Y =    

              2 + cos X, если Х<=0

 

 

 

Если X>0, то Y=1 + sin X и  затем управление перейдет на строку с меткой 1 и напечатается сообщение “При  Х  =”; X, “Y(X) = ”; Y ‘ иначе Y=2 + cos X и напечатается то же сообщение .

 

Ключевое слово GOTO переводятся перейти на…

 

Пример 3. Составить алгоритм и программу нахождения наибольшего из двух чисел X и Y,

                  которые вводятся с клавиатуры. В программе использовать оператор GOTO.

 

 

CLS

INPUT "Введите значение Х: ",  X

INPUT "Введите значение Y: ",  Y

IF X>Y THEN GOTO 1

PRINT “Y>X”

GOTO 2

1 PRINT “X>Y”

2 END

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Если X>Y, то управление перейдет на строку с меткой 1 и напечатается сообщение “X>Y”, иначе напечатается сообщение “Y>X” и управление перейдет на метку 2 – конец выполнения программы.

 


 

Программирование циклических алгоритмов

 

В циклических алгоритмах некоторая группа команда повторяется неоднократно. Циклы бывают:

 

- цикл ПОКА;

- цикл  ДО;

- цикл ДЛЯ.

 

Пример 1Вывести на экран 10 случайных чисел в интервале [0, 1] с использованием цикла

                     ДО и цикла ДЛЯ.

‘цикл  ДО

CLS

RANDOMIZE TIMER

I = 1                                   ‘параметр цикла или счетчик

1 PRINT RND                  ‘тело цикла

I = I +1                              ‘изменение параметра цикла на шаг 1

IF I<10 THEN GOTO 1   ’ проверка условия

END

 

 

цикл  ДЛЯ

CLS

RANDOMIZE TIMER

FOR I = 1 TO 10 STEP 1‘ параметр цикла или счетчик

PRINT RND ‘ тело цикла

NEXT I’ ‘ изменение параметра цикла на 1

END

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Рассмотрим основные понятия циклических структур.

 

Параметр цикла (счетчик)– это переменная целого типа, которая характеризуется начальным и

                                                   конечным значениями и величиной изменения (шага);

Шаг – величина, на которую изменяется параметр цикла, может принимать цело или дробное

            значение;

 

Тело цикла – последовательность команд, которые выполняются неоднократно (> 2 раз).


 

Цикл ДО

 

В общем виде имеет следующую структуру:

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

Цикл ПОКА

 

В общем виде имеет следующую структуру:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Цикл ДО в отличие от цикла ПОКА выполнится хотя бы 1 раз, т.к. в цикле ДО условие ставится в после тела цикла в отличие от цикла ПОКА.

 

 

 

 


Цикл ДЛЯ

 

В общем виде имеет следующую структуру:

1.заголовок цикла (задаются начальное (Iн) , конечное значения

   параметра цикла (Iк) и шаг (êI)).

2.тело цикла

3.увеличиение значения параметра цикла на величину шага

4.как только начальное значение параметра станет больше

   конечного значения параметра цикла на величину шага цикл

   остановится, иначе цикл повторится.

 
 

 

 

 

 

 

 

 

 

 

 

 


Ключевые слова переводятся:

FOR – для

TO – до

STEP – шаг (если шаг равен 1, то его можно не записывать)

NEXT – следующий

 

 

 

 

Составление программа с использованием циклов

Пример 2Что будет выведено на экране из следующего фрагмента программы?

 

‘цикл ДО

CLS

I = 1                                         ‘начальное значение параметра цикла

P = 1                             ‘начальное значение переменной Р 

Тело

цикла

 
1 PRINT P, P*I                       ‘вывод результата

PRINT                                    ‘пустая строка

I = I +1                          ‘изменение параметра на шаг=1

P = P + 2                                 ‘изменение переменной Р на величину 2

IF I < =15 THEN GOTO 1    ’ проверка условия: если счетчик не достиг 6 перейти на метку 1,

                                               ‘иначе останов выполнения программы

END

 

На экране:   1                         1

3                                                  6

5                         15

7                         28

9                         45

11                       55

13                       78

15                       105

 

 

 

 

 


Пример 3. Составить алгоритм и программу вывода натурального ряда чисел и их квадраты от

                      1 до 10 в 2 столбика.

 

‘вывод натурального ряда чисел и их квадратов

CLS

FOR I = 1 TO 10 STEP 1       ‘заголовок цикла

PRINTI =”; I, “I^2 =”; I^2   ‘тело цикла – вывод результата

NEXT I           ‘изменение параметра цикла на 1

END

 

 
 

 


                                            

 

 

 

 

 

 

 

 

 

Пример 4. Составить алгоритм и программу вычисления функции Y = 2x2 + 1 для 5 различных

                     значений Х: 5, 9, -3, 10, 8, которые вводятся с клавиатуры.

 

‘ вычисление функции Y в зависимости от Х

CLS

PRINT “Введите 5 значений Х”

FOR I = 1 TO 5                                        ‘заголовок цикла

INPUTX =”, X                                       ‘ввод i–ого Х

Y = 2* X ^2 + 1                                        ‘вычисление i-ого Y

PRINT “При Х =”; X, “Y (“; I; “) =”; Y ‘вывод i–ого Y

NEXT I                                                     ‘изменение параметра цикла на 1

END

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Пример 5. Табулирование функции. Составить алгоритм и программу вычисления функции  

                       Y = 2x2 + 1 для 5 значений Х:  2, 6, 10, 14, 18, где Х изменяется на величину шага 4.

‘табулирование функции Y

CLS

FOR Х = 2 TO 18 STEP 4                        ‘параметр цикла - переменная Х

Y = 2* X ^2 + 1                                        ‘вычисление i-ого Y

PRINT “При Х =”; X, “Y (“; I; “) =”; Y ‘вывод i–ого Y

NEXT Х                                                    ‘изменение параметра цикла на 1

END

 

 
 

 

 

 

 

 

 

 

 

 

 

 



Пример 6. Составить алгоритм и программу вычисления суммы нечетных чисел от 1 до 40

 

 

‘определение суммы нечетных чисел натурального ряда

CLS

S = 0                                                 ‘начальное значение S

FOR I = 1 TO 39 STEP 2                ‘заголовок цикла

S = S + I                                           ‘в переменной S накапливается сумма 

NEXT I                                            ‘изменение параметра цикла на 2

PRINT “Сумам S =”; S                   ‘вывод результата из переменной S

END

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Пример 7. Составить алгоритм и программу вычисления произведения четных чисел от 1 до 40

 

 

‘определение произведения четных чисел натурального ряда

CLS

P = 1                                                 ‘начальное значение P

FOR I = 2 TO 40 STEP 2                ‘заголовок цикла

P = P * I                                           ‘в переменной P накапливается произв-ние

NEXT I                                            ‘изменение параметра цикла на 2

PRINT “Произведение  P =”; P     ‘вывод результата из переменной P

END

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 


Пример 8. Составить алгоритм и программу вычисления суммы 10 целых случайных чисел в

                     интервале [-5, 5].

 

‘определение суммы 10 случайных чисел

CLS

RANDOMIZE TIMER

S = 0                                                 ‘начальное значение S

FOR I = 1 TO 10                             ‘заголовок цикла

A = INT (RND * (25 + 5) - 5)        

S = S + A                                         ‘в переменной S накапливается сумма

PRINTA(”;I;”) =”; A                   

NEXT I                                            ‘изменение параметра цикла на 1

PRINT “Сумам S =”; S

END

 

 
 

 

 

 

 

 

 

 

 

 

 

 


                                                   

 

 

 

 

 

 

 

 

Пример 9. Составить алгоритм и программу вычисления суммы членов ряда , где Х

                      – любое число, введенное с клавиатуры, K = 1, 2, 3…100

 

‘определение суммы членов ряда

CLS

INPUTX=”, X

S=0                                    ‘начальное значение S

FOR K = 1 TO 100           ‘заголовок цикла

A = K/(X + 1)                                 

S = S + A                          ‘в переменной S накапливается сумма

NEXT К                            ‘изменение параметра цикла на 1

PRINT “Сумам S =”; S

END

 

 
 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 


Пример 10. Составить алгоритм и программу вычисления суммы только положительных  целых случайных чисел, находящихся  в интервале [-5, 7]. Цикл повторить 10 раз.

 

 

‘определение суммы случайных чисел по условию

CLS

RANDOMIZE TIMER

S=0                                                   ‘начальное значение S

FOR I = 1 TO 10                             ‘заголовок цикла

A = INT (RND * 12 - 5)

PRINT “A(”;I;”) =”; A

IF A>=0 THEN S = S + A               ‘сумма определяется по условию

NEXT I                                            ‘изменение параметра цикла на 1

PRINT “Сумам S =”; S

END

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


  Пример 11. Составить алгоритм и программу количество только                         отрицательных  целых случайных чисел, находящихся  в

          интервале [-5, 10]. Цикл повторить 15 раз.

 

 

‘определение количества случайных чисел по условию

CLS

RANDOMIZE TIMER

K=0                                                  ‘начальное значение S

FOR I = 1 TO 15                             ‘заголовок цикла

A = INT (RND * 15 - 5)

PRINTA (”; I;”) =”; A

IF A<=0 THEN K = K + 1              ‘сумма определяется по условию

NEXT I                                            ‘изменение параметра цикла на 1

PRINT “Количество отрицательных чисел К =”; К

END

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



Операторы ввода данных DATA и READ

Операторы DATA и READ всегда работают в паре друг с другом. В общем виде в программе имеют вид:

Надпись: DATA <список констант через запятую>

 

Надпись: READ <список переменных через запятую>

 

 

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

 

Пример 1. Ввести данные из блока данных DATA и вывести на экран в зонном формате.

 

CLS

DATA .5, 34, 12Е3, -1.4, 15

READ A, B, C. D, E

PRINT “A=”;A, “B=”; B, “C=”;C. “D=”;D, “E=”;E

На экране:

A=5  B=34    C=2000   D=-1.4        C=15

 

Пример 2.  Составить алгоритм и программу вычисления функции Y = 2x2 + 1 для 5 различных

                     значений Х: 5, 9, -3, 10, 8,  которые вводятся из блока данных (этот пример был

                     рассмотрен ранее).

‘ вычисление функции Y в зависимости от Х

CLS

DATA 5, 9, -3, 10, 10

FOR I = 1 TO 5                                        ‘заголовок цикла

READ X                                                  

Y = 2* X ^2 + 1                                        ‘вычисление i-ого Y

PRINT “При Х =”; X, “Y (“; I; “) =”; Y ‘вывод i–ого Y

NEXT I                                                     ‘изменение параметра цикла на 1

END

 

 

На экране:

При Х = 5  Y(1) =101

При Х = 9  Y(2) =163

При Х =-3  Y(3) =19

При Х = 10 Y(4) =201

При Х = 8   Y(5) =129

 

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


DATA - данные

READ - читай

 

 

Понятие массива

 

Рассмотрим следующую задачу.

Определить и напечатать средний рост ученика данного класса. Рост ученика вводится с клавиатуры в см.

Алгоритм и программу можно решить следующим образом. 

 

‘ вычисление среднего роста учеников

CLS

INPUT “Введите количество учеников в см ”, N

S=0

FOR I = 1 TO N                                       ‘заголовок цикла

PRINT “Введите рост”; I; “-ого ученика”          

INPUT “”, X                                             ‘ввод рост i–ого ученика

S = S + X                                                  ‘в переменной S накапливается сумма

NEXT I                                                     ‘изменение параметра цикла на 1

PRINT “Средний рост учеников =”; S/N  

END

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


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

 

Массив – это упорядоченный набор однотипных элементов, имеющий одно общее имя и последовательную нумерацию его элементов (элементов).

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

Массивы могут быть одномерные, двумерные, многомерные. Мы будем рассматривать только одномерные массивы.

Оператор DIM

Для объявления массива используется оператор DIM, который в общем виде в программе имеет вид:

Надпись: DIM имя массива (размерность массива)

 

 

 

Где: DIM – имя оператора, рекомендуется помещать в начале программы;

         имя массива – буква на латинском языке; слово; комбинации букв, цифр, знаков (на первом

                                    месте обязательна буква);

         размерность массива – максимальное количество элементов в виде целого числа

 

 

Например:

DIM A (5) – объявлен массив с именем А, состоящий из 5 элементов;

DIM B1 (10) - объявлен массив с именем B, состоящий из 10 элементов;

DIM MAS (7) - объявлен массив с именем MAS, состоящий из 7 элементов.

 

«Увидев» оператор DIM, компьютер в своей памяти сформирует пустые ячейки, каждая из которых будет иметь имя и индекс (номер) ячейки.

Например объявлен массив DIM N (6) – внутри сформируются 6 пустых ячеек с именами: N(1), N(2), N(3), N(4), N(5), N(6), Схематично это можно изобразить так:

 

 

                                           Массив N, состоящий из 6 элементов

 

N(1)

N(2)

N(3)

N(4)

N(5)

N(6)

0

0

0

0

0

0

 

Иногда такие переменные называют индексированными, т.к. каждый элемент массива имеет индекс (номер) в виде числа.

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

 

‘ вычисление среднего роста учеников

CLS

INPUT “Введите количество учеников”, N

S=0

DIM X (N)                                                ‘объявление массива

 

FOR I = 1 TO N                                       ‘заголовок цикла

PRINT “Введите рост”; I; “-ого ученика”          

INPUT “”, X (I)                                        ‘ввод рост i–ого ученика

S = S + X (I)                                             ‘в переменной S накапливается сумма

NEXT I                                                     ‘изменение параметра цикла на 1

 

FOR I = 1 TO N                                       ‘заголовок цикла

PRINT “Рост “; I; “- ого ученика =”; X (I); “см” ‘вывод роста I-ого ученика

NEXT I

 

PRINT “Средний рост учеников =”; S/N  

END

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



Действия с элементами массива

I. Ввод элементов массива

1 способ – с использованием оператора INPUT

 

Пример 1. Имеется массив А, состоящий из 10 элементов, элементы которого заполняются

                     любыми числами, введенными с клавиатуры.

DIM A (10)

PRINT  “Введите 10 элементов массива”

FOR I =1 TO 10

PRINT “Введите ”; I; “-ый элемент

INPUT A(I)

NEXT I

 

2 способ – с использованием оператора LET

 

Пример 2. Имеется массив А, состоящий из 8 элементов, элементы которого заполняются

                     целыми случайными числами в интервале [3, 9].

RANDOMIZE TIMER

DIM A (8)

FOR I =1 TO 8

A (I) = INT (RND * 6 + 3)

NEXT I

 

3 способ – с использованием оператора DATA и READ

 

Пример 3. Имеется массив А, состоящий из 6 элементов, элементы которого заполняются

                     следующими числами: 2, 4, -2, 9, 3, -5, которые считываются из блока данных.

DIM A (6)

DATA 2, 4, -2, 9, 3, -5

FOR I =1 TO 6

READ A (I)

NEXT I

 

II. Вывод элементов массива

Вывод элементов массива осуществляется в цикле (лучше отдельным циклом) с использованием оператора PRINT. Для примера 1 надо организовать отдельный цикл от 1 до 10:

 

FOR I =1 TO 10

PRINT “A (”; I; “) =”; A (I)

NEXT I

 

Для примеров 2 и 3 изменяются только конечное значение цикла, соответственно 8 и 6.

 

 

 

 

 


III. Другие действия с элементами массива

Пример 1.  Составить алгоритм и программу определения произведения элементов массива D,

                     состоящего из N элементов. Элементы массива любые числа, которые считываются

                     из блока данных DATA. Результат программы вывести на экран.

 

‘ вычисление произведения элементов массива

CLS

INPUT “Введите количество элементов массива”, N

P=1

 

DIM D (N)                                                ‘объявление массива

DATA 12, 25, 12.4, 85, 34                      

FOR I = 1 TO N                                       ‘заголовок цикла

READ D (I)                                              ‘ввод рост i–ого ученика

P = P * X (I)                                              ‘в переменной P накапливается

                                                                  ‘ произведение

NEXT I                                                     ‘изменение параметра цикла на 1

FOR I = 1 TO N                                       ‘заголовок цикла

PRINTD (“; I; “) =”; D (I)                     ‘вывод элементов массива D

NEXT I

PRINT “Произведение =”; P                  ‘вывод результата Р   

END

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



Пример 2.  Составить алгоритм и программу определения суммы элементов массива T,

                     состоящего из N элементов. Элементы массива целые случайные числа в интервале

                     [2, 24]. Результат программы вывести на экран.

 

 

‘вычисление суммы элементов массива

CLS

RANDOMIZE TIMER

INPUT “Введите количество элементов массива”, N

S=0

DIM T (N)                                                ‘объявление массива

FOR I = 1 TO N                                       ‘заголовок цикла

T (I) = INT (RND * 22 + 2)                     ‘ввод рост i–ого ученика

S = S + T (I)                                              ‘в переменной S накапливается сумма

NEXT I                                                     ‘изменение параметра цикла на 1

 

FOR I = 1 TO N                                       ‘заголовок цикла

PRINTT (“; I; “) =”; T (I)                      ‘вывод элементов массива T

NEXT I

 

PRINT “Сумма =”; S                               ‘вывод результата S   

END

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



Пример 3.  Составить алгоритм и программу определения суммы элементов массива M (N),

         находящихся в интервале  [5, 10]. Элементы массива целые случайные числа в

         интервале [-24, 24]. Результат программы вывести на экран.

 

‘вычисление суммы элементов массива по условию

CLS

RANDOMIZE TIMER

INPUT “Введите количество элементов массива ”, N

S=0

DIM М (N)                                               ‘объявление массива

FOR I = 1 TO N                                       ‘заголовок цикла

М (I) = INT (RND * 48 - 24)                   ‘ввод рост i–ого ученика

IF M(I)<=10 AND M(I)>=5 THEN 

S = S + M(I)                            ‘суммирование элементов массива M

END IF

NEXT I                                                     ‘изменение параметра цикла

FOR I = 1 TO N                                       ‘заголовок цикла

PRINT “M (“; I; “) =”; M (I) 

NEXT I

 

PRINT “Сумма =”; S                               ‘вывод результата S   

END

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



Пример 4.  Составить алгоритм и программу следующего содержания. Дан массив M (N),

         элементы массива целые случайные числа в интервале [-24, 24]. Положительные

         элементы массива М переписать в массив A, отрицательные – в массив B. Результаты

         программы вывести на экран.

Допустим количество элементов в массиве М равно 8 (N=8). Компьютер в данный момент присвоил элементам массива М следующие числа: М(1)=10, М(2)=12, М(3)=-3, М(4)=-8, М(5)=0, М(6)=7, М(7)=-5, М(8)=11. В массив А перепишутся только положительные элементы массива М, в массив В – только отрицательные. Схематично это можно изобразить так:

 

 

 

 

 

 

 

                                     

 

Надпись: А (К1)Надпись: В (К2)

 

Из схемы видно, что A (1) = M (1)                 B (1) = M (3)

                                      A (2) = M (2)                 B (2) = M (4)

                                      A (3) = M (5)                 B (3) = M (7)

                                      A (4) = M (6)

                                      A (5) = M (8)

 

То есть некоторые индексы массивов А и В не совпадают с индексами массива М (они выделены красным цветом). Поэтому для этого надо определить индексы массивов А и В (в программе это переменные К1 и К2 соответственно).

 

‘запись элементов одного массива в другой по условию

CLS

RANDOMIZE TIMER

INPUT “Введите количество элементов массива ”, N

K1 = 0 : K2 = 0

DIM М (N), A (N), B (N)                         ‘объявление массивов

FOR I = 1 TO N                                       ‘заголовок 1-ого цикла

М (I) = INT (RND * 48 - 24)                   ‘ввод i–ого элемента

IF M(I)>=0 THEN

K1=K1 + 1                                                ‘индекс массива М

A(K1) = M(I)

ELSE

K2=K2 + 1                                                ‘индекс массива М

B(K2) = M(I)

END IF

NEXT I                                ‘изменение параметра цикла на 1

 

FOR I = 1 TO N                                       ‘заголовок 2-ого цикла

LOCATE I + 2, 40                 

PRINT “M (“; I; “) =”; M (I)

LOCATE I + 7, 10

PRINT “A (“; I; “) =”; A (I),  “B (“; I; “) =”; B (I)

NEXT I

END

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Пример 5.  Составить алгоритм и программу следующего содержания. Дан массив M (N), элементы массива целые случайные числа в интервале [-24, 24]. Четные элементы массива М переписать в массив A. Результаты программы вывести на экран.

 

 

 

 

 

 

 

 

 

 

 

 

‘запись элементов одного массива в другой по условию

CLS

RANDOMIZE TIMER

INPUT “Введите количество элементов массива ”, N

K = 0

DIM М (N), A (N)                                    ‘объявление массивов

FOR I = 1 TO N                                       ‘заголовок 1-ого цикла

М (I) = INT (RND * 48 - 24)                   ‘ввод i–ого элемента

IF M (I)/2=INT (M (I)/2) THEN

K=K + 1                                                    ‘индекс массива A

A (K) = M (I)

END IF

NEXT I                                ‘изменение параметра цикла на 1

 

FOR I = 1 TO N                     ‘заголовок 2-ого цикла

LOCATE I + 2, 40                 

PRINT “M (“; I; “) =”; M (I)

LOCATE I + 7, 10

PRINT “A (“; I; “) =”; A (I)

NEXT I

END

 

Примечание: выделенную красным цветом строку можно изменить:

IF M (I) mod 0 THEN

Где функция MOD определяет остаток от деления

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Пример 6.  Составить алгоритм и программу следующего содержания. Дан массив M (N), элементы массива целые случайные числа в интервале [-24, 24]. Найти минимальный элемент массив М. Результат программы вывести на экран.

‘определение минимального элемента массива

CLS

RANDOMIZE TIMER

INPUT “Введите количество элементов массива ”, N

DIM М (N)                                               ‘объявление массивов

М (1) = INT (RND * 48 - 24)    

K = 1: P = M (1)

FOR I = 2 TO N                                       ‘заголовок 1-ого цикла

М (I) = INT (RND * 48 - 24)                   ‘ввод i–ого элемента

PRINT M (“; I; “) =”; M (I)

IF P>=M (I) THEN GOTO 1

P=M (I): K = I                                          ‘индекс массива М

END IF

1 NEXT I                             ‘изменение параметра цикла на 1

 

PRINT “минимальный элемент =”;P ; “с номером “;K

END

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Пример 7.  Составить алгоритм и программу следующего содержания. Дан массив M (N), элементы массива заполнены целыми  случайными числами в интервале [-24, 24]. Определить количество отрицательных элементов массива М. Результат программы вывести на экран.

 

‘определение количество  элементов массива по условию

CLS

RANDOMIZE TIMER

INPUT “Введите количество элементов массива ”, N

DIM М (N)                                               ‘объявление массивов

K = 0

FOR I = 1 TO N                                       ‘заголовок цикла

М (I) = INT (RND * 48 - 24)                   ‘ввод i–ого элемента

PRINT M (“; I; “) =”; M (I)

IF M (I) < 0 THEN K = K + 1                  ‘индекс массива М

NEXT I                                ‘изменение параметра цикла на 1

 

PRINT “количество отрицательных элементов =”; K

END

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Пример 8.  Составить алгоритм и программу следующего содержания. Дан массив M (N), элементы массива заполнены целыми  случайными числами в интервале [-24, 24]. Переписать четные номера (индексы)  элементов массива М в массив В. Результаты программы вывести на экран.

Надпись: Массив А
А(1)	12
А(2)	-8
А(3)	7
А(4)	11
А(5)	0
М(6)	0
М(7)	0
М(8)	0

Надпись: Массив М
М(1)	10
М(2)	12
М(3)	-3
М(4)	-8
М(5)	4
М(6)	7
М(7)	-5
М(8)	11

Надпись: A (1) = M (2)
A (2) = M (4)
A (3) = M (6)
A (4) = M (8)

 

 

 

 

 

 

 

 

 

 

‘запись элементов одного массива в другой по условию

CLS

RANDOMIZE TIMER

INPUT “Введите количество элементов массива ”, N

K = 0

DIM М (N), A (N)                                    ‘объявление массивов

FOR I = 1 TO N                                       ‘заголовок 1-ого цикла

М (I) = INT (RND * 48 - 24)                   ‘ввод i–ого элемента

IF I/2=INT(I/2) THEN

K=K + 1                                                    ‘индекс массива A

A (K) = M (I)

END IF

NEXT I                                ‘изменение параметра цикла на 1

 

FOR I = 1 TO N                     ‘заголовок 2-ого цикла

LOCATE I + 2, 40                 

PRINT “M (“; I; “) =”; M (I)

LOCATE I + 7, 10

PRINT “A (“; I; “) =”; A (I)

NEXT I

END

 

 
 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример 9.  Составить алгоритм и программу следующего содержания. Даны массивы A(N) и B(N), элементы которых заполнены целыми  случайными числами в интервале [-24, 24]. Суммировать соответствующие элементы массивов A(N) и В(N) и переписать их в массив M(N), уменьшив в 2 раза.  Результаты программы вывести на экран.

 

 

 

 

 

 

 

 

 

То есть  M (1) = (A (1) + B (1)) / 2

               M (2) = (A (2) + B (2)) / 2  и т. д.

 

‘перезапись элементов массива элементов массива

CLS

RANDOMIZE TIMER

INPUT “Введите количество элементов массива”, N

DIM A (N), B (N), M (N)                         ‘объявление массивов

FOR I = 1 TO N                                       ‘заголовок цикла

A (I) = INT (RND *48 - 24)                    

B (I) = INT (RND *48 - 24)

M (I) = (A (I) + B (I))/2                           

NEXT I                                                     ‘изменение параметра цикла на 1

 

FOR I = 1 TO N                                       ‘заголовок цикла

LOCATE I + 2, 2

PRINT “A (“; I; “) =”; A (I)                     ‘вывод результатов

LOCATE I + 2, 20

PRINT “B (“; I; “) =”; B (I)

LOCATE I + 2, 40

PRINT “M (“; I; “) =”; M (I)

NEXT I

END

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Пример 10.  Составить алгоритм и программу следующего содержания. Дан массив M (N), элементы массива заполнены целыми  случайными числами в интервале [-24, 24]. Переписать только 5 первых элементов массива М в массив A. Результаты программы вывести на экран.

 

‘запись элементов одного массива в другой по условию

CLS

RANDOMIZE TIMER

INPUT “Введите количество элементов массива ”, N

K = 0

DIM М (N), A (N)                                    ‘объявление массивов

FOR I = 1 TO N                                       ‘заголовок 1-ого цикла

М (I) = INT (RND * 48 - 24)                   ‘ввод i–ого элемента

IF I <= 5 THEN

K=K + 1                                                    ‘индекс массива A

A (K) = M (I)

END IF

NEXT I                                ‘изменение параметра цикла на 1

 

FOR I = 1 TO N                     ‘заголовок 2-ого цикла

LOCATE I + 2, 10                 

PRINT “M (“; I; “) =”; M (I)

LOCATE I + 7, 30

PRINT “A (“; I; “) =”; A (I)

NEXT I

END

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Символьные переменные и константы

Символьная константа – это величина, заключенная в кавычки.

Символьная переменная – это величина, которая в своем имени имеет знак $ (доллар). Имя переменной может быть буква, слово на латинском языке, комбинация букв, знаков или цифр, но обязательно на первом месте должна быть буква. 

 

Операции над символьными переменными

1) Операция присваивания

Между символьной переменной  и константой существует связь:

Надпись: “Константа”Надпись: Имя переменной $Надпись: = 

 

 

Символьным переменным можно присваивать значение константы 3 способами:

- с помощью оператора LET,

- с помощью оператора INPUT (ввод с клавиатуры),

- с помощью оператора DATA и READ (из блока данных).

 

Например:


1) A$ = “Привет”

      PRINT A$

На экране: Привет

 

2) B1$ = “12 * 5 – 20 = 40”

    PRINT B1$,

  

На экране: 12 * 5 – 20 = 40

 

3) DATA  Москва, Санкт-Петербург

   READ A$, B$

   PRINT B$; A$

На экране: Санкт-Петербург   Москва

 

4)INPUT “Введите слово КОМПЬЮТЕР”, T$

   PRINT Т$

На экране: КОМПЬЮТЕР


2) Операция сравнения

 Каждый символ, представленный на клавиатуре для компьютера  переводится в числовой код. Эти коды объединены в стандартную международную таблицу кодов ASCII. Всего их 128 кодов (с 0 по 127). Коды с 0 по 32 не имеют изображения на экране и служат для функций управления (пробел, клавиши управления курсором и другие). Коды с 33 по 127 включают знаки препинания,  цифры, строчные и прописные буквы латинского алфавита и другие символы клавиатуры. А еще 128 кодов (от 128 по 255) – это национальные коды, которые служат для генерации национальных символов (для нашей страны это русский алфавит).

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

Например:

A$ = “ABCD”

B$ = “BACD”

IF A$ > B$ THEN PRINT “A$ > B$” ELSE PRINT “A$< B$”

На экране: A$ < B$   

 

2) Операция сцепления

Для этой операции используется знак + (плюс).

Например:

 


1)A$ = “мяч ”

B$ = “катится”

PRINT A$ + B$

На экране: мяч катится

 

 

2)  D$ = “сим”

      F$ = “вол”

      C$ = D$ + F$

      H$ = C$ + “ика

      PRINT C$, H$

На экране: символ      символика


 

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

Пример.

PRINT “Привет! Я компьютер, а ты кто?”                                              ‘Компьютер

INPUT “Введите свое имя ”, A$                                                                ‘Пользователь

PRINT A$; “, а сколько вам лет?”                                                              ‘Компьютер

INPUT “Не стесняйтесь, я никому не скажу”, B                                      ‘Пользователь

PRINT “Да, ”; A$; “, вы очень еще молоды. Счастья вам в жизни!”      ‘Компьютер

 

Задание. Составить диалоговую программу следующего содержания:

 

Компьютер:      Как Вас зовут?

Пользователь: Оля

Компьютер:      Оля, вы девушка или юноша?

Пользователь: Девушка

(Выбирается условие – если девушка, то вывести сообщение «Вы очень прекрасны, леди!», иначе – «Вы настоящий джентльмен!»)

Компьютер:     Вы очень прекрасны, леди!

                          

Функции для символьных переменных

Для работы с символьными данными (константами и переменными) используются стандартные символьные функции. Их аргументами могут быть строковые или числовые данные. Каждая функция имеет свое неповторимое имя. Если имя функции оканчивается знаком $ (доллар), то в результате ее выполнения создается строка символов, если в имени функции знак $ (доллар) отсутствует, то результатом является целое десятичное значение.

 

Функция LEN

Функция LEN определяет длину строки, т.е. количество всех символов в символьной строке, включая пробелы. В общем виде функция LEN имеет вид:

 

Надпись: LEN (аргумент)

 

 

Где: аргумент – символьная константа, символьное выражение или символьная переменная.

Например:


1)B$ = “программа”

   PRINT “В слове ”; B$; LEN (B$); “букв”

На экране: 9 

 

2)INPUT “Введите вашу фамилию ”, A$

   N = LEN (A$)

   PRINT “В вашей фамилии ”; N; “букв”

На экране: число букв


 

Функция MID$

Функция MID$ «вырезает» из символьной переменной определенное количество символов, начиная с заданного. В общем виде функция MID$ имеет вид:

Надпись: MID$ (аргумент, N, K)

 

 

Где: аргумент – символьная константа, символьное выражение или символьная переменная.

     N – порядковый номер символа, с которого начинается вырезка;

     K – количество вырезаемых символов.

Например:

1)B$ = “программа

   PRINT MID$ (B$, 4, 5)

На экране: грамм

 

Функции LEFT$ и RIGHT$

Функция LEFT$ и RIGHT$ выделяют из символьной переменной определенное количество символов слева или справа соответственно. В общем виде функции LEFT$ и RIGHT$ имеют вид:

 

Надпись: RIGHT$ (аргумент, N)Надпись: LEFT$ (аргумент, N)

 

Где:

аргумент – символьная константа, символьное выражение или символьная переменная;

N – количество символов, которое вырезаются слева или справа соответственно.

 

Например:


1)B$ = “газонокосильщик”

   PRINT LEFT $ (B$, 5)

На экране: газон

 

2)B$ = “газонокосильщик”

   PRINT RIGHT $ (B$, 9)

На экране: косильщик


 

Функция CHR$

Функция CHR$ выдает символ по его коду ASCII. В общем виде функция CHR$ имеет вид:

Надпись: CHR$ (N)

 

 

 

Где: N – десятичный код в интервале [33, 255]

Например:

1) PRINT “латинская буква - ”:CHR$ (65)

На экране: латинская буква – A

КОДЫ СИМВОЛОВ

1 – 32  - управляющие клавиши (например, код 27 – клавиша ESC, код 32 клавиша пробел);

48 – 57 – коды цифр от  0 до 9;

65 – 90 - прописные буквы латинского алфавита;

97 – 122 – строчные буквы латинского алфавита;

176 223 – символы псевдографики;

33 – 43, 58 – 63, 91 – 95, 123 – 127, 240 – 254 – знаки препинания и другие символы;

128 – 159 - прописные буквы русского алфавита;

160 – 175 и 224 – 239 – строчные буквы русского алфавита.

Функция ASC

Функция ASC выдает код ASCII по его символу. В общем виде функция ASC имеет вид:

Надпись: ASC (N$)Надпись: ASC (“N”)                                

                           или

Где: N –символ,

 N$  - символьная переменная

Например:


1)A$ = “Д”

PRINT “код буквы D - ”: ASC (A$)

На экране: код буквы D – 68

 

2) PRINT “код буквы B = ”: ASC (“Б”)

На экране: код буквы B = 65



Функция INKEY$

Функция INKEY$ ожидает нажатия определенной клавиши и/или анализирует поступающую информацию об уже нажатых клавишах. Если ничего не нажато, то она возвращает в качестве своего значения пустую строку. Если нажата одна из клавиш, то INKEY$ возвращает строку из одного символа, кода нажатой клавиши. В общем виде функция INKEY$. имеет вид:

Надпись: Имя переменной$ = INKEY$

 

 

 

Например:

1) PRINT “Для выхода из программы нажмите клавишу Y

10 K$ = INKEY$

      IF K$ = “Y” THEN PRINT “КОНЕЦ” ELSE GOTO 10

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

 

2) PRINT “Если вы девушка, нажмите клавишу д ”

10 K$ = INKEY$

      IF K$ = “д” THEN PRINT “Вы прекрасны, леди”  ELSE GOTO 10

      END

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

 

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

Пример 1. Составить алгоритм и программу следующего содержания. Символьная переменная A$ присвоила значение ПРОГРАММИРОВАНИЕ. Из этого слова сформировать слова: ПРОГРАММА, ПИРОГ. Результаты  программы вывести на экран.

 

 

 

CLS

A$ = “ПРОГРАММИРОВАНИЕ

PRINT MID$ (A$, 1, 8) + MID$ (A$, 6, 1)

PRINT MID$ (A$, 1, 1) + MID$ (A$, 9, 3) + MID$ (A$, 4, 1)

END

 

 

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Пример 2. Составить алгоритм и программу следующего содержания. Символьная переменная A$ присваивает разные значения слов: банан, арбуз, ананас, виноград, яблоки. Вывести на экран те слова, у которых длина больше или равно 6.  Результаты  программы вывести на экран.

 

CLS

DATA банан, арбуз, ананас, виноград, яблоки

FOR I = 1 TO 5                                        ‘заголовок цикла

READ A$

IF LEN (A$) >= 6 THEN                        

PRINT A$

END IF

NEXT I                                         ‘изменение параметра цикла на 1

END

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Пример 3. Составить алгоритм и программу следующего содержания. Символьная переменная A$ присваивает разные значения слов: банан, арбуз, ананас, виноград, яблоки. Вывести на экран те слова,  которых начинаются с буквы А.  Результаты  программы вывести на экран.

 

CLS

DATA банан, арбуз, ананас, виноград, яблоки

FOR I = 1 TO 5                                        ‘заголовок цикла

READ A$

IF MID$ (A$, 1, 1) = “а” THEN             

PRINT A$

END IF

NEXT I                                         ‘изменение параметра цикла на 1

END

 

 

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Пример 4. Составить алгоритм и программу следующего содержания. Символьная переменная A$ присваивает значение в виде предложения, которое вводится с клавиатуры. Определить в символьной строке количество букв а.  Результаты  программы вывести на экран.

CLS

K = 0

INPUT “Введите предложение  ”, A$

FOR I = 1 TO LEN (A$)                          ‘заголовок цикла

IF MID$ (A$, I, 1) = “а” THEN

K = K + 1                                                 

END IF

NEXT I                                         ‘изменение параметра цикла на 1

PRINT “Количество букв А в предложении =”; K

END

 

 

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Пример 5. Составить алгоритм и программу следующего содержания. Вывести на экран коды символов в интервале [32, 47]. Результаты  программы вывести на экран в 1 столбик, в 5 столбиков, в строку, случайным образом.

CLS

‘RANDOMIZE TIMER

FOR I = 32 TO 47                                    ‘заголовок цикла

‘LOCATE 23*RND + 1, 75*RND + 1    

PRINT I; “=”; CHR$(I)

NEXT I                                         ‘изменение параметра цикла на 1

END

 

Примечание: для вывода результата

в 5 столбиков надо в операторе PRINT добавить запятую

PRINT I; “=”; CHR$(I),

в строку – в операторе PRINT добавить точку с запятой:

PRINT I; “=”; CHR$(I);

случайным образом – удалить апострофы в операторах RANDOMIZE и LOCATE

 

 
 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример 6. Составить алгоритм и программу следующего содержания. Символьная переменная A$ присваивает значение в виде последовательности символов из знаков и цифр. Определить в символьной строке количество букв и цифр. Коды цифр находятся в интервале [48, 57].   Результаты  программы вывести на экран.

CLS

K1 = 0: К2 = 0

A$ = “1**2$$3%678”

FOR I = 1 TO LEN (A$)           ‘заголовок цикла

IF ASC (MID$ (A$, I, 1)< = 57 AND ASC (MID$ (A$, I, 1)> = 48 THEN

K1 = K1 + 1

ELSE

K2 = K2 + 1

END IF

NEXT I                           ‘изменение параметра цикла на 1

PRINT “Количество цифр в строке =”; K1

PRINT “Количество знаков в строке =”; K2

END

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


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

CLS

K$= “”

1 IF K$ = “s” THEN PRINT “Работа завершена” : END

K$ = INKEY$

IF K$ <> “” THEN

PRINT ASC (K$); K$                             

GOTO 1

END

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



Пример 8. Составить алгоритм и программу следующего содержания. Символьная переменная A$ присваивает значение в виде последовательности символов 5, а, 2, в, с, %, $,. Определить в символьной строке код символа.   Результаты  программы вывести на экран.

CLS

DATA  5, а, 2, в, с, %, $

FOR I = 1 TO 7                                        ‘заголовок цикла

READ A$

PRINT «Символ»; A$; «имеет код»; ASC(A$)

NEXT I                                         ‘изменение параметра цикла на 1

END

 

 

 

 
 

 

 

 

 

 

 


 

 

 

 

 

CLS

A$= “хорошо

FOR I = 1 TO LEN (A$)                          ‘заголовок цикла

PRINT MID$(A$, I, 1); ASC (MID$(A$, I, 1)

NEXT I                                         ‘изменение параметра цикла на 1

END

 

 

 

 
Пример 9. Составить алгоритм и программу следующего содержания. Символьная переменная A$ присваивает значение в виде слова «Хорошо». Вывести на экран буквы данного слова по одной в каждой строке и определить код буквы.   Результаты  программы вывести на экран.

Символьные массивы

Символьные массивы, как и числовые массивы, в своем имени имеют знак $ (доллар). Для объявления символьного массива также используется оператор DIM.

Например, объявлен массив N$, состоящий из 6 элементов:

DIM N$(6)

 

N$(1)

N$(2)

N$(3)

N$(4)

N$(5)

N$(6)

0

0

0

0

0

0

 

В памяти компьютера сформировались 6 пустых ячеек с именами  от N$(1) до N$(6). С элементами символьных массивов можно делать разные действия: вводить, выводить, перезаписывать в другой массив по условию и без условия и другие действия.

 

Действия с элементами символьного массива

I. Ввод элементов символьного массива

1 способ – с использованием оператора INPUT

 

Пример 1. Имеется символьный массив А$, состоящий из 5 элементов, элементы которого заполняются любыми словами, введенными с клавиатуры.

DIM A$ (5)

PRINT  “Введите 5 элементов массива”

FOR I =1 TO 5

PRINT “Введите ”; I; “-ый элемент

INPUT A$(I)

NEXT I

 

2 способ – с использованием оператора DATA и READ

 

Пример 2. Имеется символьный массив А$, состоящий из 5 элементов, элементы которого заполняются следующими словами: INPUT, PRINT, LETCOLOR, RND,  которые считываются из блока данных.

DIM A$ (5)

DATA INPUT, PRINT, LET,  COLOR, RND

FOR I =1 TO 5

READ A$ (I)

NEXT I

II. Вывод элементов символьного массива

Вывод элементов массива осуществляется в цикле (лучше отдельным циклом) с использованием оператора PRINT. Для примера 2 надо организовать отдельный цикл от 1 до 5:

 

FOR I =1 TO 5

PRINT “A (”; I; “) =”; A$ (I)

NEXT I

 

На экране:

А(1) = INPUT

А(2) = PRINT

А(3) = LET

А(4) = COLOR

А(5) = RND

 

III. Другие действия с элементами символьного массива

Пример 1.  Составить алгоритм и программу следующего содержания. Имеется символьный массив B$, , состоящий из 5 элементов. Элементы массива заполнены следующими словами: молоко, кокос, корова, кот, колос,  которые считываются из блока данных DATA. Определить количество букв О в каждом слове.  Результаты программы вывести на экран.

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример 2.  Составить алгоритм и программу следующего содержания. Имеется символьный массив B$, состоящий из 6 элементов. Элементы массива заполнены следующими словами: молоко, ферма, корова, сок, кот, колос,  которые считываются из блока данных DATA. Все слова, начинающиеся на букву К переписать в массив С$, остальные слова – в массив N$. Результаты программы вывести на экран.

 

 

‘запись элементов одного массива в другой по условию

CLS

K1 = 0 : K2 = 0

DATA молоко, ферма, корова, сок, кот, колос,

DIM B$ (6), C$ (6), N$ (6)                      ‘объявление массивов

FOR I = 1 TO 6                                        ‘заголовок 1-ого цикла

READ B$(I)                                             ‘ввод i–ого элемента

NEXT I

FOR I = 1 TO 6                                        ‘заголовок 2-ого цикла

IF LEFT$(B$(I), 1 ) = ”к” THEN

K1=K1 + 1                                                ‘индекс массива C$

C$(K1) = B$(I)

ELSE

K2=K2 + 1                                                ‘индекс массива N$

N$(K2) = B$(I)

END IF

NEXT I                                ‘изменение параметра цикла на 1

 

FOR I = 1 TO 6                                        ‘заголовок 3-ого цикла

LOCATE I + 2, 40                 

PRINT “B$ (“; I; “) =”; B$ (I)

LOCATE I + 7, 10

PRINT “C$ (“; I; “) =”; C$ (I), “N$ (“; I; “) =”; N$ (I)

NEXT I

END

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Пример 3.  Составить алгоритм и программу следующего содержания. Имеется символьный массив B$, состоящий из 6 элементов. Элементы массива заполнены следующими словами: молоко, ферма, корова, сок, кот, колос,  которые считываются из блока данных DATA. Все слова, длина которых меньше или равна 5, но больше или равна 3 переписать в массив С$, остальные слова – в массив N$. Результаты программы вывести на экран.

 

‘запись элементов одного массива в другой по условию

CLS

K1 = 0 : K2 = 0

DATA молоко, ферма, корова, сок, кот, колос,

DIM B$ (6), C$ (6), N$ (6)                      ‘объявление массивов

FOR I = 1 TO 6                                        ‘заголовок 1-ого цикла

READ B$(I)                                             ‘ввод i–ого элемента

NEXT I

FOR I = 1 TO 6                                        ‘заголовок 2-ого цикла

IF LEN(B$(I))>=3 AND LEN(B$(I))<=5 THEN

K1=K1 + 1                                                ‘индекс массива C$

C$(K1) = B$(I)

ELSE

K2=K2 + 1                                                ‘индекс массива N$

N$(K2) = B$(I)

END IF

NEXT I                                ‘изменение параметра цикла на 1

 

FOR I = 1 TO 6                                        ‘заголовок 3-ого цикла

LOCATE I + 2, 40                 

PRINT “B$ (“; I; “) =”; B$ (I)

LOCATE I + 7, 10

PRINT “C$ (“; I; “) =”; C$ (I), “N$ (“; I; “) =”; N$ (I)

NEXT I

END

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Пример 4.  Составить алгоритм и программу следующего содержания. Имеется символьный массив B$, состоящий из 6 элементов. Элементы массива заполнены следующими символами: 1, а, 2, б, 3, в, 4, г,  которые считываются из блока данных DATA. Все числа, переписать в массив С$, буквы– в массив N$. Интервал цифр [48,57]. Результаты программы вывести на экран.

 

 

‘запись элементов одного массива в другой по условию

CLS

K1 = 0 : K2 = 0

DATA  1, а, 2, б, 3, в, 4, г

DIM B$ (6), C$ (6), N$ (6)                         ‘объявление массивов

FOR I = 1 TO 6                                          ‘заголовок 1-ого цикла

READ B$(I)                                               ‘ввод i–ого элемента

NEXT I

FOR I = 1 TO 6                                          ‘заголовок 2-ого цикла

IF ASC(MID$(B$(I), 1, 1)<=57 AND ASC(MID$(B$(I), 1, 1)>=48  THEN

K1=K1 + 1                                                 ‘индекс массива C$

C$(K1) = B$(I)

ELSE

K2=K2 + 1                                                 ‘индекс массива N$

N$(K2) = B$(I)

END IF

NEXT I                                 ‘изменение параметра цикла на 1

 

FOR I = 1 TO 6                                          ‘заголовок 3-ого цикла

LOCATE I + 2, 40                   

PRINT “B$ (“; I; “) =”; B$ (I)

LOCATE I + 7, 10

PRINT “C$ (“; I; “) =”; C$ (I), “N$ (“; I; “) =”; N$ (I)

NEXT I

END

 

 
 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Пример 5.  Составить алгоритм и программу следующего содержания. Имеется символьный массив B$, состоящий из 4 элементов. Элементы массива заполнены следующими словами: кот, бит, сок, нос,  которые считываются из блока данных DATA. Вывести на экран коды букв каждого слова (элемента) массива. Результаты программы вывести на экран.

 

CLS

DATA кот, бит, сок, нос

DIM B$ (4)                                               ‘объявление массивов

FOR I = 1 TO 4                                        ‘заголовок 1-ого цикла

READ B$(I)                                             ‘ввод i–ого элемента

NEXT I

FOR I = 1 TO 4                                        ‘заголовок 2-ого цикла

PRINT “Коды символов в слове ” ; B$(I); “:”

FOR J = 1 TO LEN (B$(I))

PRINT MID$(B$(I), J, 1); “=”; ASC (MID$ (B$(I), J, 1))

NEXT J

NEXT I                                ‘изменение параметра цикла на 1

END

 

 
 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Графика в QBASIC

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

специального оператора  SCREEN, который определяет количество точек на экране. Причем чем больше точек, тем качественнее графическое изображение или иначе разрешение. Каждая точка или пиксель  экрана имеет свои координаты: по горизонтали (X) и вертикали (Y).  Начало координат находится в левом верхнем углу экрана монитора с координатами (0, 0).

 

 

 

                                                           

 

 

 

 

В языке QBAIC существует несколько графических режимов, от которых зависит разрешение экрана, формат текста и число цветов (см. таблицу):

 

Номер

режима

(SCREEN)

Разрешение

режима

Формат

текста

Число

цветов

1

2

7

8

9

12

13

320х200

640х200

320х200

640х200

640х350

640х480

320х200

40х25

80х25

40х25

80х25

80х25

80х30

40х25

16

16

16

16

64

256

256

 

 

 

 

 

 

 

 

 

 

 

Мы будем использовать графический режим SCREEN 9 или SCREEN 12.

 

 

 

Графические примитивы в QBASIC

1. Точка

Для вывода точки используется оператор PSET, который в общем виде записывается

Надпись: PSET (X, Y), C

 

 

Где X и Y – координаты точки на экране;

               С – код цвета точки от 0 до 15 (по умолчанию черный цвет).

Примеры:

1) SCREEN 9

      PSET (320, 175), 4

На экране: на черном экране появится красная точка в центре.

2) SCREEN 9

      COLOR  , 1

      PSET (320, 175), 4

На экране: на синем экране появится красная точка в центре

 

 

 

2. Отрезок и прямоугольник

Для вывода линии используется оператор LINE, который в общем виде записывается:

Надпись: LINE (X1, Y1) – (X2, Y2), C

 

 

 

Где X1 и Y1 – координаты начала отрезка;

         X и Y2 – координаты конца отрезка;

                  С – код цвета линии от 0 до 15 (по умолчанию черный цвет).

 

Если координаты начальной точки отсутствуют, то за начальную точку принимается точка окончания предыдущей линии, либо точка с координатами (0, 0).

 

Пример:

SCREEN 9

COLOR 1, 14

LINE (100, 300) – (600, 50), 1

На экране: на желтом экране появится отрезок синего цвета;

 

 

 

 

 

 

 

 

Для вывода прямоугольника используется оператор LINE, в который добавляется буква B и в общем виде записывается:

 

Надпись: LINE (X1, Y1) – (X2, Y2), C, B

 

 

Где X1 и Y1 – координаты начала диагонали;

         X и Y2 – координаты конца диагонали;

                  С – код цвета линии от 0 до 15 (по умолчанию черный цвет).

                  B – признак прямоугольника.

 

 

 

 

 

Надпись: 350

 

 

Для вывода окрашенного прямоугольника используется оператор LINE, в который добавляются буквы BF (слитно)  и в общем виде записывается:

 

Надпись: LINE (X1, Y1) – (X2, Y2), C, BF

 

 

 

 

Пример:

SCREEN 9

COLOR 1, 14

LINE (100, 300) – (600, 50), 1, B

На экране: на желтом экране появится прямоугольник синего цвета.

 

3. Окружность

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

 

Надпись: CIRCLE (X, Y), R, C

 

 

Где X и Y – координаты центра окружности;

               R – радиус окружности;

               С – код цвета от 0 до 15 (по умолчанию черный цвет).

 

Пример:

SCREEN 9

CIRCLE (320, 175), 50, 2

На экране: на черном экране в центре появится окружность зеленого цвета.

4. Эллипс

Эллипс – это по сути окружность, которой слегка дали по «голове» или по «бокам», в результате чего она стала вытянутой по вертикали или горизонтали. И вместо одного радиуса, как у окружности, у эллипса стало два – по осям X (Rх) и Y (Ry).

Частное от деления Rx и Ry  дает нам так называемый коэффициент сжатия:

 

                             К =

 

Таким образом, для вытянутых по горизонтали эллипсов коэффициент сжатия будет в пределах [0, 1]. А для эллипсов, вытянутых по вертикали коэффициент сжатия будет больше 1,

 

 

 

 

 

 

 

 

 

 


Для вывода эллипса используется оператор CIRCLE, который в общем виде записывается:

Надпись: CIRCLE (X, Y), R, C, , , К

 

 

 

Где X и Y – координаты центра эллипса;

               R –радиус той окружности, из которой этот эллипс получился;

               С – код цвета линии от 0 до 15 (по умолчанию черный цвет).

               К – коэффициент сжатия.

 

Пример:

SCREEN 9

CIRCLE (320, 175), 50, 2, , , .5

На экране: на черном экране в центре появится эллипс зеленого цвета, сжатый сверху и снизу. у которого Ry  в 2 раза меньше, чем Rх.

 

5. Закраска

Закрашивает замкнутые области.

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

 

Надпись: PAINT (X, Y), C1, С2

 

 

 

Где X и Y – координаты любой точки внутри закрашиваемого контура;

               С1 – цвет, которым закрашивается контур;

               С2 – цвет самого контура.

   Если цвета равны, то достаточно указать цвет С1. 

 

 

 

 

 

 

Этапы работы при  создании рисунка.

 

 

1.      Начертить координатную сетку или воспользоваться миллиметровой бумагой при этом продумать масштаб, например, одна клеточка 10 или 20 точек экрана.

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

3.      Придумать использование операторов.

4.      Записать программу и ввести ее в память компьютера.

5.      Выполнить программу. При необходимости отладить (отредактировать) программу.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ЗАДАНИЕ 1

 

Создать на экране картинку, используя операторы графики

 

 

Надпись: 0    20     40	   60	      80    100   120    140   160  180   200    220  240  260   280    300   320	 340	  360   380	400   420   440  460   480   500   520   540   560  580    600

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Понятие подпрограммы

 

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

 

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

 

Подпрограмма записывается в виде последовательности строк в конце программы, всегда начинается с определенного номера строки и заканчивается оператором RETURN. Оператор RETURN (вызов)  возвращает подпрограмму в то место, откуда она вызывалась и передает управление оператору, стоящему за оператором GOSUB.

Для вызова подпрограммы используется оператор GOSUB. В общем виде оператор GOSUB записывается:

Надпись: GOSUB N

 

 

Где N – номер строки с которой начинается подпрограмма.

Схематично это можно изобразить так:

 

 

 

     Основная программа

 

 

 

 

 

   Подпрограмма

 

 

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

Рассмотрим пример. На картинке надо нарисовать не одно, а несколько деревьев. Для этого лучше организовать подпрограмму для рисования одного дерева, а затем будем вызывать ее столько раз, сколько деревьев надо нарисовать.

Надпись: SCREEN 9
LINE (80, 240) – (220, 140), 1, BF ‘стены	
LINE (120, 200) – (180 1610), 1, BF ‘окно
LINE (80, 140) – (150, 60), 4 ‘линия1
LINE (150, 60) – (220, 140), 4 ‘линия2
LINE (220, 140) – (80, 140), 4 ‘линия3
PAINT (150, 110, 4, 4 ‘заливка крыши
X1=270: Y1=240: X2=290: Y2=160: X3=280: Y3=110
GOSUB 10
END
10 ‘подпрограмма рисования дерева
LINE (X1,Y1) – (X2,Y2), 6, BF ‘ствол
CIRCLE (X3,Y3), 50, 2, , , 2.5 ‘крона
PAINT (X3, Y3), 2, 2 ‘заливка кроны
RETURN

 

 

 

 

 

 

 

 

 

 

 

 

 

ЗАДАНИЕ 2

Создать на экране картинку с использованием подпрограмм (для дерева и для облака).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ЗАДАНИЕ 3

Создать на экране картинку в соответствии с образцом.

1) Измените координаты солнца и туч в соответствии с картинкой.

2) Вставьте строки в нужные места программы (файл КАРТИНК2.BAS)

 

‘ОКРАСКА ВСЕГО ЭКРАНА В ГОЛУБОЙ ЦВЕТ

COLOR 1, 11

 

‘ЦИКЛ ДЛЯ ВЫВОДА ДОЖДЯ В ТЕКСТОВОМ ЭКРАНЕ

FOR I =1 TO 30

X = RND * (10 – 4) + 4 ‘интервал строк от 4 до 10

Y = RND * (70 – 50) + 50 ‘интервал столбцов от 50 до 70

LOCATE X, Y

PRINT “/”

NEXT I

 

‘ОКРАСКА ПОЛЯ ЗЕМЛИ В СВЕТЛО-ЗЕЛЕНЫЙ ЦВЕТ

LINE (0, 160) – (650, 350), 10, BF

 

‘ЦИКЛ ДЛЯ ВЫВОДА ТОЧЕК В ПОЛЕ ЗЕМЛИ

FOR I =1 TO 3000

X = RND * 650 ‘интервал точек по оси Х от 0 до 650

Y = RND * (350 – 160) + 160 ‘интервал точек по оси Y от 160 до 350

PSET (X, Y), 6

NEXT I

 

 

 

                                             

 

Задание 4

 

1) Поставьте деревья в соответствии с картинкой. Для этого используйте цикл со счетчиком от 1 до 8 и приращения для переменных Х1, Х2, Х3.

 

‘ЗАДАТЬ НАЧАЛЬНЫЕ ЗНАЧЕНИЯ ПЕРЕМЕННЫХ ДЛЯ 1-ого ДЕРЕВА

X1=20: Y1=340: X2=40: Y2=260: X3=30: Y3=210

FOR I=1 TO 8

GOSUB 10 ‘вызов подпрограммы для рисования дерева

X1=X1 + 80 ‘приращение Х1

X2=X2 + 80 ‘приращение Х2

X3=X3 + 80 ‘приращение Х3

NEXT I

 

2) Поставьте облака в соответствии с картинкой. Для этого используйте цикл от 1 до 3 и приращения для переменных Х4 и Y4.

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задание 5

 

1) Поставьте деревья в соответствии с картинкой. Для этого используйте цикл со счетчиком от 1 до 7 и приращения для переменных Х1, Х2, Х3, Y1, Y2, Y3.

.

 

2) Поставьте облака в соответствии с картинкой. 

 

 

 

 

 

 

 

 

 

 

 

 

 


 


Скачано с www.znanio.ru