Курсовая работа учителя информатики МОУ СОШ с. Войсковая Казинка Долгоруковского района Липецкой области Андриановой Марии Васильевны Задачи с использованием графических операторов Задача 1: “Звезд на небе много. Экран компьютера – это маленькое окошечко-телескоп, через которое мы можем посмотреть на небо. Можно навести свой телескоп на участок, где совсем мало звезд, а можно и на Млечный путь. Как записать программные строчки, в которых компьютер запросил бы количество звезд?” Решение: CLS SCRЕЕN 12 INPUT “Сколько звезд на небе”; N FOR n=1 TO N X= RND(1)*640 Y= RND(1)*480 Z=RND(1)* 15 PSET (X,Y),Z NEXT N END Задача 2: А как сделать так, чтобы звезда зажглась, порадовала нас немножко и погасла? Решение : CLS SCRЕЕN 12 INPUT “Сколько звезд на небе”; N FOR n=1 TO N X= RND(1)*640 Y= RND(1)*480 Z=RND(1)* 15 PSET (X,Y),Z FOR к=1 TO 25000 NEXT к PSET (X,Y),0” NEXT N END Задача 3: А теперь давайте подумаем, как получить разноцветные линии разной длины, разного цвета, в разных местах экрана. Решение : CLS SCRЕЕN 12 INPUT “Сколько звезд на небе”; N FOR n=1 TO N X1= RND(1)*640 Y1= RND(1)*464 X2= RND(1)*640 Y2= RND(1)*464 LINE (X1,Y1) – (X2,Y2),Z NEXT N END Задачи на операции с файлами. Задача 1: Введите файл на 10 элементов. Решение: CLS f = FREEFILE OPEN "file.txt" FOR OUTPUT AS #f FOR i = 1 TO 10 PRINT #1, i NEXT i CLOSE #f вывод файла: f = FREEFILE OPEN "file.txt" FOR INPUT AS #f DO WHILE NOT EOF(F) INPUT #F, i PRINT i LOOP CLOSE #f Задача 2: Ввести файл. И вывести его содержимое с конца файла. Решение: CLS n = FREEFILE OPEN "test.tmp" FOR OUTPUT AS n REM заполняем файл числами от 1 до 20 FOR i = 1 TO 20 PRINT #n, i PRINT i; NEXT i CLOSE #n PRINT : PRINT REM открываю файл опять для чтения REM но на сей раз читать будет с конца n = FREEFILE OPEN "test.tmp" FOR INPUT AS n REM перемещаюсь к концу файла. Index - будет определять элемент для считывания index = LOF(n) - 1 DO WHILE index > 0 SEEK #n, index INPUT #n, a$ PRINT a$; " "; REM переходим к предыдущему элементы файла index = index - 3 LOOP Задача 3: (для "продвинутых" учеников): Даны два файла (File1.bak и File2.bak). Определить сколько элементов одного файла повторяются в другом файле. Решение: CLS OPEN "file1.bak" FOR INPUT AS #1 OPEN "file1.bak" FOR INPUT AS #2 DO WHILE NOT EOF(1) INPUT #1, a REM count- кол-во повторяющихся элементов count = 0 SEEK #2, 1 DO WHILE NOT EOF(2) INPUT #2, b IF a = b THEN count = count + 1 LOOP PRINT a; " встречается "; count; " раз" LOOP RESET END Дополнительные задачи Задача 1: Найти наибольшее и наименьшее из двух заданных чисел A и B. Решение: CLS INPUT "A=";A INPUT "B=";B X=(ABS(A-B)+A+B))/2 Y=(A+B-ABS(A-B))/2 PRINT "X=";X PRINT "Y=";Y END Задача 2: Вычислите 20 первых членов последовательности и их сумму, если общий член последовательности Решение: CLS K=1 S=0 DO A=(SQR(K)+1)/(K^2+1) S=S+A PRINT “K=”;K,”A=”;A,”S=”;S K=K+1 LOOP WHILE K<=20 END Задача 3: Найдите НОД двух чисел. Решение: CLS ‘НОД двух чисел А и В‘ INPUT A, B X=A: Y=B DO IF X=Y THEN PRINT “A=”;A, “B=”; B, “НОД=”; X END ELSE IF X>Y THEN X=X-Y ELSE Y=Y-X END IF END IF LOOP , где (k=1,2,3…20) Задача 4: Упорядочить 3 числа в порядке возрастания. Решение: INPUT”Введите три числа”; a, b, c DO SWAP a, b IF b>=c THEN SWAP b, c END IF LOOP WHILE a>=b PRINT a, b, c END Задача 5: Вычислите значение числа ℮ с точностью до 0,000001, используя разложение функции экспоненты в ряд. Решение : ‘Вычисление e INPUT”Введите точность вычисления”;E S=0: P=1: K=0 DO S=S+P K=K+1 P=P/K LOOP WHILE P>E PRINT “e=”; S END Задача 6: Составьте программу, которая выводит на экран бегущую строку. Фраза строки вводится с клавиатуры. Окно для строки разместить в центре экрана и длина фразы 50 символов. Нажатие любой клавиши останавливает “бег”. CLS Stroka$=”” FOR i=1 TO 50 Stroka$=Stroka$+”*” NEXT i CLS PRINT”Введите строку символов” INPUT a$: Stroka$=Strika$+a$ CLS: COLOR 0,3, 4: flag$=”” WHILE flag$=”” LOCATE 12, 15 PRINT MID$(Stroka$, 1,50) Stroka$=MID$(Stroka$, 2) + MID$(Stroka$, 1, 1) FOR i=1 TO 10^5: NEXT i flag$=INKEY$ WEND END Задача 7: Пузырьковая сортировка одномерного массива. Решение : CLS INPUT”Введите размер массива”;N DIM A(N) FOR I=1 TO N INPUT A(I) NEXT I DO X=0 FOR I=1 TO N-1 IF A(I)>A(I+1) THEN SWAP A(I), A(I+1) X=I END IF NEXT I LOOP UNTIL X=0 PRINT FOR I=1 TO N PRINT A(I); NEXT I END