Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект_бакалавры_информатика _вариант для печати.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.96 Mб
Скачать

Контрольные вопросы для самоподготовки студентов

  1. Чем характеризуется линейный алгоритм?

  2. Как можно определить начальные значения переменных?

  3. Каков приоритет выполнения операций в арифметическом выражении?

  4. Какие типы данных (констант и переменных) можно использовать в программах на QB?

  5. В чем заключается отличие переменной от константы?

  6. Объяснить назначение оператора CLS.

  7. Какие стандартные функции используются в QB?

  8. Каковы особенности выполнения оператора присваивания?

  9. Как объявить тип переменной в программе?

  10. Как объявить в программе именованную константу?

  11. Объяснить назначение операторов READ, DATA, RESTORE?

  12. Какой оператор используется в программе для вывода результатов на экран?

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

  1. Информатика. Базовый курс. 2-е издание/Под. Ред. С.В. Симоновича.-СПб.:Питер, 2008.-640 с.

  2. Информатика. Моделирование.- Волгоград: НОУ ВПО ВНБ, 2009.- Саратов: Издательство «Вузовское образование», 2013.- 143 с. (электронный ресурс) режим доступа http://www.iprgookshop.ru/11320.html

  3. Практикум по курсу “Алгоритмизация и программирование”. Часть 1: Учебное пособие / А.А. Андрианова, Т.М. Мухтарова. - Казань: Казанский государственный университет, 2008. – 95 с. (электронный ресурс) режим доступа http://window.edu.ru/resource/951/79951/files/Programming1.pdf

  4. Основы алгоритмизации и программирования: учеб. пособие / Т.А. Жданова, Ю.С. Бузыкова. – Хабаровск: Изд-во Тихоокеан. гос.ун-та, 2011. – 56 с. (электронный ресурс) режим доступа http://window.edu.ru/resource/402/77402/files/alg_prog.pdf

  5. Аляев Ю.А., Козлов О.А. Алгоритмизация и языки программирования Pascal, C++, VisualBasic. – М.: Финансы и статистика, 2002. – 320 с.

  6. Создание линейных алгоритмов и программ на языке QBASIC: Методические указания для прак. занятий/Сост. Г.А. Фролова. - Егорьевск: - ЕТИ ФГБОУ ВПО МГТУ "СТАНКИН", 2013.-9 с. (электрон. библиотека ЕТИ)

Лекция № 7 Тема «Программирование на языке qbasic»

План лекции

  1. Средства программирования разветвляющихся алгоритмов.

  2. Оператор безусловного перехода.

  3. Понятие логического выражения.

  4. Условный оператор IF … THEN.

  5. Оператор множественного выбора SELECTCASE.

  6. Виды циклических алгоритмических структур.

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

  8. Вложенные циклы.

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

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

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

Рис. 10 Полная исокращенная разветвляющаяся структура

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

Оператор безусловного перехода GOTOn

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

GOTOn

