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

Задания

Задание 1.

Усовершенствовать программу, рисующую елку. Для этого объявить процедуру, позволяющую нарисовать треугольник.

Задание 2.

Написать программу, позволяющую получить на экране еловый бор. (Елки, расположенные случайным образом на экране.)

Задание 3.

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

Задание 4.

Написать программу, которая позволяет нарисовать закрашенный треугольник.

Задание 5.*

Написать программу, которая позволяет изобразить в центре экрана правильный N-угольник, вписанный в окружность радиуса R.

Задание 6.*

Написать программу, которая позволяет изобразить на экране ромашку из закрашенных окружностей.

Задание 7

Составить программу, в результате выполнения которой переменная A меняется значением с переменной B, а переменная C - с переменной D. При решении определите процедуру, осуществляющую обмен значениями двух переменных.

Задание 8

Даны стороны двух треугольников. Найти сумму их периметров и сумму их площадей. Определить процедуры для расчета периметра и площади треугольника по его сторонам.

Задание 9

Найти площадь кольца, внутренний радиус которого равен R1, а внешний - R2. Определить и использовать процедуру вычисления площади круга.

Задание 10

Найти площадь выпуклого четырехугольника, вершины которого заданы своими координатами.

Тема: Практика решения задач. Нахождение суммы, произведения, количества чисел в последовательности, введенной с клавиатуры. Цикл-счетчик.

Рассмотрим следующую задачу. Пусть с клавиатуры вводится последовательность чисел. Признаком конца ввода является ввод числа 0. Требуется написать программу, которая считает количество введенных чисел и их сумму.

PROCEDURE VVOD (Var num: Integer); Begin WRITELN ('Ввести целое число'); READLN (num);

END;

VAR А, Sum, Коl : INTEGER ; BEGIN Sum:=0; Коl:= 0; RЕРЕАТ VVОD(А); Sum:=Sum+А; Коl:=Коl+1; UNTIL А=0; WRITELN('Сумма введеных чисел= ', Sum, ' а количество = ', Коl); END.

В языке программирования Паскаль есть еще одна конструкция цикла, которая введена для удобства пользователей. Это цикл-счетчик, он назван так потому, что выполняется определенное количество раз. Цикл как будто «считает» сколько раз он выполняет необходимые действия.

Формат описания:

FOR <переем. цикла> := < начальное значение> ТО < конечное знач.> DO <инструкция> ;

или

FOR <перем.цикла> := <нач. значение> DOWNTO <кон. значение> DО <инструкция> ;

где <переменная цикла> — переменная типа INTEGER, принимающая значение с начального до конечного с шагом +1 — в случае ТО, -1 — в случае DOWNТО. Значение переменной цикла изменяется автоматически. Изменение ТО на DOWNTO в среде Микропаскаль происходит при нажатии на клавишу пробел;

<начальное значение> — любое целочисленное арифметическое выражение, значение которого является начальным значением переменной цикла;

<конечное значение> — любое целочисленное арифметическое выражение, значение которого является конечным значением параметра цикла;

<инструкция> — действие, повторяемое до тех пор, пока начальное значение переменной цикла не станет больше — в случае ТО (меньше — в случае DOWNТО) конечного значения. Если в цикле необходимо выполнить несколько инструкций, то после служебного слова DО используются операторные скобки ВЕGIN...ЕND.

Значения арифметических выражений вычисляются только один раз при входе в цикл.

Значение переменной цикла нельзя изменять в теле цикла. Несоблюдение этого правила приводит к непредсказуемым последствиям.

Инструкция FOR соответствует циклу с предусловием.

Рассмотрим пример: Нарисуем на экрана компьютера 15 вертикальных разноцветных линий. Расстояние между линиями зададим с клавиатуры (значение в пределах от 10 до 40).

program ex1 ;

program ex1 ;

const N = 15 ;

const N = 15 ;

var

var

STEP : INTEGER ;

STEP : INTEGER ;

procedure IN_DATA ( var PIX : integer ) ;

procedure IN_DATA ( var PIX : integer ) ;

begin

begin

REPEAT

REPEAT

WRITE( ‘Введите число пикселей между линиями от 10 до 40: ’ ) ;

WRITE( ‘Введите число пикселей между линиями от10 до 40: ’ ) ;

READLN( PIX ) ;

READLN( PIX ) ;

IF not((PIX>=10) and (PIX<=40)) THEN

IF not((PIX>=10) and (PIX<=40)) THEN

WRITELN(‘Ошибка при вводе данных’);

WRITELN(‘Ошибка при вводе данных’);

UNTIL (PIX>=10) and (PIX<=40) ;

UNTIL (PIX>=10) and (PIX<=40) ;

end;

end;

procedure PICTURE ( PIX : integer ) ;

procedure PICTURE ( PIX : integer ) ;

var K : integer ;

var K : integer ;

begin

begin

FOR K := 1 TO N DO

K := 1 ;

LINE( KPIX, 0, KPIX , 349, K );

WHILE K <= N DO

end ;

begin

LINE( KPIX, 0, KPIX , 349, K ) ;

K := K + 1 ;

end ;

end ;

begin

begin

IN_DATA ( STEP ) ;

IN_DATA ( STEP ) ;

INITGRAPH ;

INITGRAPH ;

PICTURE ( STEP ) ;

PICTURE ( STEP ) ;

READKEY ;

READKEY ;

CLOSEGRAPH ;

CLOSEGRAPH ;

end.

end.