Лабораторный практикум по программированию (Бейсик) Сборник лабораторных работ по языку программирования Basic. Лабораторная работа №1 "Команда ввода" ПРИМЕЧАНИЕ: Результаты работы программ и ответы на вопросы записывать в тетрадь. Задача 1. Записать в ОП программу: PRINT «Добрый день» PRINT « Вычислить произведение чисел А, Х» А=5 Х=4 В=А*Х PRINT A, X, B Исполнить программу. Что появилось на экране? Задача 2. Изменить последнюю строку: PRINT А, X, B Исполнить программу. Что появилось на экране? Чем отличается результат от предыдущего? Задача 3. Удалить последнюю строку, дописать в программу строки: PRINT A PRINT X PRINT B Исполнить программу. Что на экране? Изменить в программе три последние строки: PRINT «А =»; А PRINT «Х =»; Х PRINT « В =»; В Исполнить программу. Что на экране? Задача 4. Удалить три последние строки. Дописать строку: PRINT A; «*»; Х; «=»; В Исполнить программу. Что на экране? Контрольное задание к лабораторной работе. Написать программу вычисления площади трапеции для а = 2.3; в =4.5; h = 5. Вывести на экран исходные данные и результат. Лабораторная работа №2 "Ввод и редактирование линейных программ" Цель: Научиться вводить линейные программы. Познакомиться со стандарной функцией INT. 1. Составить программу для подсчета значений функции: y=0.3X^2-1.25X^3+5.64X-8.3, при Х=0.5; -8,126; 0.0015. INPUT X LET Y=0.3*X^2-1.25*X^3+5.64*X-8.3 PRINT “X=”;X,”Y=”;Y После появления знака вопроса набрать первое значение Х и нажать [ENTER]. Записать результат в тетрадь и повторить вычисления для других значений Х. 2. Написать программу для нахождения значения выражения: Y=(AX^2+B)/(4-3C) ПРИ A=3; B=3; C=2; X=1. INPUT X,A,B,C Y=(A*X^2+B)/(4-3*C) PRINT “X=”;X,”Y=”;Y 3. Нахождение целой части от числа с помощью функции INT. Выполнить программу, которая находит целую часть от деления выражения Y=(А+В)/А при А=15,3; В=0,485; А=112,443; В=18,024. INPUT A,B Y=(A+B)/A’вычисляет значение выражения Z=INT(Y)’ находит целую часть PRINT “Y=”;Y,”Z=”;Z’ выводит на экран значение выражения и целую часть от него. 4. Программа нахождения остатка от деления Y=N/М, N=15, M=4; N=1234, M=25 INPUT M,N Z=N-INT(N/M)*M’ вычисление остатка от деления PRINT “Z=”;Z Самостоятельная работа. 1. Написать программу для вычисления значения функции и исполнить ее для указанных значений Х. Y=5X^2-3X+2, X=0.5, -3, 1.2 Y=(X^3+2)/(X+5), X=12.5, -6 2. Написать программу для нахождения остатка от деления Y=1986/A. Лабораторная работа №3 "Программы ветвления. Операторы IF … THEN … ELSE, GO TO" Цель: Научиться вводить и редактировать разветвляющиеся программы. 1. Написать программу для нахождения значения функции при х<0 y=5x-3, при x>=0 y=Ö x для х=-8.34; -0.158; 1.21; 625 INPUT X IF X>0 THEN Y=SQR(X) ELSE Y=5*X-3 PRINT “X=”;X,”Y=”;Y END 2. Ввести программу для нахождения НОД чисел М и N. Исполнить ее для M=1000, N=625; M=1236312, N=9822. 10 INPUT M,N 20 LET X=M 30 LET Y=N 40 PRINT X,Y 50 IF X=Y THEN 110 60 IF X>Y THEN 90 70 LET Y=Y-X 80 GOTO 50 90 LET X=X-Y 100 GOTO 50 110 PRINT “НОД ЧИСЕЛ M и N РАВЕН”;X 120 END 3. Ввести программу решения квадратного уравнения и исполнить её для следующих уравнений: 1125х^2-45x-324=0; 502x^2-38.5x+12/125=0; 16x^2-256x+1024=0. 10 PRINT “РЕШАЕМ УРАВНЕНИЕ AX^2+BX+C=0” 20 INPUT A,B,C 30 D=B^2-4*A*C 40 IF D>0 THEN 100 50 IF D=0 THEN 70 60 PRINT “Нет решения” 70 X=-B/(2*A) 80 PRINT “X1=X2=”;X 90 GOTO 130 100 X1=(-B-SQR(D))/(2*A) 110 X2=(-B+SQR(D))/(2*A) 120 PRINT “X1=”;X1,”X2=”;X2 130 END 4. НАПИСАТЬ ПРОГРАММУ ДЛЯ РЕШЕНИЯ ЛИНЕЙНОГО УРАВНЕНИЯ АХ+В=С, ПРИМЕРЫ. Лабораторная работа №4 "Ввод и редактирование программ, содержащих циклы" Цель: Научить вводить редактировать и составлять программы, содержащие циклы. 1. Вывести на экран дисплея значения функции Y=0.3X^3-4.15X^2-0.01X +2.25 для Х от –5 до 5 FOR X=-5 TO 5 LET Y=0.3*X^3-4.15*X^2-0.01*X +2.25 PRINT “X=”;X,”Y=”;Y NEXT X END 2. Ввести изменения в предыдущую программу, чтобы значения функции вычислялись с шагом 0.5. для решения этой задачи нужно изменить только первую строчку. FOR X=-5 TO 5 STEP 0.5 3. Вывести на экран таблицу умножения в виде 2*3=6 Для решения этой задачи будем использовать 2 цикла: один цикл по первому множителю, другой второму. Организуем 2 цикла, где в первом цикле первый множитель будет меняться от 1 до 5, второй от 1 до 9. Во втором цикле первый множитель будет меняться от 6 до 10, а второй также, от 1 до 9. FOR J=1 TO 9 FOR I=1 TO 5 PRINT “I*J=”;I*J, NEXT I NEXT J PRINT FOR J=1 TO 9 FOR I=6 TO 10 PRINT “ ”I” “*”J”=”;I*J NEXT I NEXT J 4. Генерация случайных чисел. Функция RND(1) генерирует случайное число от 0 до 1. LET A=RND(1) PRINT “A=”;A END После запуска на решение ЭВМ выдаст значение А>0, но A<1. 5. Получите на экране 10 случайных чисел от 0 до 15. Это значит, что число не должно быть больше 15 и меньше 1. Формула получения случайных чисел на интервале (В-А)* RND(1)+А. Добавим еще условие: числа должны быть целыми. Для этого используется функция INT. FOR K=1 TO 10 E=INT((15-1)*RND(1)+1) PRINT E NEXT K END Самостоятельная работа Написать программу для получения 20 случайных чисел от 10 до 50. ЛАБОРАТОРНАЯ РАБОТА № 5 «ЛИНЕЙНЫЕ МАССИВЫ (ЧАСТЬ 1)» Цель: Научиться составлять простейшие программы по обработке линейных массивов. Линейный массив- это линейная таблица, где каждому номеру соответствует свой элемент. Пример массивов: таблица квадратов, кубов чисел, таблица измерения температуры и т. д. Линейный массив обозначается именем (буквой) и номером последнего элемента. А(5)- линейный массив из 6 элементов(0,1,2,3,4,5). Оператор DIM резервирует в памяти ЭВМ место для массива. Задача 1: Пусть дана таблица: 0 2 1 4 2 -3 3 5 4 7 5 -1 Где первая строка- номера элементов, вторая- их значений. Ввести в память ЭВМ значения элементов массива и вывести на экран в виде А(0)=2, А(1)=4, и т. д. DIM A(6) FOR I=0 TO 5 INPUT A(I) PRINT “A(“I”)=”;A(I) NEXT I Задача 2: Дополнить программу так, чтобы найти сумму элементов массива. LET S=0 FOR I=0 TO 5 LET S=S+A(I) NEXT I PRINT “S=”;S Задача 3. Дополнить программу так, чтобы подсчитать количество отрицательных элементов в массиве. DIM A(14) S=0 N=0 FOR X=0 TO 14 A(X)=X^2-2 PRINT “A(“X”)=”;A(X) NEXT X FOR X=0 TO 14 S=S+A(X) IF A(X)<0 THEN N=N+1 NEXT PRINT “S=”;S, “N=”; Самостоятельная работа. 1. Написать программу заполнения и вывода на экран таблицы квадратов от 1 до 40. 2. Написать и исполнить программу заполнения массива из 20 элементов по формуле Y=0.2X^2-3X+0.1 и подсчета суммы положительных элементов. ЛАБОРАТОРНАЯ РАБОТА № 6 «ЛИНЕЙНЫЕ МАССИВЫ (ЧАСТЬ 2)» Цель: Продолжить изучение программ по обработке массивов. Задача 4: Составить программу для заполнения таблицы кубов и вывода ее на экран дисплея. DIM A(15) FOR I=1 TO 15 LET A(I)=I^3 PRINT “A(“I”)=”; A(I) NEXT I END Задача 5: Элементы массива вычисляются по формуле Y=X^2-X-2, где Х- номер элемента, а Y- его значение. Написать программу, которая: Напечатает на экране первые 15 элементов; Подсчитает их сумму; Подсчитает количество отрицательных элементов; Обнуляет значения суммы и счетчика отрицательных элементов; Цикл подсчета значений элементов и выход их на экран; К предыдущей сумме прибавляет значение следующего элемента; Проверяет, будет ли он отрицательным. Если да, то увеличивает значение счетчика на 1. DIM A(15) S=0 K=0 FOR X=1 TO 15 A(X)=X^2-X-2 PRINT A(X); S=S+A(X) NEXT X PRINT “СУММА ЭЛЕМЕНТОВ МАССИВА S=”; S FOR X=1 TO 15 IF A(X)<0 THEN K=K+1 NEXT X PRINT “КОЛИЧЕСТВО ОТРИЦАТЕЛЬНЫХ ЭЛЕМЕНТОВ К=”; K END Ввод и редактирование программ. Задача 1: Элементы массива А(20) заполняются по формуле A(I)=21-I^2+4. Написать программу, которая находит минимальный элемент в этом массиве и, если он не один, то их количество и номера. DIM A(20) FOR I=1 TO 20 A(I)=21-I^2+4 PRINT “A(“I”)=”; A(I) NEXT I MIN=A(1) K=0 FOR I=2 TO 20 IF MIN>A(I) THEN MIN=A(I) NEXT I PRINT “MIN=”; MIN FOR I=1 TO 20 IF A(I)=MIN THEN K=K+1 IF A(I)=MIN THEN PRINT “MIN=A(“I”)=”; MIN NEXT I PRINT “КОЛИЧЕСТВО МИНИМУМОВ К=”; K END Задача 2: Написать программу, которая будет сравнивать значения выражения I^2-1 и J^31 для целых значений I и J и будет находить при каких значениях I и J они будут равны. DIM A(10), B(10) FOR I=0 TO 10 A(I)=I^2-1 PRINT “A(“I”)=”;A(I) NEXT I FOR J=0 TO 10 B(J)=J^3-1 PRINT “B(“J”)=”;B(J) NEXT J FOR I=0 TO 10 FOR J=0 TO 10 IF A(I)=B(J) THEN PRINT “A(“I”)=B(“J”)=”;A(I)”=”B(J) NEXT J NEXT I END Самостоятельная работа. Задача 1: Изменить программу к задаче так, чтобы были найдены значения I и J, при которых A(I)<B(J) при I=J. Задача 2: Элементы массива заполняют по формуле х(х-3)(х^2-81). Написать и исполнить программу, находящую из первых 10 элементов значения х, при которых значения элементов равны 0. ЛАБОРАТОРНАЯ РАБОТА № 7 «ДВУМЕРНЫЕ МАССИВЫ». Цель: Научиться писать простейшие программы по обработке двумерных массивов. Таблица, состоящая из n строк и m столбцов, называется прямоугольным массивом. Каждому элементу массива соответствует свой номер строки и номер столбца, причем на первом месте всегда стоит номер строки. А(3,6)- двумерный массив из 4 строк и 7 столбцов. Задавая массив, мы должны указать номер максимальной строки и максимального столбца, начать работу можем с любого номера, только указав его. Рассмотрим двумерный массив А(3,5): Задача 1: Загрузить значение элементов данного массива в память ЭВМ, вывести их на экран дисплея. I- номер 1 2 1 7 DIM A(3,5) FOR I=1 TO 3 FOR J=1 TO 5 INPUT X A(I,J)=X NEXT J NEXT I FOR I=1 TO 3 FOR J=1 TO 5 PRINT “A(“I”,”J”)=”;A(I,J) 2 -3 2 6 3 5 25 0 4 4 3 3 5 -1 8 2 NEXT J NEXT I END При запуске на решение, после появления ?, вводим элементы из таблицы. Дополним программу для нахождения суммы положительных и отрицательных элементов массива. S=0 S1=0 FOR I=1 TO 3 FOR J=1 TO 5 IF A(I,J)>0 THEN S=S+A(I,J) IF A(I,J)<0 THEN S1=S1+A(I,J) NEXT J NEXT I PRINT”СУММА ПОЛОЖИТЕЛЬНЫХ ЭЛЕМЕНТОВ S=”;S PRINT”СУММА ОТРИЦАТЕЛЬНЫХ ЭЛЕМЕНТОВ S1=”;S1 END Задача 2: Элементы массива А(10,10) заполняются как произведение номера строки на номер столбца (А(5,6)=5*6=30). Вывести значение элементов на экран дисплея. Найти сумму значений элементов, номера строк и столбцов у которых совпадают (А(6,6)=36). DIM A(10,10) S=0 FOR I=0 TO 10 FOR J=0 TO 10 A(I,J)=I*J IF I=J THEN S=S+A(I,J) ? Задача 3: А(X,Y)=5X-3Y. Написать программу подсчета положительных, отрицательных и равных нулю элементов. DIM A(10,10) N=0 N1=0 N0=0 FOR X=0 TO 10 FOR Y=0 TO 10 A(X,Y)=5*X-3*Y IF A(X,Y)>0 THEN N=N+1 IF A(X,Y)<0 THEN N1=N1+1 IF A(X,Y)=0 THEN N0=N0+1 NEXT Y NEXT X PRINT “N=”;N,”N1=”;N1,”N0=”;N0 END Самостоятельная работа A(X,Y)=2X^2-Y^2. Вывести на экран А(2,2); найти количество отрицательных элементов, сумму положительных элементов, номера элементов, значение которых равно 0.