где GOTO - имя оператора (переводится – «перейти к...»;

n - номер строки программы или метка.

Пример 1.

30 x=x+1

40 y=(x+2)*2

50 GOTO 30

Пример 2.

40 x=3*A

50 GOTO70

60 y=2*x

70 z=5*x

Пример 3.

INPUT “введитепароль”, password

IF password <> ”ABC” THEN GOTO metka1

PRINT “Добро пожаловать”

GOTOmetka2

metka1:

PRINT “Вы не можете работать с данной программой”

END

metka2:

……

Понятие логического выражения

Логическое выражение, в отличие от арифметического, содержит операции отношения (=, <, >, <=, >=, <>), а также еще пять логических операций, записанных далее в порядке убывания приоритета: отрицание - NOT, логическое умножение (логическое “И”) - AND, логическое сложение (логическое “ИЛИ”) - OR, исключающее “ИЛИ” - XOR, эквивалентность - EQV.

Результатом выполнения логического выражения может быть “Истина” (не 0) или “Ложь” (0). Например, NOT 7<9 всегда принимает значение “Ложь”, что соответствует значению 0, а 4>3 AND 7<9 принимает значение “Истина”, что соответствует -1.

В табл. 7 приведено описание логических операций. Здесь T (true) - “Истина”, а F (false) “Ложь”.

Таблица 7

Значения операндов

NOT x

x AND y

x OR y

x XOR y

х EQV y

X

Y

T

T

F

T

T

F

T

T

F

F

F

T

T

F

F

T

T

F

T

T

F

F

F

T

F

F

F

T

Порядок вычисления логического выражения:

  • вычисляются значения арифметических выражений;

  • вычисляются значения операций отношения;

  • вычисляются операторы NOT, затем AND и после – OR, XOR, EQV.

Пример 4. Вычислить значение логического выражения при X=3 и Y=-2

(X<7) AND (X -Y< X^2) OR (ABS(Y) >3)

(3<7) AND (3-(-2)<3*3) OR (ABS(-2)>3)

(3<7) AND (5<9) OR (2>3)

1 AND 1 OR 0

1 OR 0 = ?

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

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

Однострочная форма записи

IFвыражениеTHEN оператор 1

где IF, THENзарезервированные слова языка, означающие соответственно ЕСЛИ, ТО;

выражениеможет быть логическим или арифметическим. Ненулевое значение арифметического выражения интерпретируется как «Истина», а нулевое – как «Ложь».

Порядок выполнения условного оператора поясняется рис.11.

Рис. 11 Схема сокращенного условного оператора

Например,

IFage< 15 THENPRINT “Ребенок”

IFd-4 THENbeta=0.002

IFlambda<1 OR beta=3 THENPRINTlambda, beta

IF i THEN epsilon=0.0001

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

Пример

IFвыражениеTHEN

операторы

END IF

Порядок выполнения оператора следующий: если значение выражения«Истина», то выполняются операторы следующей строки; если значение выражения «Ложь», то управление передается оператору, следующему после ENDIF. Слово ENDIF записывается через пробел.

Например,

IF x>0 THEN

y=SQR(x)

z=1+y

p=4

END IF

Однострочная форма оператора IF … THEN … ELSE

IF выражение THEN оператор 1 ELSE оператор 2

где ELSE – зарезервированное слово, означающее ИНАЧЕ.

Порядок выполнения условного оператора поясняется рис.12.

Рис.12 Схема полного условного оператора

Если выражение принимает значение «Истина», то выполняется оператор 1; если же оно принимает значение «Ложь», то выполняется оператор 2. В любом случае далее выполняется оператор, стоящий в программе непосредственно за условным оператором. Однострочная форма оператора IF … THEN … ELSE в программе записывается в одну строку.

Например,

IF angle <=0 THEN PRINT “острыйугол” ELSE PRINT “тупойугол”

Многострочная форма записи оператора IF … THEN … ELSE

IFвыражениеTHEN

оператор 1

ELSE

оператор 2

ENDIF

Например,

IF age<=7 THEN

PRINT “Дошкольник”

ELSE

PRINT “Школьник или взрослый”

ENDIF

Пример вложения операторов (IF …THEN … ELSE)

IF age >7 THEN

IF age <=17 THEN

PRINT “школьник”

ELSE

PRINT “взрослый”

END IF

ELSE

PRINT “дошкольник”

ENDIF

Эквивалент вложенных операторов – оператор IF … THEN … ELSEIF

IF выражение 1 THEN

блок операторов 1

ELSEIFвыражение 2 THEN

блок операторов 2

ELSEIFвыражение 3 THEN

блок операторов 3

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

ELSE ‘ необязательный элемент конструкции

блок операторов n

ENDIF

Порядок выполнения оператора следующий: если значение выражения 1 «Истина» - выполняется блок операторов 1 и далее управление передается оператору следующему после ENDIF. Если выражение 1 «Ложь», то проверяется значение следующего выражения и так далее. После выполнения любого блока операторов управление всегда передается оператору, следующему после ENDIF. Конструкций типа ELSEIFможет быть несколько. Блок операторов n, следующий за ELSE, выполняется в том случае, если последовательные проверки всех выражений выше дали значение «Ложь». Конструкции ELSEIF и ELSE могут отсутствовать. Особенностью оператора является то, что слово THEN должно быть последним в строке, а слово ELSE – единственным. Слово ELSEIFзаписывается слитно, а слово ENDIF – через пробел.

Например,

IF age <7 THEN

PRINT “дошкольник”

ELSEIF age <17 THEN

PRINT “школьник”

ELSEIF age<23 THEN

PRINT “студент”

ELSEIF age <55 THEN

PRINT “специалист”

ELSE

PRINT “пенсионер”

END IF

INPUT C$

IF C$ >=“A” AND C$ <= “Z” THEN

PRINT “ ПРОПИСНАЯБУКВА “ ; C$

ELSEIF C$ >= “a” AND C$ <= “z”

PRINT “ СТРОЧНАЯБУКВА “; C$

ELSEIF C$ >= “0” AND C$ <= “9”

PRINT “ЦИФРА”; C$

ELSE

PRINT “ СПЕЦИАЛЬНЫЙ СИМВОЛ”; C$

ENDIF

Оператор множественного выбора SELECT CASE

Оператор SELECT CASE позволяет осуществлять разветвление по любому фиксированному числу ветвей. Он имеет следующий формат:

SELECT CASE выражение

CASE условие 1

блок операторов 1

CASE условие 2

блок операторов 2

…………….

CASEELSE ‘ необязательный элемент конструкции

блок операторов n

ENDSELECT

здесь: выражение – арифметическое или текстовое выражение;

условие - логическое выражение.

Логическое выражение может иметь одну из трех форм:

1)выражение, задающее диапазон значений

