Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования «Тихоокеанский государственный университет» ИНФОРМАТИКА Методические указания и задания к выполнению контрольной работы № 1 для студентов заочного факультета Хабаровск Издательство ТОГУ 2010 УДК Информатика : методические указания и задания к выполнению контрольной работы № 1 для студентов заочного факультета / сост. Н. Д. Белова, Н. И. Шадрина. – Хабаровск : Изд-во Тихоокеан. гос. ун-та, 2010.– 45 с. Методические указания составлены на кафедре прикладной математики и информатики. В них представлены программа раздела, основные сведения, перечень рекомендуемой литературы и задания к контрольной работе для изучения студентами основ алгоритмизации и программирования на языке программирования Basic. Печатается в соответствии с решениями кафедры прикладной математики и информатики и методического совета факультета математического моделирования и процессов управления. Главный редактор Л. А. Суевалова Редактор Н. Г. Петряева Компьютерная верстка Н. Д. Беловой Подписано в печать 14.10.10. Формат 60 х 84 1/16. Бумага писчая. Гарнитура «Таймс». Печать цифровая. Усл. печ. л. 2,61 Тираж 490 экз. Заказ 1,98 Издательство Тихоокеанского государственного университета. 680035, Хабаровск, ул. Тихоокеанская, 136. Отдел оперативной полиграфии издательства Тихоокеанского государственного университета. 680035, Хабаровск, ул. Тихоокеанская, 136. © Тихоокеанский государственный университет, 2010 4 Общие положения В соответствии с учебным планом для студентов технических специальностей заочного факультета изучение курса «Информатики» предполагает выполнение контрольной работы по теме «Алгоритмизация и программирование». В методических указаниях даются рекомендации к выполнению контрольной работы по данной теме. Цель контрольной работы – получение практических навыков алгоритмизации и программирования. Контрольная работа содержит пять заданий. Номер варианта определяется по последней цифре номера зачетной книжки студента. При выполнении контрольной работы для каждого задания необходимо подобрать контрольный пример, начертить блок-схему, написать программу. При выполнении работы допускается оформление от руки без использования компьютера. Программа раздела информатики «Основы алгоритмизации и программирования» Тема 1. Основы алгоритмизации Понятие алгоритма. Основные свойства алгоритмов. Способы описания алгоритмов. Правила построения алгоритмов. Алгоритмизация линейных, разветвляющихся, циклических процессов. Тема 2. Программирование на алгоритмическом языке Basic. Алфавит языка. Простейшие конструкции языка. Понятие константы, переменной, функции. Правила записи выражений. Структура программы. Основные операторы языка Basic. Понятие массива. Операторы для работы с массивами. Основные сведения Понятие алгоритма Алгоритмом называется точный порядок действий, определяющий процесс перехода от исходных данных к искомому результату. Порядок действий считается алгоритмом в том случае, если он обладает следующими свойствами. 3 Определенность. Алгоритм должен быть однозначным, исключающим произвольное толкование правил и порядка их выполнения. Результативность. Алгоритм должен приводить к решению задачи за конечное число шагов. Массовость. Алгоритм разрабатывается в общем виде так, чтобы его можно было применять для класса задач, различающихся только исходными данными. Существуют разные способы описания алгоритмов – словесный, графический, операторный (программа на алгоритмическом языке). Графический способ описания алгоритма иначе называют блок-схемой. В блок-схемах используются графические символы (блоки), предписывающие выполнение определенных операций и связи между ними. В табл. 1 приведены наиболее часто употребляемые блоки. Таблица 1 Название блока Начало/Конец Вычисление Обозначение блока Выполняемая функция Начало/Конец алгоритма Вычисляемые действия Условие Проверка условия Ввод/Вывод Ввод/Вывод данных Модификация Циклический процесс Простейшие конструкции языка Basic К простейшим конструкциям языка Basic относятся константы, переменные, функции, выражения. 4 Для записи простейших конструкций и операторов используются: буквы латинского алфавита от A до Z (строчные и прописные); арабские цифры от 0 до 9; специальные знаки: + - * / : . , ; : “ ? = % < > / # ! $ & Буквы русского алфавита используются только для записи текстовых констант и комментариев к программе. Константы. В Basic используются константы целые, вещественные, строковые. Целые константы – это последовательность цифр, перед которой может стоять знак + или - Например, -567, +29, 29. Вещественные константы – это число, имеющее целую и дробную части. Допускаются основная и экспоненциальная формы записи вещественных констант. В основной форме записи с фиксированной точкой целая часть числа отделяется от дробной десятичной точкой, например, -1.012, 3.14159. В экспоненциальной форме записи с плавающей точкой число записывается в виде mEp, где m – мантисса (число в основной форме), Е – основание 10, р – порядок числа (целая константа, содержащая не более двух цифр), например, 2.4Е-05, -2,9Е+07. Чтобы перейти от экспоненциальной формы к основной, нужно m (мантиссу) умножить на 10 в степени р (порядок). Например, 2.4Е-5 = 2.4·10-5 = 0.000024, -2.9Е+07 = -2.9·107 = -29000000 Строковые константы – это набор любых символов длиной, не превышающей 255 символов. Строковая константа заключается в двойные кавычки. Например, “Аргумент”, “Группа - 123” Переменные. Переменные – это величины, значения которых изменяются в процессе выполнения программы. Имя переменной представляется комбинацией латинских букв и цифр, начинающейся обязательно с буквы. Например, SUM, a, B12, Max. 5 Различают простые переменные и переменные с индексом. Простая переменная определяется только именем. Переменная с индексом является элементом массива, определяется именем и индексами, которые задают местоположение элемента в массиве. Индексы записываются в скобках через запятую после имени переменной. Например, Х(10), А(5,6). Тип переменной может быть задан явно. В этом случае к имени переменной добавляется символ типа: % – целый тип; ! – вещественный тип; $ – строковый тип. Например: Z%, D%, A% – переменные целого типа; S!, P!, B! – переменные вещественного типа; F$, S$, G$ – переменные строкового типа. Если символ типа отсутствует, то переменная по умолчанию считается вещественной. Функции. При программировании часто бывает необходимо вычислить значение функции (например, логарифм числа, корень квадратный и т.п.). Вычисление функций осуществляется с помощью подпрограмм, которые заранее запрограммированы. Для обращения к подпрограмме (вычисления значения функции) необходимо указать имя функции и в круглых скобках аргумент. В табл. 2 приведены наиболее часто употребляемые функции. Таблица 2 Математическое Название функции обозначение функции Синус sin(x) Косинус cos(x) Тангенс tg(x) Арктангенс arctg(x) 6 Запись функции на языке Basic SIN(X) COS(X) TAN(X) ATN(X) Примечание Х – в радианах Х – в радианах Х – в радианах Вычисляется значение в интервале (-/2; +/2) Окончание таблицы 2 Название функции Логарифм натуральный Показательная Корень квадратный Абсолютное значение Целочисленная функция Отбрасывание дробной части Вычисление остатка Математическое обозначение функции Запись функции на языке Basic ln(x) LOG(X) ex х EXP(X) SQR(X) х ABS(X) х INT(X) FIX(X) a MOD b Генерирование случайного числа в интервале от 0 до 1 RND[(X)] Примечание X>0 Х0 Наибольшее целое, не превосходящее Х Отбрасывает дробную часть Возвращает целый остаток от деления a на b Аргумент может быть опущен Примечание. Аргумент тригонометрической функции задается в радианах. Для перевода значения, заданного в градусах используется формула знач. в рад. = знач. в град.·π/180 Выражения. Различают выражения арифметические, логические, строковые. Арифметическое выражение – это выражение, записанное с помощью констант, переменных, функций, знаков арифметических операций и круглых скобок. Результатом вычисления арифметического выражения является числовая константа. Перечислим арифметические операции: + – сложение; - – вычитание * – умножение; / – деление; \ – целочисленное деление ^ – возведение в степень. 7 Порядок выполнения операций задается установленным приоритетом: вычисление функций; возведение в степень; умножение и деление; сложение и вычитание. Операции одного приоритета (умножение и деление; сложение и вычитание) выполняются слева направо в порядке следования. Для задания нужной последовательности выполнения операций используются круглые скобки. Примеры записи арифметических выражений приведены в табл. 3. Таблица 3 Математическая запись Запись на языке Basic ab 2c a*b/(2*c) 3*SIN(X^3)^2 3sin2x3 e x 2 1 ln x 3 5 tg 3y 3 a 2 x c 3 (EXP(-X^2+1)+LOG(ABS(X^3-5)))/ 5 (TAN(SQR(3*Y))+(A^2-X)^(1/3))+C^(3/5) Логическое выражение служит для установления отношения между двумя числовыми или строковыми значениями. Результатом вычисления логического выражения является значение «истина» (И) или «ложь» (Л). Для записи логического выражения могут использоваться операции отношения и логические операции. Операции отношения: Логические операции: = – равно; NOT – отрицание; <> – не равно; AND – логическое умножение < – меньше; (логическое И); > – больше; OR – логическое сложение (ло- <= – меньше или равно; гическое ИЛИ); >= – больше или равно; EQV – эквивалентность; Порядок выполнения операций задается установленным приоритетом операций: операции отношения (выполняются слева направо в порядке следо- 8 вания), NOT, AND, OR, EQV. Для задания нужной последовательности выполнения операций используются круглые скобки. Значения истинности логических операций приведены в табл. 4. А В NOT А А AND В А OR В Таблица 4 А EQV В И И Л И И И И Л Л Л И Л Л И И Л И Л Л Л И Л Л И Примеры записи логических выражений приведены в табл. 5. Математическая запись Таблица 5 Запись на языке Basic ab a >= b -5 < x 4 x > -5 AND x <= 4 x -3 или x > 7 x <= -3 OR x > 7 Строковое выражение состоит из строковых констант, строковых переменных и строковых функций. Результатом вычисления строкового выражения является строка символов. Основные операторы языка Basic Структура программы Программа представляет собой последовательность операторных строк. Операторная строка содержит один или несколько операторов. Между операторами одной строки ставится разделительный знак «:» (двоеточие). Операторная строка может иметь номер, который служит меткой операторной строки и используется для ссылки при передачи управления в программе. Программа может заканчиваться любым оператором. При явном указании на конец вычислений последним оператором программы должен быть оператор END. В программе различают выполняемые и невыполняемые операторы. 9 Выполняемые операторы реализуют действия, предусмотренные алгоритмом решения задачи. Невыполняемые операторы описывают свойства данных, комментируют текст программы. Невыполняемые операторы могут располагаться в любом месте программы до оператора END. При описании операторов в квадратных скобках [ ] будем записывать необязательные параметры, а в фигурных { } – альтернативные параметры. Оператор - комментарий Оператор – комментарий предназначен для пояснений к программе. Формат оператора: REM текст где REM – ключевое слово; текст – текст комментария, который может включать набор любых символов. Ключевое слово REM можно заменить символом «’» (апостроф). Оператор – комментарий должен быть единственным в операторной строке, либо последним. Например: REM Задание 1 ’ Описание массивов в программе Оператор присваивания Оператор присваивания служит для вычисления значения выражения и присваивания этого значения переменной. Формат оператора: f=a где f – имя переменной; а – выражение. При записи оператора необходимо, чтобы имя переменной и выражение были одного типа, например, оба числовые или оба строковые. Например: Y = 2.236 10 Z= COS(2*X^3) – EXP(–X+3) F$ = ”Фамилия” Операторы ввода Операторы ввода используются для ввода значений переменных. Ввод значений переменных можно осуществить двумя способами: из блока данных и в диалоговом режиме. Для ввода данных из блока данных используется операторы READ и DATA. Формат операторов: READ список переменных DATA список констант где READ, DATA ключевые слова; список переменных – имена переменных, перечисляемые через запятую; список констант – числовые или строковые константы, перечисляемые через запятую. Строковая константа заключается в кавычки, если она начинается со значащих пробелов или заканчивается ими, а так же если содержит запятые или двоеточия. Операторы READ и DATA не обязательно должны быть парными. Например, двум операторам READ может соответствовать один оператор DATA и наоборот. Перед выполнением программы просматриваются все операторы DATA в порядке следования в программе и формируется единый блок данных. Если в программе встречается оператор READ, то считывается текущее значение констант из блока данных в переменную и запоминается положение последнего считанного данного с помощью указателя позиции. Следующий оператор READ начинает выбирать данные с той позиции, которая была отмечена указателем позиции. Количество переменных в операторе READ должно быть не больше количества констант в операторе DATA. Неиспользованные константы 11 из блока данных игнорируются. Но если блок данных исчерпан, то при попытке продолжить чтение выдается сообщение об ошибке. Можно возвратить указатель позиции в начало блока данных с помощью оператора RESTORE. Первый оператор READ, следующий за оператором RESTORE будет считывать первое значение из блока данных. Оператор DATA относится к невыполняемым операторам. Например: DATA –3.2, 12.3, 125 DATA Аргумент, 3.14 READ А, В, С, F$, P После выполнения приведенных операторов переменные получат значения: А = -3.2 В = 12.3 С = 125 F$= “Аргумент” P = 3.14 DATA 41, -12, 5, 32 READ А, В, С RESTORE READ X, Y, Z, F После выполнения приведенных операторов переменные примут значения: А = 41 В = -12 С= 5 X = 41 Y = -12 Z=5 F = 32 При диалоговом режиме ввода данные вводятся с клавиатуры непосредственно при выполнении программы. Формат оператора: INPUT [“Сообщение”] {,|;} список переменных где INPUT ключевое слово; Сообщение – строковая константа. Сообщение используется в качестве подсказки о том, какие данные и в каком порядке следует ввести пользователю с клавиатуры. список переменных – имена переменных, перечисленных через запятую, значения которых предполагается вводить с клавиатуры. 12 При выполнении оператора INPUT на экран выводится сообщение или знак “?” (при отсутствии сообщения в операторе) и выполнение программы приостанавливается. Пользователь должен с клавиатуры ввести через запятую значения переменных, указанных в списке переменных. При вводе значений строковая константа заключается в кавычки, если она начинается со значащих пробелов или заканчивается ими, а также, если содержит запятые или двоеточия. Если сообщение отделяется от списка переменных точкой с запятой, то на экран выводится знак “?”, если – запятой, то знак “?” не выводится на экран. Например: INPUT ”Введите значения X, Y, Z”, Х, Y, Z После выполнения этого оператора на экране появится сообщение: Введите значения X, Y, Z и выполнение программы приостанавливается. Пользователь с клавиатуры должен ввести значения X, Y, Z через запятую. После окончания ввода нажать клавишу Enter. Оператор вывода Оператор вывода служит для вывода значений на экран монитора. Формат оператора: PRINT список вывода где PRINT – ключевое слово; список вывода – константы, переменные, выражения, функции. Вывод данных можно организовать в двух форматах – зонном и компактном. При зонном формате каждое значение выводится в своей зоне. Каждая строка содержит 5 зон по 14 позиций каждая. Для вывода данных в зонном формате элементы списка отделяются друг от друга запятой. При выводе данных в компактном формате элементы списка отделяются друг от друга точкой с запятой, при этом числовые значения выводятся через пробел, а текстовые раз- 13 мещаются подряд. Необходимо помнить, что при выводе числовых данных первая позиция отводится под знак числа. Например: Х = 10.3 : Y= - 2.6 PRINT ” При Х= ”; Х, “Y=”;Y PRINT ” Х + Y = ”; Х +Y PRINT ” Х - Y = ”, Х -Y PRINT ” Х*Y = ”; Х * Y После выполнения выше приведенных операторов на экране будет выведено: При Х= 10.3 Y=-2.6 Х + Y = 7.7 Х-Y= 12.9 Х*Y =-26.78 Если в конце списка вывода оператора PRINT стоит запятая или точка с запятой, то следующий оператор PRINT выводит данные в той же строке, что и предыдущий. Например: G=1858: D$=”Год рождения - ” PRINT D$; PRINT G После выполнения выше приведенных операторов на экране будет выведено: Год рождения - 1858 Оператор безусловного перехода Оператор безусловного перехода используется для перехода к указанной операторной строке. Формат оператора: GOTO nc где GOTO – ключевое слово; 14 nc – метка операторной строки, на которую осуществляется переход. Оператор GOTO должен быть единственным в операторной строке, либо последним. Операторы условного перехода Оператор условного перехода изменяет последовательность выполнения операторов в зависимости от значения проверяемого условия. Формат оператора: IF условие THEN оператор [ELSE оператор] где IF, THEN, ELSE – ключевые слова; условие – логическое выражение; оператор – один или группа операторов, разделенных символом «:» (двоеточие) Данный оператор работает следующим образом. Если логическое выражение принимает значение «истина», то выполняется оператор, следующий за THEN, затем управление передается следующей операторной строке. Если логическое выражение принимает значение «ложь», то выполняется оператор, следующий за оператором ELSE. Если в операторе IF опущена ветвь ELSE, то при значении логического выражения «ложь» управление передается следующей операторной строке. Рассмотренный оператор условного перехода называется линейным. Следует заметить, что приведенный формат линейного оператора условного перехода не является единственным. Рассмотрим еще одну форму оператора условного перехода – блочный оператор условного перехода. Формат оператора: IF условие_1 THEN оператор_1 ELSEIF условие_2 THEN оператор_2 … ELSEIF условие_n-1 THEN 15 оператор_n-1 ELSE оператор_n END IF Данный оператор работает следующим образом. Проверяется условие_1, если условие_1принимает значение «истина», то выполняется оператор_1 и управление передается оператору, следующему за оператором END IF. Если условие_1принимает значение «ложь», то проверяется условие _2 и если оно принимает значение «истина», то выполняется оператор_2 и управление передается оператору, следующему за оператором END IF и т.д. Если в операторе все условия принимают значение «ложь», то выполняется оператор_n и управление передается оператору, следующему за оператором END IF. Пример: Составить программу вычисления Y. sin x, при x 0 Y= cos x, при 0 x 3.14 ln x, при х 3.14 Программа, использующая линейную форму условного оператора: INPUT "Введите значение х ", x IF x <= 0 THEN Y = SIN(x): GOTO 10 IF x >= 3.14 THEN Y = LOG(x) ELSE Y = COS(x) 10 PRINT "При х="; x; " Y="; Y END Программа, использующая блочную форму условного оператора: INPUT "Введите значение х ", x IF x <= 0 THEN Y = SIN(x) ELSEIF x >= 3.14 THEN Y = LOG(x) ELSE Y = COS(x) END IF PRINT "При х="; x; " Y="; Y END 16 Операторы цикла Для решения задач иногда бывает необходимо многократно выполнить вычисления по одним и тем же зависимостям при различных значениях входящих в них параметров. Такой вычислительный процесс называется циклическим, а многократно повторяющиеся участки этого процесса – циклами. Для реализации циклического процесса можно использовать операторы присваивания, безусловного перехода, условного перехода, но есть и специальные операторы. Операторы цикла WHILE … WEND Формат операторов: WHILE условие операторы рабочей части цикла WEND где WHILE,WEND - ключевые слова; условие – логическое выражение; операторы рабочей части цикла – многократно повторяющиеся зависимости. Данный оператор работает следующим образом. Проверяется условие, если оно принимает значение «истина», то выполняются операторы рабочей части цикла, затем опять осуществляется проверка условия. Операторы рабочей части цикла выполняются до тех пор пока условие принимает значение «истина». Если условие принимает значение «ложь», то управление передается оператору, следующему за оператором WEND. Пример: Составить программу для вычисления наибольшего целого положительного числа n, удовлетворяющего условию 3n3 – 690 n ≤ 7 REM Вычисление наибольшего целого числа n = 1 WHILE 3 * n ^ 3 - 690 * n <= 7 n = n + 1 WEND 17 PRINT "Наибольшее целое n ="; n - 1 END Операторы цикла FOR…NEXT Формат операторов: FOR i=in TO ik [STEP h] операторы рабочей части цикла NEXT где FOR, NEXT ключевые слова; i – переменная (параметр)цикла; in, ik – начальное и конечное значение переменной цикла i; h – шаг изменения переменной цикла; если h = 1, то его в операторе можно не указывать. операторы рабочей части цикла – многократно повторяющиеся зависимости. Данный оператор работает следующим образом. 1) вычисляются in, ik, h; 2) параметру цикла i присваивается начальное значение in; 3) если h > 0 и i ≤ ik или h < 0 и i ≥ ik, то выполняются операторы рабочей части цикла; 4) параметр цикла i изменяется на величину шага и повторяется пункт 3; 5) если в пункте 3 указанные условия не выполняются, то осуществляется выход из цикла и управление передается операторной строке, следующей за оператором NEXT. Пример: Вычислить, не выполняя в среде Basic, какое значение примет переменная F после выполнения программы: 10 20 30 40 50 60 18 F = 1 FOR i = 1 TO 7 STEP 2 F = F*i NEXT i PRINT F END Для удобства пояснений к выполняемым действиям операторы в программе пронумерованы. Запишем последовательность вычислений, производимых программой (в пояснениях номер соответствует выполняемой операторной строке). 10 F = 1 20 i = 1, 1 ≤ 7 30 F = 1*1 = 1 40 переход к операторной строке 20 20 i = 1+2 = 3, 3 ≤ 7 30 F = 1*3 = 3 40 переход к операторной строке 20 20 i = 3+2 = 5, 5 ≤ 7 30 F = 3*5 = 15 40 переход к операторной строке 20 20 i = 5+2 = 7, 7 ≤ 7 30 F = 15*7 = 105 40 переход к операторной строке 20 20 i = 7+2 = 9, 9 > 7 50 F = 105 60 конец Таким образом, после выполнения программы F = 105. Пример: Составить программу для вычисления и печати таблицы умножения на 12. REM Таблица умножения FOR i = 1 TO 12 p = i * 12 PRINT i; "*12 ="; p NEXT i END Операторы работы с массивами Понятие массива Массивом называется упорядоченная последовательность величин одного типа. Массив характеризуется именем, размером и размерностью. Имена массивов образуются по тем же правилам, что и имена простых переменных. Размер массива определяет число элементов в массиве. Размерность массива – это число индексов, определяющих местоположение элементов 19 в массиве. Индексы записываются после имени массива в скобках через запятую. Если размерность массива равна единице, то такой массив называют одномерным, если двум – двумерным. Примером одномерного массива является вектор а (а1, а2, …, аn). На языке Basic данный вектор (одномерный массив) записывается в виде А(1), А(2),…,A(n). Примером а 11 a А 21 a n1 двумерного массива может служить матрица а 12 ... a 1m a 22 ... a 2 m , .... a n 2 ... a nm каждый элемент которой имеет два индекса – номер строки и номер столбца. На языке Basic элементы данного двумерного массива (матрицы) записываются в виде А(1,1), А(1,2), …, А(n,m). Оператор описания массивов Оператор описания массивов служит для резервирования места в памяти компьютера для элементов массивов. Формат оператора: DIM список массивов где DIM - ключевое слово; список массивов – имена массивов с указанием верхних границ каждого индекса (нижние границы равны нулю). Например: DIM A(20), X(3,4), F$(10) В приведенном примере оператор резервирует место в памяти для одномерного массива А, состоящего из 21 элемента А(0), А(1), А(2), …, А(20), для двумерного массива Х, содержащего 4 строки и 5 столбцов (включая нулевые) 20 Х(0,0), Х(0,1), …, Х(3,4) и для строкового массива F$, содержащего 11 элементов F$(0), F$(1), …, F$(10). После описания массивов начальные значения для всех числовых массивов равны нулю, а для строковых – пустой строке. Ввод и вывод элементов массивов Для ввода и вывода элементов массива используются обычные операторы ввода и вывода INPUT, READ, DATA, PRINT. Как правило, ввод и вывод массивов осуществляется с помощью оператора цикла FOR … NEXT. Операторы ввода или вывода помещаются внутри циклического участка, и при каждом выполнении цикла производится ввод или вывод одного значения элемента массива. Рассмотрим ввод и вывод массива на примерах. Пример 1. Заданы элементы одномерного массива А(-3, 6, 7, -3, 4, -5, 0, -2, 1, 12 , -9, 9). 1. Записать операторы ввода элементов одномерного массива А, используя оператор INPUT. DIM A(12) PRINT ”Введите элементы массива А” FOR i= 1 TO 12 INPUT A(i) NEXT i END В данном примере при выполнении программы элементы массива вводятся с клавиатуры. 2. Записать операторы ввода элементов одномерного массива А, используя операторы READ, DATA, DIM A(12) DATA -3, 6, 7, -3, 4, -5, 0, -2, 1, 12, -9, 9 FOR i= 1 TO 12 READ A(i) 21 NEXT i END В данном примере при выполнении программы элементы массива вводятся из блока данных. 3. Записать операторы вывода элементов одномерного массива А в строчку. … FOR i= 1 TO 12 PRINT A(i); NEXT i END В данном примере после выполнении операторов элементы массива будут выведены на экран в строку, т.к. в конце списка вывода оператора PRINT стоит точка с запятой (;) 4. Записать операторы вывода элементов одномерного массива А в столбец. … FOR i= 1 TO 12 PRINT A(i) NEXT i END В данном примере после выполнении операторов элементы массива будут выведены на экран в столбец. Пример 2. Заданы элементы одномерного массива B(n) (B(1), B(2), …, B(n)). Записать операторы ввода и вывода данного массива. INPUT ”Введите размер массива n”; n DIM B(n) PRINT ”Введите элементы массива B” FOR i= 1 TO n INPUT B(i) NEXT i 22 FOR i= 1 TO n PRINT B(i); NEXT i END В данном примере сначала с клавиатуры вводится размер массива n, затем значения элементов массива. Элементы массива будут выведены на экран в строку. Пример 3. Заданы элементы двумерного массива С(n, m). Записать операторы ввода и вывода данного массива. REM Ввод массива INPUT ”Введите число строк массива n”; n INPUT ”Введите число столбцов массива m”; m DIM С(n, m) PRINT ”Введите элементы массива C” FOR i= 1 TO n FOR j= 1 TO m INPUT C(i, j) NEXT j NEXT i REM Вывод массива FOR i= 1 TO n FOR j= 1 TO m PRINT C(i, j); NEXT j PRINT NEXT i END В данном примере сначала с клавиатуры вводится размер массива С (число строк и столбцов), затем сами элементы массива. Заметим, что для ввода 23 массива С использовался вложенный цикл и элементы массива вводятся по строкам, то есть сначала вводятся элементы первой строки, затем второй и т.д. Элементы массива будут выведены на экран в общепринятом виде, то есть в виде матрицы. Для вывода массива также используется вложенный цикл. Примеры решения задач Пример 1 Заработная плата рабочего N руб. Налог составляет k% от зарплаты. Определить сумму налога и сумму, полученную рабочим. Составить блок-схему и программу. Подобрать контрольный пример. Обозначение переменных: N – зарплата рабочего; k - процент отчисляемого налога; C - сумма налога; S - сумма, полученная рабочим. Контрольный пример: Пусть N = 8500 руб., k = 13%. Тогда С = 8500 · 13/100 = 1105, S = 8500 – 1105 = 7395 Блок – схема представлена на рис. 1. Начало Ввод N, k С = N·k/100 S=N-C Вывод C,S Конец Рис. 1. Блок-схема алгоритма определения суммы налога и полученной рабочим суммы 24 Текст программы REM Вычисление налога и зарплаты INPUT "Введите N, k"; N, k C = N * k / 100 S = N - C PRINT "Сумма налога ="; C PRINT "Сумма, полученная рабочим ="; S END Результат выполнения программы для данных контрольного примера Сумма налога = 1105 Сумма, полученная рабочим = 7395 Пример 2 Вычислить y tg 3 x 2 e a b 1,5 ln c b 2 При х = 1.0016 3 a2 а = -14.6349 b = 16.8214 с = 1.1007 Составить блок-схему и программу. Блок-схема представлена на рис. 2. Начало Ввод x, a, b, c, y tg 3 x 2 e a b 1,5 ln c 2 b 3 a2 Вывод у Конец Рис. 2. Блок-схема алгоритма вычисления у Текст программы REM Вычисление Y DATA 1.0016, -14.6349, 16.8214, 1.1007 READ x, a, b, c Y = (TAN(x ^ 2) ^ 3 + EXP(a + b)) / (1.5 * LOG(ABS(c ^ 2 - SQR(b)))) + a ^ 2 ^ (1 / 3) PRINT "Y="; Y END Результат выполнения программы Y= 14.0006 25 Пример 3 Найти действительные корни квадратного уравнение ax2 + bx + с = 0. Составить блок-схему и программу. Подобрать контрольный пример. Контрольный пример: Пусть а = 6, b = 7, c = 1 Найдем корни уравнения. D = b2 - 4ac = 49 - 4·6·1 = 25 x1 = b D 75 0.1667 2a 12 x2 = b D 75 1 2a 12 Блок – схема представлена на рис. 3. Начало Ввод a, b, c D = b2 - 4ac Нет x1 b D 2a x2 b D 2a D<0 Да Нет действительных корней Вывод х1, х2 Конец Рис.3. Блок-схема алгоритма вычисления действительных корней квадратного уравнения Текст программы REM Вычисление действительных корней квадратного уравнения INPUT "Введите коэффициенты a, b, c"; a, b, c 26 D = b ^ 2 - 4 * a * c IF D < 0 THEN PRINT "Нет действительных корней": GOTO 10 x1 = (-b + SQR(D)) / 2 / a x2 = (-b - SQR(D)) / 2 / a PRINT "х1 = "; x1; " x2="; x2 10 END Результат выполнения программы для данных контрольного примера х1 = -.1666667 x2=-1 Пример 4 Вычислить: n S= (1) i 2 i i 2 3 n sin ix sin 2 x sin 3x ... (1) n 2 sin nx 3 8 i 1 n 1 2 при n = 10, x = 0.8 Блок-схема представлена на рис. 4. Начало Ввод n, x S=0 c=1 i = 2, n, 1 S=S+c· i sin ix i 1 2 c=-c Вывод S Конец Рис 4. Блок – схема алгоритма вычисления S Текст программы REM S INPUT "Введите x, n"; x, n 27 S = 0 c = 1 FOR i = 2 TO n S = S + c * i / (i ^ 2 - 1) * SIN(i * x) c = -c NEXT i PRINT "S="; S END Результат выполнения программы S = .5019206 Пример 5 Задан одномерный массив X(N). Найти среднее арифметическое отрицательных элементов массива. Составить блок-схему и программу. Подобрать контрольный пример. Обозначение переменных: C – сумма отрицательных элементов массива; k – количество отрицательных элементов массива; S – среднее арифметическое отрицательных элементов массива; S = C/k. Контрольный пример: Пусть N = 10 Массив содержит элементы: X(-4, 7, 8, -1, 0, 6, -3, 4, -10, -24) Тогда C = -4-1-3-10-24 = -42 k=5 S = C/k = -42/5 = - 8.4 Блок – схема представлена на рис. 5. Текст программы REM Вычисление среднего арифм. отрицательных элементов массива INPUT "Введите число элементов массива"; n DIM X(n) C = 0: k = 0 FOR i = 1 TO n INPUT X(i) IF X(i) < 0 THEN C = C + X(i): k = k + 1 NEXT i S = C / k PRINT "S="; S END Результат выполнения программы для данных контрольного примера S=-8.4 28 Начало Ввод n C=0 k=0 i = 1, n, 1 Ввод Xi Нет Xi < 0 Да C = C + Xi k=k+1 S = C/k Вывод S Конец Рис 5. Блок-схема алгоритма вычисления среднего арифметического отрицательных элементов массива Пример 6 Задан одномерный массив Y(m). Расположить элементы массива по возрастанию. Составить блок-схему и программу. Подобрать контрольный пример. Контрольный пример. Пусть m = 10. Массив содержит элементы: Y(7, -3, 5, 3, -9, 0, 4, 6, -5, 11). После сортировки элементов массива по возрастанию получим: Y(-9, -5, -3, 0, 3, 4, 5, 6, 7, 11). 29 Блок-схема представлена на рис. 6. Начало Ввод m i = 1, m, 1 Ввод Yi i = 1, m-1, 1 j = i+1, m, 1 Да Yi < Yj Нет f = Yi Yi = Yj Yj = f i = 1, m, 1 Ввод Yi Конец Рис 6. Блок-схема алгоритма сортировки элементов массива по возрастанию Текст программы REM Сортировка массива по возрастанию INPUT "Введите число элементов массива"; m 30 DIM Y(m) FOR i = 1 TO m INPUT Y(i) NEXT i FOR i = 1 TO m - 1 FOR j = i + 1 TO m IF Y(i) < Y(j) GOTO 10 f = Y(i) Y(i) = Y(j) Y(j) = f 10 NEXT j NEXT i PRINT "Отсортированный массив Y" FOR i = 1 TO m PRINT Y(i); NEXT i END Результат выполнения программы для данных контрольного примера Отсортированный массив Y -9 -5 -3 0 3 4 5 6 7 11 Пример 7 Задана матрица (двумерный массив) A(n, n). Транспонировать элементы матрицы. Составить блок-схему и программу. Подобрать контрольный пример. Контрольный пример: Пусть n=3. Матрица A(3,3) имеет вид: 1 А2 3 1 2 3 1 2 3 Транспонированная матрица имеет вид: 1 А 1 1 2 2 2 3 3 3 Блок – схема представлена на рис. 7. 31 Начало Ввод n i = 1, n, 1 j = 1, n, 1 Ввод Aij i = 1, n, 1 j = i+1, n, 1 f = Aij Aij = Aji Aji = f i = 1, n, 1 j = 1, n, 1 Вывод Aij Конец Рис 7. Блок – схема алгоритма транспонирования матрицы Текст программы REM Транспонирование матрицы INPUT "Введите число строк и столбцов матрицы"; n DIM A(n, n) FOR i = 1 TO n FOR j = 1 TO n INPUT A(i, j) 32 NEXT j NEXT i FOR i = 1 TO n FOR j = i + 1 TO n f = A(i, j): A(i, j) = A(j, i): A(j, i) = f NEXT j NEXT i FOR i = 1 TO n FOR j = 1 TO n PRINT A(i, j); NEXT j PRINT NEXT i END Результат выполнения программы для данных контрольного примера 1 1 1 2 2 2 3 3 3 33 Задания к контрольной работе Задание 1. Линейный вычислительный процесс Построить блок-схему и написать программу для решения задачи. (Недостающие данные задать самостоятельно в соответствии с условием задачи. Ввод данных производить любым, наиболее удобным в каждом конкретным случае, способом.) Подобрать контрольный пример. Вариант 34 Задание 1 Даны длины ребер a, b, c прямоугольного параллелепипеда. Найти его объем V и площадь поверхности S. 2 Дана длина ребра куба. Найти площадь грани, площадь полной поверхности и объем этого куба. 3 Даны два круга с общим центром и радиусами R1 и R2 (R1 > R2). Найти площади этих кругов S1 и S2, а также площадь S3 кольца, внешний радиус которого равен R1, а внутренний радиус равен R2. В качестве значения использовать 3.14. 4 Найти расстояние между двумя точками с заданными координатами (x1, y1) и (x2, y2) на плоскости. 5 Дана площадь S круга. Найти его диаметр D и длину L окружности, ограничивающей этот круг. В качестве значения использовать 3.14. 6 Дано двузначное число. Найти сумму и произведение его цифр. 7 Даны три неотрицательных числа a, b и c. Найти их среднее арифметическое и среднее геометрическое. 8 Дана длина L окружности. Найти ее радиус R и площадь S круга, ограниченного этой окружностью. В качестве значения использовать 3.14. 9 Даны два квадрата с разными длинами сторон. Вычислить на сколько площадь одного из квадратов больше площади другого. 10 Известны длина, высота и ширина аквариума. Сколько в нем можно содержать рыбок, если на каждую должно приходится не менее N л. Задание 2. Вычисление арифметических выражений Построить блок-схему и написать программу вычисления значения выражения. Вариант 1 Значения Формула переменных x = -6.251 x3 z ex 2 b tgx sin x a 2 a = 0.827 2 cos x 1 3z z = 25.001 2 x = 3.251 y = 3.325 z = 0.466 sin 2 z cos 2 x 3 h 3x 2 y 2 x 5 tgx 3 x = 1.421 b = 10.365 z = 0.828 1 sin 3 x ln 2 x b 2 k cos x 2z 2 x4 x = 0.335 y = 0.025 z = 32.005 ty 5 x = 3.258 r = 4.005 z = -0.666 ex 2 r 3 1 2 5 p sin x 2 z 3 cos (r 2) 1 6 x = 1.542 a = 3.261 z = 8.005 x2 1 r a sin 2 z ln 2 x 3 3e 7 a = 3.741 x = 0.825 z = 5.160 8 x = -6.251 y = 0.827 z = 25.001 9 x = -0.622 y = 3.325 z = 5.541 sin 2 x 1 S 4 x z cos3 2 x 3 tg x 2 y e 10 x = 1.876 c = 3.231 b = 5.865 d 4 x 1 v tg b z 3 x sin 2 ( y ) x e z2 y x e y a sin z tg 2 x 5 a3 0.79e x 3 2 x3 z ln y z y Z 2 tgx cos 2 2 x 1 2z xz2 y cos x 2 x 2 x sin x ln 3x c b Задание 3. Разветвляющийся вычислительный процесс 35 Построить блок-схему и написать программу вычисления выражения. Подобрать контрольный пример. Вариант Задание ex если x 0 y x ln x если 0 x 1 x 1 если x 1 1 x ex если x 5 y 2 cos x если 5 x 10.25 0.999 если x 10.25 2 если x 5 x 1 x y e если 5 x 0 x 1 если x 0 3 ln x x если x 1 y sin 3 x если 1 x 0 2x 3 если x 0 4 если x 0 x3 2 y x cos x если 0 x 1 1.23x если x 1 5 Вариант 6 7 8 9 10 Задание если x 1 sin 3x y x 1 если 1 x 3 tgx если x 3 если x 0 tgx x y xe если 0 x 3.5 x 1 если x 3.5 если x 0 sin 2 x y tgx если 0 x 10 0.33x если x 10 если x 1 arctg 2 x y lg x если 1 x 4.45 ( x 1) если x 4.45 2 x e x x если x 0 y tg 3 x если 0 x 7 x6 если x 7 Задание 4. Циклический вычислительный процесс Построить блок-схему и написать программу вычисления значения выражения. Вариант Задание 1 При x 2 и = 3.14159, вычислите значение выражения, включающего 11 членов: 1 1 1 Y 2 x 2 3x 2 5x 2 Окончание табл. 36 Вариант 2 3 4 Задание Вычислите значение выражения, включающего 15 членов: 1 1 1 1 Y 1 2 4 8 16 При x 60 0 вычислите значение выражения, включающего 10 членов: 2 3 4 Y sin( x ) 4 5 6 Вычислите значение выражения, включающего 10 членов: 2 2 2 1 1 1 P4 3 4 5 3 4 5 5 Вычислите значение выражения: 12 1 13 2 2 2 2 3 Y 1 14 16 2 2 4 2 6 6 При x 30 0 вычислите значение выражения: cos(2 x) cos(3 x) cos(10 x) Y cos( x) 22 32 10 2 7 При x 2.5 вычислить значение выражения, включающего 11 членов: x 1 x2 x Y 1 ln( x ) ln(x 1) ln(x 2) Вычислите значение выражения, включающего 18 членов: 8 9 10 Y 10 2 10 10 3 10 10 4 10 6 1 1 1 1 2 3 2 3 4 3 4 5 При x 1.5708 вычислить значение выражения: sin(3 x ) sin(5 x ) sin(19 x ) Z sin( x ) 3 5 19 Вычислите значение выражения, включающего 20 членов: 2 5 3 6 4 7 Y 3 6 4 7 5 8 Задание 5. Одномерные массивы 37 Написать программу формирования одномерного массива размера М. Полученный массив напечатать. Выполнить обработку и преобразование массива в соответствии со своим вариантом. Напечатать преобразованный массив. Подобрать контрольный пример. Вариант Задание Вычислить сумму и количество четных чисел в массиве. 1 Заменить все элементы массива, совпадающие с числом A, на число B. Вычислить максимальный элемент массива. 2 Заменить в массиве все нечетные числа на 1. Если нечетных чисел нет, то вывести сообщение об этом. Найти произведение наименьшего и наибольшего значений. 3 4 Заменить нулями все отрицательные элементы массива . Найти сумму и количество чисел, попадающих в диапазон от А до В, где А и В задаются пользователем. Если таких чисел нет , то вывести сообщение об этом. Получить новый массив путем деления всех элементов на наибольший элемент. 5 Вычислить произведение минимального и максимального элементов массива. Поменять местами первый и последний элементы массива. Определить количество элементов массива, больше среднего арифметического всех его элементов. 6 Получить новый массив путем вычитания из всех элементов наименьшего элемента. Найти сумму модулей отрицательных нечетных элементов. 7 Получить новый массив путем возведения в квадрат элементов, стоящих на четных местах. Окончание табл. 38 Вариант Задание Найти среднее арифметическое четных элементов. 8 9 10 Получить новый массив путем умножения всех элементов на наименьший элемент. Вычислить разность между максимальным элементом массива и величиной первого элемента массива. Отсортировать массив по возрастанию. Найти произведение и количество элементов массива кратных 5. Если таких элементов нет, то вывести сообщение об этом. Отсортировать массив по убыванию. 39 Пример выполнения контрольной работы Линейный вычислительный процесс Задание 1. Построить блок-схему и написать программу для решения задачи. Подобрать контрольный пример. В прямоугольном треугольнике по известным длинам катетов найти его периметр и площадь. Обозначение переменных: a, b – заданные длины катетов, c – гипотенуза, P – периметр, S – площадь треугольника. Контрольный пример. Для заданных значений a = 3, b = 4, P = 12, S = 6 Блок-схема решения Программа Начало REM Линейный вычислительный процесс INPUT "Введите длины катетов a и b",a,b c=SQR(a^2+b^2) P=a+b+c S=(a*b)/2 PRINT "Периметр треугольника P=";P PRINT "Площадь треугольника S=";S END Ввод a, b с a 2 b2 P = a+b+c S = (a*b)/2 Результат выполнения программы: Периметр треугольника P=12 Площадь треугольника S=6 Вывод C,S Конец Вычисление арифметических выражений Задание 2. Построить блок - схему и написать программу вычисления значения выражения. d e 40 a 1 sin f 2 f cos2 a 4 25 z tgaz a = 2.876 f = 1.345 z = 2.946 Блок-схема решения. Программа. Начало REM Вычисление выражения DATA 2.876, 1.345, 2.946 READ a,f,z R=SQR(SIN(f^2)+f)/COS(a)^2 T=(ABS(25*z+TAN(a*z)))^(1/4) d=EXP(a-1)-R+T PRINT "Значение выражения d= ";d END Ввод a, f, z Вычисление d Вывод d Конец Результат выполнения программы: Значение выражения d=7.808057 Разветвляющийся вычислительный процесс Задание 3. Построить блок-схему и написать программу вычисления выражения. Подобрать контрольный пример. если x 1 2tgx y arctg1.5 x если 1 x 2 x 1 если x 2 Контрольный пример. При x=-2 y=4.37, при x=2 y=1.25, при x=3 y=2 Блок – схема решения. Начало Ввод a, b Да Нет x -1 Да y=2 tg x y=x-1 x >2 Нет y=arctg 1.5 x Вывод y Конец 41 Программа. REM Разветвляющийся процесс INPUT "Введите значения x=",x IF x<=-1 THEN y=2*TAN(x) ELSEIF x>2 THEN y=x-1 ELSE Y=ATN(1.5*x) END IF PRINT "При заданном значении x=";x; "y=";y END Результат выполнения программы для данных контрольного примера При заданном значении x=-2 y=4.37008 При заданном значении x=2 y=1.249046 При заданном значении x=3 y=2 Циклический вычислительный процесс Задание 4. Вычислите значение выражения, включающего 18 слагаемых: 1 2 3 4 Y 3 4 5 6 Решение 18 i Y Запишем выражение в общем виде: i 1 i 2 Блок–схема решения Начало Y=0 i = 1, 18, 1 Y = Y+i /(i+2) 42 Вывод Y Конец Программа. CLS S=0 FOR i=1 TO 18 S=S+i/(i+2) NEXT i PRINT “Значение суммы равно ”;S END Результат выполнения программы: Значение суммы равно 13.80452 Одномерные массивы Задание 5. Написать программу формирования одномерного массива размера М. Полученный массив напечатать. Выполнить обработку и преобразование массива в соответствии со своим вариантом. Напечатать преобразованный массив. Подобрать контрольный пример. Найти количество чисел в массиве, меньших заданного числа У. Если таких чисел нет, то вывести сообщение об этом. Поменять местами второй и минимальный элементы массива. Контрольный пример. Зададим M = 8, Y = 5 массив Z = 9, 4, 7, 2, -5, 8, 3, 6 Количество элементов меньших 5 равно 4. Минимальный элемент массива равен -5. Преобразованный массив Z=9, -5, 7, 2, 4, 8, 3, 6 Программа. CLS INPUT "Введите количество элементов M= ";M DIM Z(M) PRINT "Исходный массив " FOR i=1 TO M INPUT Z(i) NEXT i FOR i=1 TO M PRINT Z(i); NEXT i PRINT INPUT "Введите число Y= ",Y REM Нахождение количества чисел меньших Y R=0 FOR i=1 TO M 43 IF Z(i)<Y THEN R=R+1 NEXT i IF R=0 THEN PRINT "Элементов меньших ";Y; " в массиве нет " ELSE PRINT "Количество элементов меньших ";Y; " равно ";R END IF REM Нахождение минимального элемента и его номера min=Z(1): nomer=1 FOR i=1 TO M IF Z(i)<min THEN min=Z(i):nomer=i NEXT i REM Меняем местами второй и минимальный элементы массива С=Z(2): Z(2)=Z(nomer): Z(nomer)=C PRINT "Преобразованный массив " FOR i=1 TO M PRINT Z(i); NEXT i END Результат выполнения программы: Исходный массив 9,4,7,2,-5,8,3,6 Количество элементов меньших 5 равно 4 Преобразованный массив 9,-5,7,2,4,8,3,6 Вопросы для самоконтроля 1. Понятие алгоритма. Основные свойства алгоритмов. Способы описания алгоритмов. 2. Правила построения алгоритмов. Алгоритмизация линейных вычислительных процессов. 3. Алгоритмизация разветвляющихся вычислительных процессов. 4. Алгоритмизация циклических вычислительных процессов. 5. Структура программы. 6. Оператор комментарий. Оператор присваивания. 7. Операторы ввода, вывода. 8. Операторы условного перехода. 9. Операторы цикла. 10. Понятие массива. Оператор описания массивов. 11. Ввод и вывод массивов. 44 Библиографический список Алексеев В. Е.Вычислительная техника и программирование. Практикум по программированию : Практ.пособие / В. Е. Алексеев А. С. Ваулин, Г. Б. Петрова. - М.: Высш.шк., 1991. - 400с. Геворкян Г. Х. Бейсик - это просто / Г. Х. Геворкян, В. Н. Семенов. - М.: Радио и связь, 1989. - 144с. Давидов П. Д. Бейсик для начинающих / П. Д. Давидов, А. Л. Марченко. - М.: Наука, 1994. - 160с. Есипов А. С. Информатика: Учеб. по базовому курсу / А. С. Есипов. - 3-е изд., перераб. и доп. - СПб.: Наука и Техника, 2003. - 400с. Зельднер Г. А. Программируем на языке QuickBasic 4.5 / Г. А. Зельднер.– М.:ABF, 1996. – 432с. Информатика: Учеб.пособие и сборник задач / под общ.ред. : В.А.Каймина, Л.А.Муравья. - М.: БРИДЖ, 1994. - 200с. Маковский В. А. Бейсик / В. А. Маковский, В. И. Похлебаев. - М.: Изд-во стандартов, 1992. - 76с. Моррил Гарриет. Бейсик для ПК ИБМ: Пер.с англ. / Моррил Гарриет. - 2-е изд.; стереотип. - М.: Финансы и статистика, 1993. - 208с. Москвитина А. А. Бейсик: Учеб.пособие / А. А. Москвитина, В. С. Новичков. - М.: Высш.шк., 1989. - 191с. Оглавление Общие положения .............................................................................................................................. 3 Основные сведения ............................................................................................................................ 3 Понятие алгоритма ...................................................................................................................... 3 Простейшие конструкции языка Basic ............................................................................................. 4 Основные операторы языка Basic..................................................................................................... 9 Структура программы ................................................................................................................. 9 Оператор присваивания .............................................................................................................. 10 Операторы ввода ......................................................................................................................... 11 Оператор вывода ......................................................................................................................... 13 Оператор безусловного перехода ............................................................................................... 14 Операторы условного перехода ................................................................................................. 15 Операторы цикла ......................................................................................................................... 17 Операторы цикла FOR…NEXT ................................................................................................... 18 Операторы работы с массивами ..................................................................................................... 19 Понятие массива ......................................................................................................................... 19 Оператор описания массивов ..................................................................................................... 20 Ввод и вывод элементов массивов ............................................................................................. 21 Примеры решения задач .................................................................................................................. 24 Задания к контрольной работе ........................................................................................................ 34 Пример выполнения контрольной работы .................................................................................... 40 Вопросы для самоконтроля ............................................................................................................. 44 Библиографический список ............................................................................................................ 45 45