
199 Операторы- бейсик_ред1_изм2011-12.ppt
- Количество слайдов: 120
Программирование на Basic Основные операторы Автор Хмелькова Ольга Петровна
Основные операторы Ø Алфавит Ø Арифметические операции Ø Оператор присваивания Ø Операторы ввода – вывода информации Ø Графика в Basic Ø Операторы ветвления Ø Циклические операторы Ø Строковые операторы и функции Ø Массивы Ø Процедуры-функции и процедуры
Алфавит n Буквы (латинские): A … Z , a …z n Цифры (арабские): 0 … 9 n Знаки арифметических операций + – * / ^ -это возведение в степень -это деление нацело MOD -это остаток от деления n Знаки операций отношения > < = <> или >< -это знак «не равно» n Знаки препинания и разделители , . ; : – ? ! “ ” ( ) ‘ пробел n Различные символы % $ # & @
Арифметические операции 1. Сложение + 2. Вычитание – 3. Умножение * 2*3 4. Деление / 9/3 5. Возведение в степень ^ 1 2^(1/2) = 22 = 2 21 2^1/2 = 2 2^2=22
Арифметические операции 6. Целочисленное деление Знак операции: или DIV Запись операции: a b или a DIV b Результат операции: в частном отбрасывается дробная часть. Перед операцией операнды округляются до целого значения. (!!! проверить как округляет div и ) Примеры: a) 194=4 b) 19. 573. 32=203=6 с) 7 DIV 3=2
Арифметические операции 7. Остаток от деления Знак операции: MOD Запись операции: a MOD b (читается «a по модулю b» ) Результат операции: остаток от деления операндов. !!! Перед выполнением операнды округляются. Примеры: a) 19 MOD 4 = 3 b) 19. 57 MOD 3. 32 = 20 MOD 3 = 2
Арифметические выражения 1. Запись элементов арифметических выражений выполняется в одну строку. а) (2+3)/(5^2 -1) б) 1/2*x+((3 -x^2)/(6^(1/2))) ЗАПИШИТЕ ЭТИ ВЫРАЖЕНИЯ В МАТЕМАТИЧЕСКОЙ ФОРМЕ! 2. Нельзя ставить два знака арифметических действий подряд. 3. Последовательность арифметических операций, такая же, как в математике, в том числе: - действия внутри круглых скобок выполняются первыми; - возведение в степень; - умножение-деление; - сложение-вычитание.
Арифметические выражения
Стандартные функции 8. Стандартные функции Тригонометрические функции: SIN(x) COS(X) TAN(x) Квадратный корень SQR(x) Абсолютно значение (модуль |x|): ABS(х) Выбор случайных чисел в диапазоне от 0 до 1: RND Вычисление знака х : SGN(x) !!! Аргументы функции записываются в круглых скобках сразу после имени функции.
Стандартные функции QBasic
Стандартные функции 1. Имя функции: INT Результат: округление до ближайшего меньшего целого числа Примеры: INT(10. 51) = 10 INT(-10. 22) = -11 2. Имя функции: FIX Результат: отбрасывает дробную часть числа Примеры: FIX(10. 51) = 10 FIX(-10. 22) = -10 3. Имя функции: SGN Результат: возвращает знак указанного в качестве аргумента числового выражения Примеры: SGN(10. 51) = 1 SGN(-10. 22) = -1 SGN(0) = 0
Стандартные функции 4. Имя функции: RND Результат: выдает случайное число в диапазоне от 0 до 1 Примеры получения случайных чисел в различных диапазонах :
1. Оператор вывода данных на экран 2. Оператор ввода данных с клавиатуры 3. Оператор определения констант Операторы ввода – вывода информации
Оператор очистки экрана CLS Очищает весь экран монитора от текста и графики перед следующим исполнением программы. !!! С этого оператора начинается программа.
Оператор комментария REM – вставляет в текст программы комментарий. Синтаксис: REM [комментарий] или ‘ [комментарий] (где знак ‘ – знак апострофа) Оператор REM – неисполняемый оператор. Применение оператора необязательно. Однако, Использование оператора комментария – признак хорошего стиля записи программы. Примечание: Часто используется при отладке программы, когда требуется сделать строку с возможной ошибкой неисполняемой.
Оператор присваивания Z = x – (3 * y^2 + 7) Имя переменной, в которую будет занесён результат Оператор присваивания Выражение, результат которого вычисляется (может стоять конкретное число) Произносится: «Присвоить Зет значение Икс минус три Игрек квадрат плюс семь !!!!! (НЕЛЬЗЯ говорить «Зет РАВНО…» (Пример: x=x+1) Принцип работы оператора присваивания: 1. Вычисляется значение выражения. 2. Полученный результат присваивается переменной, а прежнее её значение безвозвратно теряется.
Оператор ввода данных с клавиатуры INPUT – организует ввод данных в программу с клавиатуры. Синтаксис: INPUT [; ] [“приглашение”{; |, }] переменные Квадратные скобки [ ] при синтаксической записи оператора употребляются для данных, которые могут либо присутствовать, либо отсутствовать. Примеры:
Оператор ввода данных с клавиатуры (продолжение) Синтаксис: INPUT [; ] [“приглашение”{; |, }] переменные где [; ] – сохраняет после ввода данных позицию курсора в той же строке. “приглашение” – подсказка, которая при исполнении программы сообщает, что нужно вводить (символьная константа). {; |, } – список разделителей, где: написание символа ; вызывает знак ? после исполнения, написание символа , означает отсутствие знака вопроса. переменные – список разделенных запятыми переменных, которым нужно присвоить значения набрав их с клавиатуры через запятую.
Оператор вывода данных PRINT– выводит данные на экран монитора. Имеет два варианта написания: PRINT или ? (знак вопроса) Синтаксис: PRINT [“подсказка” {; |, } список вывода] [{; |, }] Примеры:
Оператор вывода данных (продолжение) Синтаксис: PRINT [“подсказка” {; |, } список вывода] [{; |, }] где [“подсказка” {; |, } список вывода] – текст подсказки, переменные, выражения, разделенные точкой с запятой, запятой или пробелом. Написание разделителя ; (точка с запятой) означает вывод на экране монитора очередного элемента записи сразу же после предыдущей записи. Написание разделителя , (запятая) или пробела означает вывод на экране монитора очередного элемента записи через 14 позиций после предыдущей записи.
Оператор вывода данных (продолжение) Синтаксис: PRINT [“подсказка”; список вывода] [{; |, }] где [{; |, }] – завершающий символ, Написание символа ; или , означает вывод следующей записи на экран монитора в этой же строке через пробел. Если завершающего символа нет, то следующая запись на экране монитора выводится с новой строки. Отсутствие каких-либо записей после оператора PRINT означает, что следующая запись на экране монитора выводится с новой строки.
Оператор вывода данных (продолжение) Синтаксис: PRINT [“подсказка”; список вывода] [{; |, }] где [{; |, }] – завершающий символ, написание символа ; или , означает вывод следующей записи на экран монитора в этой же строке через пробел. Если завершающего символа нет, то следующая запись на экране монитора выводится с новой строки. !!! ОТСУТСТВИЕ КАКИХ-ЛИБО ЗАПИСЕЙ после оператора PRINT означает, что следующая запись на экране монитора выводится с НОВОЙ СТРОКИ.
Пример: Программа:
Пример: Программа: Вывод на экране монитора:
Пример: Программа: Вывод на экране монитора:
Базовые алгоритмические конструкции
Базовые алгоритмические конструкции Каждая алгоритмическая структура имеет ОДНУ точку ВХОДА и ОДНУ точку ВЫХОДА начало ввод … вывод конец
Базовые алгоритмические конструкции 1. ЛИНЕЙНАЯ – команды выполняются одна за другой. 2. ВЕТВЛЕНИЕ – выполнение различных действий в зависимости от некоторого условия. 3. ЦИКЛИЧЕСКАЯ – многократное выполнение одних и тех же команд. Из этих алгоритмических конструкций можно построить любой алгоритм.
Линейный алгоритм
ЛИНЕЙНЫЙ АЛГОРИТМ Это алгоритм, в котором команды выполняются в порядке их записи, т. е. последовательно друг за другом. Начало Действие 1 … Действие n Конец
Порядок решения задач (пример)
Задача 1: Машина ехала t часов со скоростью V км/час. Определить расстояние, которое она проехала. 1. Постановка задачи. Дано: V - скорость t - время Найти: S - расстояние Определение математической модели (по какой формуле считаем) S = V * t
Задача 1: Машина ехала t часов со скоростью V км/час. Определить расстояние, которое она проехала. 2. Составление БЛОК-СХЕМЫ Овал (Начало) Параллелограмм (Ввод начальных значений): время, скорость Прямоугольник (Блок обработки ): запись формулы Параллелограмм (Вывод результатов): расстояние Овал (Конец) начало t , V S = V * t S конец
Задача 1: Машина ехала t часов со скоростью V км/час. Определить расстояние, которое она проехала. 3. Написание программы: 1 вариант 2 вариант CLS REM определение расстояния INPUT “V=”; V INPUT “t=”; t S=V*t PRINT “S=”; S END 4. Исполнение программы – клавиша F 5
Задача 2 Написать программу, которая бы спрашивала Ваше имя и выдавала приветствие «Здравствуй, (. . . имя)» 1 вариант 2 вариант CLS. . . PRINT “Hello, ”; A$ PRINT “Hello, ”, A$ END Чем отличается использование разделителя ; от разделителя , ?
Задача 2 Написать программу, которая бы спрашивала Ваше имя и выдавала приветствие «Здравствуй, (. . . имя)» 1 вариант 2 вариант CLS PRINT“What is your name? ” INPUT A$ PRINT “Hello, ”; A$ END PRINT “Hello, ”, A$ END Чем отличается использование разделителя ; от разделителя , ?
Задачи (линейный алгоритм) Задача 3. Составьте программу для определения количества денег, необходимых для покупки пакета молока, пакета кефира и нескольких творожных сырков. CLS. . . END Задача 4. Составьте программу для определения гипотенузы прямоугольного треугольника, если известны его катеты.
Задачи (линейный алгоритм) Задача 3. Составьте программу для определения количества денег, необходимых для покупки пакета молока, пакета кефира и нескольких творожных сырков. CLS. . . END Задача 4. (домашнее задание) Составьте программу для определения гипотенузы прямоугольного треугольника, если известны его катеты.
Задачи (линейный алгоритм) Задача 5. Составьте программу для определения среднего арифметического трех чисел. Задача 6. Составьте программу для определения сдачи с купюры в 5000 руб. при покупке трех наименований товара в магазине канцелярских товаров. Задача 7. (домашнее задание) Составьте программу для подсчета суммы оплаты за потребление электроэнергии в мае при изменении расхода на n к. Вт и увеличении тарифа оплаты за 1 к. Вт. ч на 5% от стоимости в апреле.
Задачи (линейный алгоритм) Задача 8*. Подсчитайте в процентах изменение тарифа стоимости 1 к. Вт. ч электроэнергии в 2012 году по сравнению с 2009, 2010 и 2011 годами при изменении тарифа оплаты за 1 к. Вт. ч в соответствии с данными, приведенными в таблице (расчет проведите отдельно для домов с газовой и электрической плитой). год газовая плита электрическая плита 2012 2011 2010 2, 80 руб. /к. Вт. ч 2, 55 руб. /к. Вт. ч 1, 96 руб. /к. Вт. ч 1, 79 руб. /к. Вт. ч 2009 2, 31 руб. /к. Вт. ч 1, 62 руб. /к. Вт. ч
1. Включение графического режима 2. Оператор выбора отображаемого цвета 3. Операторы перемещения курсора и очистки экрана 4. Графические примитивы: Точка, Отрезок, Прямоугольник, Закрашенный прямоугольник, Окружность, Эллипс 5. Пример программы, рисующей Российский флаг 6. Оператор закраски замкнутой области 7. Дуги окружности и эллипса (пример и задачи) 8. Правила построения сложных изображений Графика в BASIC
Включение графического режима SCREEN 12 Графический режим включается только один раз 0; 0 X 640 Экран Y 480
Оператор выбора отображаемого цвета COLOR [передний план] , [фон] где передний план – номер цвета отображаемых на экране текста и графики, фон – номер цвета фона, на котором это отображение происходит. Например: COLOR 4, 2 Красные символы Зелёный фон По умолчанию, фон – чёрный, символы – белые. Таблица цветов
Номера цветов основной палитры Номер цвета Название цвета 0 Чёрный 8 Серый 1 Синий 9 Светло-синий 2 Зелёный 10 Светло-зелёный 3 Голубой 11 Светло-голубой 4 Красный 12 Розовый 5 Пурпурный 13 Светло-пурпурный 6 Коричневый 14 Жёлтый 7 Светло-серый 15 Белый
Операторы перемещения курсора и очистки экрана Перемещение курсора на заданную позицию экрана (строк – 25, столбцов – 80). LOCATE <номер строки>, <номер столбца> Например: LOCATE 14, 25 CLS – оператор очистки экрана
Точка PSET (X, Y), C где х и у – координаты точки на экране, С – её цвет 0 150 Х 270 (х, у) У PSET (270, 150), 1
Отрезок LINE (Х 1, У 1)—(Х 2, У 2), С где Х 1, У 1 — координаты начала отрезка; Х 2, У 2 — координаты конца отрезка; С — цвет отрезка. 150 450 Х 100 270 У LINE (150, 100)—(450, 270), 2
Прямоугольник LINE (Х 1, У 1)—(Х 2, У 2), С, В где Х 1, У 1 и Х 2, У 2 — координаты начала и конца диагонали (причём, диагональ не рисуется); С — цвет сторон прямоугольника В – буква (признак прямоугольника от англ. слова box – ящик, коробка). 150 450 Х 100 270 У LINE (150, 100)—(450, 270), 2, B
Закрашенный прямоугольник LINE (Х 1, У 1)—(Х 2, У 2), С, ВF где Х 1, У 1 и Х 2, У 2 — координаты начала и конца диагонали; С — цвет BF- признак закрашенного прямоугольника (от английского слова full box – полная коробка). 150 450 Х 100 270 У LINE (150, 100)—(450, 270), 2, BF
Окружность CIRCLE (X, Y), R, C где х, у – координаты центра, R – радиус (в экранных точках), С – цвет. 340 Х 150 R O Y Например, CIRCLE (340, 150), 90, 6
Эллипс CIRCLE (X, Y), R, C, , , К где х, у – координаты центра эллипса, R – радиус той окружности, из которой этот эллипс получится, С – цвет, К – значение коэффициента сжатия K > 1 0 < K < 1 Rx Rx RY RY
Графика (начало и конец программы) CLS SCREEN 12 … … … END
Программа, рисующая Российский флаг CLS SCREEN 12 LINE (100, 50) – (500, 130), 15, BF LINE (100, 130) – (500, 210), 1, BF LINE (100, 210) – (500, 290), 4, BF END Попробуйте сами написать программы!!!
Постройте изображение.
Задача № 1 Создайте программу, рисующую на одном экране куб и пирамиду.
Задача № 2 Напишите программу для построения цилиндра, состоящего из 6 эллипсов и двух вертикальных линий.
Оператор закраски замкнутой области PAINT (X, Y), C 1, C 2 где х, у – координаты любой точки внутри закрашиваемого контура, с1 – цвет, которым закрашивается область, с2 – цвет контура. Если эти цвета совпадают, то достаточно указать с1. Правила закраски: - контур должен быть замкнут. - контур должен быть одноцветен. Если составляющие даже замкнутого контура разных цветов, то для компьютера эта ситуация аналогична разрыву. - координаты точки закраски должны лежать внутри контура. Рекомендуется закрашивать контур непосредственно после того, как он нарисован. Если точка закраски попала: - вне контура, то закрасится весь экран, за исключением самого контура; - на контур, то ничего не закрасится.
Дуги окружности и эллипса Оператор рисования дуги окружности CIRCLE (X, Y), R, C, α, β где α – угол от которого дуга начинается (в радианах) β β – угол, где дуга заканчивается Таким образом, дуги изображаются против часовой стрелки !!! 3. 14 Можно указать формулу, по которой будет считаться радианная мера угла, зная величину угла в градусах и радианах (например, 90º): 3. 14*1/2 Оператор рисования дуги эллипса CIRCLE (X, Y), R, C, α, β, К α 3. 14/2=1. 57 0 или 2*3. 14=6, 28 3. 14*(3/2)=4. 71 Пример
Дуги окружности и эллипса Для справки: Углы для расчета при построении дуг окружностей
Задача 1. Нарисуйте закрашенный квадрат (одним оператором) с вписанными в него двумя разноцветными окружностями.
Постройте изображение:
Пример. Нарисовать месяц и закрасить его в жёлтый цвет. CLS SCREEN 12 CIRCLE (500, 70), 50, 15, 3/2*3. 14, 3. 14/2 ‘дуга окружности CIRCLE (500, 70), 50, 15, 3/2*3. 14, 3, 14/2, 1. 5 ‘дуга эллипса PAINT (545, 70), 14, 15 END
Кораблик
Правила построения сложных изображений 1) Обязательно начертите своё изображение на бумаге в масштабе 2) Разбейте изображение на примитивы 3) Найдите и выделите на рисунке опорные точки – концы отрезков, начала и концы дуг, центры окружностей, эллипсов, отдельные точки. 4) Определите максимальный размер изображения в экранных точках, исходя из размеров экрана. 5) Определите координаты всех опорных точек, значения радиусов окружностей и эллипсов, коэффициенты сжатия эллипсов, углы всех дуг. 6) Определите последовательность построения и закраски замкнутых контуров. 7) Напишите программу, введите её, снабжая как можно большим количеством комментариев, и отладьте её. Попробуйте написать программу!!!
Задача 1. Выведите на экран пятиконечную звезду, вписанную в окружность и закрашенную как на рисунке:
Задача 2. Постройте изображение
1. 2. 3. 4. Оператор безусловного перехода Оператор выбора ON-GOTO Оператор выбора SELECT Операторы ветвления
Оператор безусловного перехода Безусловный переход оператором GOTO предписывает программе свернуть с линейного пути и перейти к метке, расположенной в любом месте программы. GOTO метка В качестве метки используется натуральное число. Метка указывается только в начале строки. Данный оператор надо использовать при крайней необходимости: он портит структуру программы, делает её запутанной и затрудняет её отладку.
Оператор условного перехода Условие – выражение, находящееся между словами «если» и словом «то» и принимающее значение «истина» или «ложь» Условия могут быть простыми и сложными: Простое условие – это выражение, составленное из двух переменных, арифметических выражений или двух текстовых величин, связанных одним из знаков сравнения (равно (=), не равно (<>), больше (>), меньше (<), меньше или равно (<=), больше или равно (>=)). Например, 5 > 3, X + Y <= 9 Сложное высказывание - это последовательность простых условий, объединённых между собой знаками логических операций (и (and), или (or), не (not)). Например, (7 > X) and (X < 9)
Полное ветвление IF <условие> THEN <действие 1> ELSE <действие 2> да Действие 1 1. 2. 3. 4. Условие нет Действие 2 Принцип действия оператора: Вычисляется выражение при текущих значениях входящих в него переменных. Если полученное значение есть истина, то выполняется <действие 1> (ветвь THEN), а <действие 2> игнорируется. Если полученное значение ложно, то выполняется <действие 2> (ветвь ELSE), а <действие 1> игнорируется. После выполнения одной из ветвей управление передаётся следующей строке программы. Весь оператор должен располагаться в одной строке.
Если в каждой из ветвей IF-конструкции выполняется не один оператор, а несколько, то их можно разделить двоеточием. А ещё лучше записать конструкцию в другом виде (теперь запись оператора в одну строчку не обязательна: IF <условие> THEN <действие 1> ELSE <действи 2> END IF да Условие нет Действие 1 Действие 2 … … Действие 1 Действие 2
Неполное ветвление Если ветка ELSE отсутствует и условие ложно, то управление сразу передаётся следующей строке программы: никакие из операторов не выполняются. да Условие Нет Действие Оператор: IF <условие> THEN <действие > Попробуйте написать программу!!!
Задача 1. Напишите программы, которые в зависимости от введенного числа либо вычисляют функцию, либо выдают сообщение, что функция не определена: а) б) Задача 2. Напишите программу для вычисления функции: Задача 3. Напишите программу, определяющую четность или нечетность введенного с клавиатуры целого числа. Задача 4. Напишите программу, находящую меньшее из двух, введенных с клавиатуры чисел.
Задача 1. Напишите программы, которые в зависимости от введенного числа либо вычисляют функцию, либо выдают сообщение, что функция не определена:
Оператор выбора ON-GOTO Если требуется выбор более чем из двух альтернатив, применяется оператор множественного выбора. Форма записи оператора: ON<арифм. выражение> GOTO<список номеров строк> <арифм. выражение>- выражение, вычисляемое при текущих значениях входящих в него переменных < список номеров строк > - перечень номеров строк (через запятую), на одну из которых должно быть передано управление. Принцип действия оператора: 1. Вычисляется значение выражения 2. Полученное значение округляется до целого числа 3. Управление передаётся строке, очерёдность которой в списке номеров строк соответствует вычисленному значению. Если значение выражения меньше 1 или превышает количество элементов в списке номеров строк, управление передаётся оператору, следующему непосредственно за оператором ON-GOTO Пример
Пример: ON (x^2 + 7) GOTO 10, 20, 30 если результат выражения x^2 + 7 =1, то управление передаётся строке 10, если результат выражения x^2 + 7 =2, то управление передаётся строке 20 и т. д.
Оператор выбора SELECT Конструкция оператора: SELECT CASE <тест выражение> CASE <список выражений 1> <тест выражение> - любое числовое или строковое выражение; <список выражений 1> - одно или несколько [блок операторов 1] выражений для сравнения с параметром <тест CASE <список выражений 2> выражение> [блок операторов 2] – один или несколько операторов в одной или нескольких строках … Аргументы списка выражений могут принимать любую CASE ELSE форму: [блок операторов n] -Выражение [, выражение]… -Выражение ТО выражение END SELECT -IS оператор отношения выражения Пример: INPUT «Введите номер месяца» ; N SELECT CASE N CASE IS >=12 PRINT «не существует такого месяца» CASE IS <= 0 PRINT «не существует такого месяца» CASE 1 TO 12 PRINT «такой месяц есть» CASE 1 PRINT «понедельник» END SELECT
1. Оператор с заранее известным числом повторений FOR…NEXT 2. Оператор с неизвестным числом повторений DO…LOOP и WHILE…WEND 3. Цикл с несколькими параметрами. 4. Вложенные циклы. 5. Оператор приостановки выполнения программы и оператор звука 6. Случайные числа 7. Построение графиков функций Циклические операторы
• Кадровое обеспечение и методическое обеспечение ЦИКЛЫ Цикл – это такая форма организации действий, при которой одна и та же последовательность действий выполняется несколько раз (или ни разу) до тех пор, пока выполняется некоторое условие 2 типа циклов: а) Цикл с известным числом повторений б) Цикл с неизвестным числом повторений
• Кадровое обеспечение и методическое обеспечение Оператор с заранее известным числом повторений FOR…NEXT FOR <переменная> = <выр1> TO <выр2> [STEP <выр3>] <тело цикла> NEXT <переменная> - управляющая переменная (параметр, счётчик) цикла. Может быть любая переменная арифметического типа. <выр1>, <выр2>, <выр3>- арифметические выражения, определяющие соответственно начальное значение параметра, конечное его значение и приращение (шаг). Шаг может быть положительным и отрицательным. Если шаг равен 1, то заключённую в квадратные скобки часть оператора можно опустить. <тело цикла> - любое количество строк, содержащие операторы, которые требуется повторять. Счётчик Тело цикла …
Принцип действия оператора: 1. Вычисляются выражения <выр1>, <выр2>, <выр3> 2. Параметру присваивается начальное значение <выр1> 3. Значение параметра сравнивается с конечным значением <выр2> - Если значение параметра не больше <выр2> (при положительном шаге) или не меньше <выр2> (при отрицательном шаге), то выполняется тело цикла - В противном случае осуществляется выход из цикла, и выполняется оператор, следующий за ключевым словом NEXT 4. Если не произошёл выход из цикла, значение параметра изменяется на величину шага, и повторяется п. 3 Пример
Пример записи оператора с параметром: Определить результат выполнения программы: X = 0 FOR K = 1 TO 8 STEP 2 X = X + K NEXT K PRINT X END Решение: K = 1, (1 < 8) X = 0 + 1 =1 K = 3, (3 < 8) X = 1 + 3 = 4 K = 5, (5 < 8) X = 4 + 5 = 9 K = 7, (7 < 8) X = 9 + 7 = 16 K = 9, (9 > 8) выход Ответ Х=16 Хотите проверить знания на правильность записи операторов?
Задача: С клавиатуры запрашивается любая цифра от 2 до 9, а затем программа печатает таблицу умножения на эту цифру CLC INPUT “Введите число от 2 до 9”; N FOR i =2 TO N PRINT I; “*”; N; “=”; i*N NEXT i END
Определите, какие из представленных операторов написаны правильно, а какие нет. В случае неправильной записи объясните допущенные ошибки. Все операторы рассматриваются по отдельности, потому что они не являются частями одной программы. Ответы: 1. FOR D = R TO S STEP H 1. Правильно, если переменные R, S, H ранее получили значения 2. FOR S = 2 – 6 2. неправильно, отсутствует ключевое слово ТО 3. FOR S = 4 TO 12 STEP 2 3. правильно 4. FOR S 12 TO 4 STEP 2 4. неправильно, цикл выполняться не будет, т. к. начальное значение параметра больше конечного, а шаг неотрицателен.
Операторы с неизвестным числом повторений DO…LOOP и WHILE…WEND Итерационные циклы делятся на 2 типа: цикл с предусловием и постусловием. В циклах с предусловием осуществляется проверка условия цикла, а потом, если оно истинно, выполняется тело цикла. НЕТ Условие ДА Тело цикла …
Оператор с неизвестным числом повторений WHILE…WEND Этот оператор позволяет сочетать свойства условного оператора и оператора цикла. WHILE <выражение> <тело цикла> WEND Принцип работы: После оператора WHILE описываются условия, при которых цикл выполняется. Ключевое слово WEND аналогично по своему назначению слову NEXT, т. е. является последней строкой цикла. Всякий раз, доходя до слова WEND, программа проверяет, выполняется ли условия, описанные оператором WHILE. • Если условия выполняются, то цикл повторяется. • Если условия не выполняются, то программа переходит к выполнению операторов, стоящих после слова WEND.
Оператор с неизвестным числом повторений WHILE…WEND Итерационные циклы делятся на 2 типа: цикл с предусловием и постусловием. В циклах с предусловием осуществляется проверка условия цикла, а потом, если оно истинно, выполняется тело цикла. НЕТ Условие ДА Тело цикла …
Примеры использования цикла с предусловием 1) 2) WHILE S < 10 PRINT S WEND Пояснение: пока S < 10, то значение S печатаем WHILE WORD$ <> “CLASS” INPUT «Введите пароль» ; WORD$ WEND PRINT «Правильно! Вы допущены к работе» Пояснение: пока введённый пароль не совпадёт со словом CLASS, выхода из цикла нет
Цикл с несколькими параметрами Бывает, что при попытке выполнить задание с помощью оператора цикла выясняется, что изменяется не одна, а две или три величины. В этом случае, если вы можете установить между ними зависимость, следует использовать следующие правила: 1. определить, какие же величины изменяются, и обозначить их буквами 2. назначить одну из этих величин независимым аргументом 3. определить закономерности, связующие изменяющиеся величины, и выразить эти величины через независимый аргумент 4. написать программу с оператором цикла, основным параметром которого будет независимый аргумент, а в командах тела цикла, на месте других изменяющихся величин, необходимо подставить их выражения через этот независимый аргумент. Пример
Пример. Программа, которая рисует две пирамиды индейцев майя –вид сверху.
Пример. Программа, которая рисует две пирамиды индейцев майя –вид сверху. CLS SCREEN 12 FOR X= 20 TO 220 STEP 10 LINE (X, X) – (220 – X, 220 – X), 15, B NEXT X END
Вложенные циклы В предыдущем разделе мы рассматривали случаи, когда в цикле изменяются несколько величин, но их можно выразить друг через друга. Сейчас мы рассмотрим ситуацию, когда изменяются несколько независимых величин. FOR <переменная 1> = <выр1> TO <выр2> [STEP <выр3>] FOR <переменная 2> = <выр4> TO <выр5> [STEP <выр6>] <тело цикла> NEXT <переменная 2> NEXT <переменная 1> !!! В окончании вложенных циклов можно указывать только один оператор NEXT с перечислением параметров Пример
Пример. Заполнить экран светофорными кругами.
Пример. Заполнить экран светофорными кругами. CLS SCREEN 12 FOR X = 0 TO 300 STEP 150 FOR Y = 0 TO 300 STEP 150 CIRCLE (100 + X, 100 + Y), 50, 4 PAINT (100 + X, 100 + Y), 4 CIRCLE (100 + X, 100 + Y), 35, 14 PAINT (100 + X, 100 + Y), 14 CIRCLE (100 + X, 100 + Y), 20, 2 PAINT (100 + X, 100 + Y), 2 NEXT Y, Х END !!! В окончании вложенных циклов можно указывать только один оператор NEXT с перечислением параметров.
Случайные числа Для создания какой-либо последовательности случайных чисел служат показания встроенного в компьютер таймера. Чтобы инициировать процесс генерации последовательности случайных чисел используется оператор RANDOMIZE TIMER Затем, чтобы получить из этой последовательности какое-либо значение, мы должны использовать оператор RND (N), который выдаёт случайное число от 0 до 1. Минимальное полученное число 0, 0000001, а максимальное 0, 9999999. В качестве N может служить любое целое или действительное число. Этот параметр также влияет на выбор компьютером случайных чисел. Пример: RANDOMIZE TIMER X = RND(1) PRINT X END Пример
Случайные числа Используется оператор RND, который выдаёт случайное число от 0 до 1. Минимальное полученное число 0, 0000001, а максимальное 0, 9999999. Пример: CLS X = RND PRINT X END Пример
Программа «ЗВЁЗДНОЕ НЕБО» Изобразим звёздное небо 500 белыми (разноцветными) точками на чёрном фоне. Координаты каждой точки должны быть в пределах по Х от 0 до 640 и по У от 0 до 480.
Программа «ЗВЁЗДНОЕ НЕБО» БЕЛЫЕ ЗВЕЗДЫ CLS SCREEN 12 FOR N = 1 TO 500 X= RND * 640 Y = RND * 480 PSET (X, Y), 15 NEXT N END !!! Число точек на небе можно изменить, например, вместо 500 поставьте 10000. РАЗНОЦВЕТНЫЕ ЗВЕЗДЫ CLS SCREEN 12 FOR N = 1 TO 500 X = RND * 640 Y = RND * 480 C = RND * 15 PSET (X, Y), C NEXT N END
Программа «ЗВЁЗДНОЕ НЕБО» CLS SCREEN 9 RANDOMIZE TIMER FOR N = 1 TO 500 X= INT (RND (1) * 641) Y = INT (RND (1) * 351) PSET (X, Y), 15 NEXT N END
Программа «РАЗНОЦВЕТНЫЕ КРУГИ» С ЗАДАННЫМ РАДИУСОМ CLS SCREEN 12 FOR N = 1 TO 500 X= RND * 640 Y = RND * 480 C = RND * 15 CIRCLE (X, Y), 25, C NEXT N END С ИЗМЕНЯЮЩИМСЯ РАДИУСОМ CLS SCREEN 12 FOR N = 1 TO 500 X = RND * 640 Y = RND * 480 C = RND * 15 R= RND * 100 CIRCLE (X, Y), R, C NEXT N END
Программа «РАЗНОЦВЕТНЫЕ ЛИНИИ» ОТРЕЗКИ, ПРЯМОУГОЛЬНИКИ, ЗАКРАШЕННЫЕ ПРЯМОУГОЛЬНИКИ CLS SCREEN 12 FOR N = 1 TO 500 X 1= RND * 640 Y 1 = RND * 480 X 2= RND * 640 Y 2 = RND * 480 С = RND * 15 LINE (X 1, Y 1)-(X 2, Y 2), C или LINE (X 1, Y 1)-(X 2, Y 2), C , BF NEXT N END Линии, идущие из центра экрана ( «взрыв» ) LINE (320, 240)-(X 2, Y 2), C Линии, идущие из угла экрана LINE (0, 0)-(X 2, Y 2), C
Программа «РАЗБИВКА ЭКРАНА на 4 четверти» CLS SCREEN 12 LINE (320, 0)-(320, 480) LINE (0, 240)-(640, 240) FOR N = 1 TO 5000 X 1= RND * 320 Y 1 = RND * 240 X 2= RND * 320+320 Y 2 = RND * 240 X 3= RND * 320 Y 3 = RND * 240+240 X 4= RND * 320+320 Y 4 = RND * 240+240 С = RND * 15 …. . NEXT N END Задание 1 Сделать в каждой четверти свой рисунок (круги, звездное небо, линии из центра четверти, прямоугольники). Задание 2 Сделать в каждой четверти линии, идущие из углов экрана.
Программа «РАЗБИВКА ЭКРАНА на 4 четверти» CLS SCREEN 12 LINE (320, 0)-(320, 480) LINE (0, 240)-(640, 240) FOR N = 1 TO 500 X 1= RND * 320 Y 1 = RND * 240 С = RND * 15 PSET (X 1, Y 1), C X 2= RND * 320+320 Y 2 = RND * 240 LINE (640/4*3, 480/4)-(X 2, Y 2), C X 3= RND * 320 Y 3 = RND * 240+240 LINE (0, 480)-(X 3, Y 3), C, BF X 4= RND * 3220 Y 4 = RND * 240+240 R = RND * 20 CIRCLE (X 4+20, Y 4+20), R, C NEXT N END
Программа «РАЗБИВКА ЭКРАНА на 4 четверти» CLS SCREEN 12 LINE (320, 0)-(320, 480) LINE (0, 240)-(640, 240) FOR N = 1 TO 500 X 1= RND * 320 Y 1 = RND * 240 С = RND * 15 PSET (X 1, Y 1), C X 2= RND * 320+320 Y 2 = RND * 240 LINE (640/4*3, 480/4)-(X 2, Y 2), C X 3= RND * 320 Y 3 = RND * 240+240 LINE (0, 480)-(X 3, Y 3), C, BF X 4= RND * 3220 Y 4 = RND * 240+240 R = RND * 20 CIRCLE (X 4+20, Y 4+20), R, C NEXT N END
Программа «РАЗБИВКА ЭКРАНА на 4 четверти»
Построение графиков функции Графики строятся по точками, а функция для построения задаётся компьютеру оператором DEF FN имя_функции (параметр_функции) = функция Например, DEF FNY(X) = SIN(X) Кроме того, координатная сетка задаётся следующими операторами LINE (0, 175) — (640, 175), 15 LINE (320, 0) — (320, 350), 15 Пример ‘ось абсцисс ‘ось ординат
Программа построения графика Y(X) = SIN(X) CLS SCREEN 9 LINE (0, 175) — (640, 175), 15 LINE (320, 0) — (320, 350), 15 DEF FNY(X) = SIN(X) FOR X =0 TO 640 Y = 175 – 30 * FNY ((X – 320) / 30) PSET (X, Y), 15 NEXT X END Достаточно сложное выражение для У связано с переносом начала координат в центр экрана. А вот число 30 в данном случае произвольно – это коэффициент растяжения
Символьные (или строковые) переменные — переменные, значениями которых являются строки символов, заключённых в кавычки. Строковые операции и функции
ASC(X$) - функция, переводит первый символ строки в ASCII-код Пример: ASC(“A”) = 65, ASC(“BIT”) = 66 CHR$(X) - функция, переводит ASCII-код X в символ Пример: CHR$(67) = “C” CHR$(68) = “D” HEX$(X) - функция, переводит число X в шестнадцатеричную запись цифр (не в число!). Пример: HEX$(20) = “ 14” HEX$(35) = “ 23” OCT$(X) – функция, переводит число в восьмеричную запись цифр (не в число!). Пример: b = 10 OCT$(b) = “ 12” OCT$(25) = “ 31” INKEY$ - возвращает символ, считанный с клавиатуры Операция конкатенации строк: “BO” + “ДА” = “ВОДА”
INSTR(N, X$, Y$) – функция, выполняет в строке X$ поиск подстроки Y$ с позиции N(необязательный параметр). Пример: a$ = “клавиатура”, b$ = “тур” INSTR (a$, b$) = 7 INSTR (4, a$, “a”) = 6 LCASE$(X$) – преобразует все буквы строки X$ в строчные Пример: a$ = “Бим - Бом” LCASE$(a$) = “бим - бом” UCASE$(X$) – преобразует все буквы строки X$ в прописные Пример: a$ = “Бим - Бом” UCASE$(a$) = “БИМ - БОМ” LEFT$(X$, N) – функция, выделяет N левых символов строки X$ Пример: a$ = “паровоз” LEFT$(a$, 3) = “пар” LEFT$(“сокол”, 3) = “сок”
RIGHT$(X$, N) – функция, выделяет N правых символов строки X$ Пример: a$ = “паровоз” LEFT$(a$, 3) = “воз” LEFT$(“вода”, 2) = “да” LEN(X$) – функция, возвращает длину строки X$ Пример: a$ = “дискета” LEN(a$) = 7 LEN(“экран”) = 5 MID$(X$, Y, Z) – функция, выделяет часть строки X$ из Z символов c позиции Y, если Z не указано, то выделяются все оставшиеся символы. Пример: a$ = “сокол” MID$(a$, 2, 3) = “око” MID$(“сокол”, 3) = “кол” VAL(X$) – функция, переводит строку X$ в десятичное число. Символьная переменная должна иметь правильное представление десятичного числа. Пример: a$ = “ 15 bit” VAL(a$) = 15 VAL(“ABC 5”) = 0
MID$(X$, Y, Z, )=F$ - оператор, который заменяет Z символов с позиции Y в строке X$ символами строки F$. Пример: a$ = “класс” MID$(a$, 2, 3) = “оло” A$ = “колос” SPACE$(X) – функция, возвращает строку пробелов. Пример: SPACE$(5) = “ “ (пять пробелов) STR$(X) – функция переводит число в строку. Пример: b = 10 STR$(b) = “ 10” (с лидирующим пробелом) STRING$(N, K или X$) - функция возвращает строку длины N из символов с кодом К или первым символом заданной строки X$ Пример: STRING$(3, A) = “AAA” STRING$(5, 65) = “AAAAA
Однобайтовая кодировка символов кодами ASCII (American Standard Code for Information Interchange – Американский стандартный код обмена информацией) позволяет кодировать 256 различных символов и команд. Наиболее часто требуемые коды при решении задач: • От 48 до 57 — коды цифр от 0 до 9 • От 65 до 90 — прописные буквы латиницы (А – 65, В – 66 и т. д. ) • От 97 до 122 — строчные буквы латиницы (а – 97, b – 98 и т. д. ) • От 128 до 159 — прописные буквы кириллицы (А – 128, Б – 129 и т. д. ) • От 160 до 175 — строчные буквы кириллицы • Клавиши Tab — 9, Esc — 27, пробел — 32, точка — 46, запятая — 44, вопросительный знак — 63, восклицательный знак — 33 и т. д.
Массивы Массив – это набор однотипных данных (чисел, символов, слов), которые хранятся в одном месте памяти компьютера в упорядоченных по номерам ячейках. Массив имеет: - Имя - Тип (%- целочисленный, $ - символьный, без знака – вещественный) - Размерность – количество элементов - Индекс – номер элемента Каждый элемент массива в общем виде описывается как В(I), где В - имя массива I – номер или индекс элемента массива
Если адрес элемента массива определяется одним индексом, то такой массив называется одномерным. Массивы бывают и многомерными. Примеры: Одномерный массив (координата точки на числовой прямой) Двумерный массив (координата точки на плоскости) Трёхмерный массив (координата точки в пространстве)
Перед тем как начать работать с массивом, нужно зарезервировать для него место в памяти. Для этого имеется оператор DIM (от английского слова dimention –объём, величина, размер, измерить) Пример. DIM А(10) Обычно говорят, что зарезервировано место под 10 элементов массива А, однако в самом деле резервируется 11, т. к. нумерация ячеек начинается с 0. Но так как нам привычнее начинать считать с 1, то первая ( «нулевая» ) ячейка простонапросто не используется. Способы заполнения одномерных массивов С клавиатуры INPUT “N =“, N DIM M(N) FOR I = 1 TO N INPUT M(I) NEXT I Заранее известными значениями DATA 23, -13, 9. 8, 77, 45 DIM M(5) FOR I = 1 TO 5 READ M(I) NEXT I При помощи стандартных функций RANDOMIZE TIMER INPUT «N=» ; N DIM M(N) FOR I = 1 TO N M(I) = INT(RND(1)*100) NEXT I Непосредственное присваивание значений элементам DIM D(3) D(1)=12. 6 D(2)=5. 96 D(3)=98
ØПроцедуры – функции и процедуры
Процедурой называется часть программы, реализующая вспомогательный алгоритм и допускающая многократное обращение к ней из различных мест основной программы. процедура-функция FUNCTION…END FUNCTION Синтаксис: FUNCTION имя [список ][STATIC] [операторы] имя = выражение [операторы] END FUNCTION Параметры: -имя объявляет имя функции -список – это список разделённых запятой аргументов – формальных параметров, которым из основной программы передаются и присваиваются значения аргументов – фактических параметров - атрибут STATIC указывает, что переменные являются локальными в функции и сохраняются между её вызовами. -Запись имя = выражение возвращает значение функции, присвоенное её имени
Процедуры Оператор SUB…END SUB выделяет начало и конец процедуры. Синтаксис: SUB имя [ (список) ] [STATIC] [ операторы ] [EXIT SUB] [ операторы ] END SUB - имя – глобальное имя процедуры, ограниченное длиной в 40 символов - список – список, разделённых запятыми имён переменных, передаваемых процедуре при её вызове. В операторе предусмотрен альтернативный выход с помощью EXIT SUB. В отличие от процедуры-функции FUNCTION имя процедуры SUB не может быть использовано в выражениях. Процедуры могут быть рекурсивными, т. е. могут вызывать сами себя. Вызов процедуры SUB…END SUB выполняется оператором CALL. Синтаксис 1: CALL имя процедуры [(список аргументов)] Синтаксис 2: имя процедуры [список аргументов]
199 Операторы- бейсик_ред1_изм2011-12.ppt