CASE выражение TO выражение;

2) отношение

CASE IS операция отношения выражение;

3) перечень констант

CASE константа 1, константа 2.

Например, строки CASEмогут содержать следующие условия:

CASE IS>8 ‘ проверка на превышение значения 8;

CASE X^3 ‘ проверка на равенство значению выражения;

CASE 17 TO 25 ‘ проверка на принадлежность отрезку [17;25];

CASE 1 TO 4, 9 TO 20, 11, 56, IS>Min.

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

Порядок выполнения оператора SELECT CASE следующий: если значение выражения удовлетворяет условию после конструкции CASE, то выполняется блок операторов, а затем управление передается оператору, следующему после конструкции END SELECT. В противном случае проверяется следующее условие и так далее. Блок операторов n, расположенный после CASE ELSE выполняется в том случае, если последовательные проверки все условий выше дали значение “Ложь».

Оператор имеет следующие особенности: условие 1, условие 2 и так далее должны быть последними в строке, а конструкция CASEELSE должна быть единственной в строке.

REM Пример использования оператора SELECT CASE

INPUTV

SELECT CASE V

CASE 0

PRINT “ НУЛЬ”; V

CASE 1, 3, 5, 7, 9

PRINT “ НЕЧЕТНОЕЧИСЛО”; V

CASE 2, 4, 6, 8

PRINT “ ЧЕТНОЕЧИСЛО”; V

CASE IS <0

PRINT “ ОТРИЦАТЕЛЬНОЕЧИСЛО”; V

CASE IS>9

PRINT “ СЛИШКОМ БОЛЬШОЕ ЧИСЛО”; V

CASE ELSE

PRINT “ НЕЦЕЛОЕЧИСЛО”; V

END SELECT

'КОНЕЦ ПРОГРАММЫ

END

Виды циклических алгоритмических структур

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

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

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

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

Рис. 13Блок-схемы циклических алгоритмов: а – цикл-Пока; б – цикл-До; с - цикл с параметром

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

Программирование регулярной алгоритмической структуры на языке QB производится при помощи оператора FOR … ТО … NEXT, имеющего следующий формат:

FOR параметр=выражение1 TO выражение2 [STEP выражение3] блок_операторов

[EXITFOR] NEXT параметр 

где:параметр – управляющая переменная цикла;

выражение1, выражение2 – начальное и конечное значение управляющей переменной;

выражение3 - шаг изменения управляющей переменной. Шаг может быть как положительным, так и отрицательным. Если выражение3=1, то конструкцию STEPвыражение3 можно опустить;

блок_операторов(тело цикла) – набор операторовповторяющегося вычислительного процесса;

EXITFORоператор, предназначенный для выхода из цикла до его завершения.

Логика выполнения оператора цикла с параметром

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

Если проверка выявила указанное противоречие, работа цикла будет немедленно прекращена. У параметра остается его начальное значение, и будут выполняться операторы, следующие за циклом.

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

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

REM Объявление переменных изадание

REMначальных значений переменных

DIM SUM as Single, P as Single, U as Integer

DIM NUM as Single

SUM=0: P=1

REM Началоцикла

FOR U=1 TO 5

PRINT “Введите “; U; “ число”

INPUTNUM

REMВычислениесуммы

SUM=SUM+NUM

REM Вычисление произведения

P=P*NUM

NEXTU

PRINT “Сумма чисел = “;SUM; “Произведение чисел = “;P

END

При выполнении этой программы управляющей переменной цикла U присваивается начальное значение 1. Затем выполняются операторы, составляющие тело цикла. Команда NEXT возвращает управление в начало цикла FOR. Значение U увеличивается на 1 при каждом новом выполнении цикла. Весь процесс повторяется 5 раз, затем значение переменной U становится равным 6, выполнение цикла заканчивается и программа передает управление оператору, следующему за NEXT.

Вложенные циклы

Иногда необходимо организовать цикл в цикле (так называемый вложенный цикл). В этом случае внешний и внутренний циклы не должны пересекаться, внутренние циклы должны целиком помещаться во внешних. Если вложены друг в друга два цикла FOR …NEXT, то они должны иметь различные управляющие переменные.

Например,

REM Программа выводит на экран таблицу Пифагора

PRINT “ТаблицаПифагора”

FOR x=1 TO 10

FOR y=1 TO 10

A=x*y

PRINT USING “###”; A

NEXT y

PRINT

NEXT x

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

Для организации циклов с неизвестным числом повторений (итерационных) используются операторы WHILE … WENDи DO … LOOP.

Оператор цикла с предусловием WHILE … WEND

Общий вид этого оператора:

WHILEусловие

тело_цикла

WEND

где: условие – логическое выражение;

тело_цикла – последовательность операторов.

Пока условие истинно, выполняются все операции тела цикла. Еcлиусловие - “ложь” - то управление передается на оператор, следующий за WEND.Особенностиработы оператора:

- можно использовать при неизвестном заранее количестве повторений;

- можно использовать, если закон изменения параметров выражается формулой;

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

Ниже показана программа на языке QB по вычислению количества первых n натуральных чисел, сумма которых не больше 20.

DIM SUM as Integer, N as Integer

SUM=0: N=0

WHILE SUM<=20

N=N+1

SUM=SUM+N

WEND

PRINT “количество таких чисел равно: “;N-1

END

Оператор условного цикла DO ... LOOP

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

Проверка вверху:

DO WHILE условие DO UNTIL условие

телоцикла телоцикла

[EXIT DO] [EXIT DO]

LOOP LOOP

Проверка внизу:

DO DO

тело цикла тело цикла

[EXIT DO] [EXIT DO]

LOOP WHILE условие LOOP UNTIL условие

где:условие – логическое выражение;

тело цикла – последовательность операторов.

Использование слова WHILE означает, что цикл будет выполняться до тех пор, пока условие будет иметь значение “истина“. При использовании слова UNTIL цикл выполняется только тогда, когда условие имеет значение “ложь”. При проверке вверху цикл может не выполниться ни разу. При проверке снизу цикл выполнится хотя бы один раз. Оператор EXIT DO может использоваться и при наличии конструкций WHILE и UNTIL для орга­низации досрочного выхода из цикла по некоторому дополнительному условию.

Для демонстрации работы оператора DO …LOOP приведена программа решения следующей задачи: Некто купил мешок сахара. И решил для себя: каждый раз брать из этого мешка ровно одну десятую часть его содержимого до тех пор, пока в мешке не останется меньше 30 кг сахара. Первоначально в мешке было 50 кг. Написать программу, которая выдавала бы номер обращения к мешку и количество оставшегося в мешке сахара в виде:

Номер: Остаток:

  1. 45

  2. 40,5

  3. 36,45

DIM massa as Single, k as Integer

massa=50: k=0

? “Номер:”, “Остаток:”

DO

k=k+1

massa=massa-massa/10

? k, massa

LOOP UNTIL massa<30