Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка Паскаль

.pdf
Скачиваний:
101
Добавлен:
30.04.2015
Размер:
592.26 Кб
Скачать
Writeln end;

For i := 1 to n do begin

For j:=1 to m do

Write ( A[i , j] : 3 ); {выводим все элементы i-ой строки массива в одну строку на экране}

{ переводим на экране курсор на следующую строку}

Примеры решаемых задач Пример 1. Составить программу, которая сформирует случайным об-

разом массив из 20 целых чисел и:

а) выведет его в одну строку на экране;

б) выведет элементы массива, стоящие на четных местах и вычислит их сумму;

в) вычислит количество нечетных элементов;

г) упорядочит элементы массива по убыванию.

Программа:

Program М1;

Uses Crt;

Type Numbers = Array [1..20 ] Of Integer; {}

Var A : Numbers;

I, J, S, K , P : Integer;

Begin

Clrscr;

Randomize; { инициализируем датчик случайных чисел }

For I := 1 To 20 Do { заполняем массив А случайными числами от 0

до 99} A [ I ] := Random (100);

{ Задача (а) }

51

Writeln ( ‘Получили массив:’ ); { выводим полученный массив на эк-

ран }

For I := 1 To 20 Do

Write ( A [ I ] : 3 );

Writeln; { переводим курсор в следующую строку экрана }

{ Задача (б) }

Writeln ( ‘Элементы на четных местах: ’ );

S := 0; { Обнулили сумму }

For I := 1 To 20 Do

If I mod 2 = 0 { Если у элемента четный НОМЕР }

Then Begin

Write ( A [ I ] : 3 ); { то выводим его }

S := S + A [ I ] { и накапливаем сумму }

End;

Writeln; { переводим курсор в следующую строку экрана } Writeln (‘ Их сумма ’, S ); { выводим значение суммы }

{ Задача (в) }

K := 0; { Обнулили счетчик нечетных элементов в массиве } For I := 1 To 20 Do

If A [ I ] mod 2 <> 0 { Если ЭЛЕМЕНТ нечетный }

Then K := K + 1; { то увеличиваем значение счетчика } Writeln (‘ Количество нечетных элементов ’, К );

{ выводим значение счетчика }

{Задача (г) }

{Сортируем массив А по убыванию } For I := 1 To 19 Do

For J := I + 1 To 20 Do

If A[ J ] > A[ I ] Then Begin

52

P := A[ I ]; {меняем местами i-ый и j-ый элементы мас-

сива А}

A[ I ] := A[ J ]; { для этого используем переменную p }

A[ J ] := P

End;

Writeln ( ‘Получили массив:’ ); {выводим упорядоченный массив на экран}

For I := 1 To 20 Do

Write ( A [ I ] : 3 );

Readln

End.

Пример 2. Составить программу, которая сформирует случайным об-

разом двумерный массив N x N целых чисел и:

а) выведет его на экран в виде матрицы;

б) выведет элементы массива, стоящие над главной диагональю;

в) вычислит суму элементов, стоящих на побочной диагонали;

г) вычислит суммы столбцов.

Пояснение:

Это главная диагональ

Это побочная диагональ

Если элемент M [i , j] двумерного массива M размера n x n расположен на главной диагонали, то i = j (номер строки равен номеру столбца).

Если элемент M [i , j] двумерного массива M размера n x n расположен на побочной диагонали, то i + j = n + 1 (сумма его индексов равна n + 1).

53

Программа:

Program М2;

Uses Crt;

Type Numbers = Array [1..20, 1..20 ] Of Integer;

{ Тип - двумерный массив 20 х 20 } Var A : Numbers;

N, I, J, S : Integer;

Begin

Clrscr;

Write (‘Введите количество строк и столбцов ’);

Readln( N );

Randomize; { инициализируем датчик случайных чисел } For I := 1 To N Do { Организуем цикл по строкам }

For J := 1 T N Do { Организуем цикл по столбцам }

A [ I,J] := Random (100); { заполняем массив А случайными числами }

{ Задача (а) }

Writeln ( ‘Получили массив:’ ); { выводим массив на экран } For I := 1 To N Do

Begin

For J := 1 To N Do

Write ( A [I , J] : 3 ); {выводим все элементы i-ой строки в од-

ну строку на экране}

Writeln { переводим на экране курсор на следующую строку} End;

{ Задача (б) }

Writeln ( ‘Элементы над главной диагональю:’ );

For I := 1 To N Do

Begin

For J := 1 To N Do

54

If J >= I { Eсли элемент на главной диагонали или над ней, }

Then Write ( A [I , J] : 3 ) { то выводим его}

Else Write(‘ ‘:3); { иначе выводим три пробела } Writeln { переводим на экране курсор на следующую строку}

End;

{ Задача (в) }

S := 0;

For I := 1 To N Do

For J := 1 To N Do

If J + I = N + 1 { Eсли элемент на побочной диагонали } Then S := S + A [I , J]; { то накапливаем сумму }

Writeln ( ‘Сумма элементов побочной диагонали ’, S );

{ Задача (г) }

For J := 1 To N Do { организуем цикл по столбцам }

Begin

S := 0; { обнуляем сумму для каждого столбца }

For I := 1 To N Do { цикл по строкам }

S := S + A [I , J]; { накапливаем сумму элементов столбца } Writeln (‘ Сумма элементов ’, J, ‘ столбца ’, S) { выводим на экран значение суммы }

End;

Readln

End.

Контрольные задания

9.1. Составить программу, которая формирует случайным образом одномерный массив из N элементов и:

a.) выводит те его элементы, которые встречаются только один раз;

55

b.) выводит повторяющиеся элементы (примечание: повторяющийся

элемент должен выводиться один раз независимо от того, сколь-

ко раз он встречается в массиве).

9.2.Составить программу, которая формирует случайным образом два одномерных массива из N элементов и:

a.) выводит элементы первого массива, которые не встречаются во втором;

b.) выводит элементы, встречающиеся как в первом, так и во втором массивах (примечание: элемент должен выводиться один раз не-

зависимо от того, сколько раз он встречается в массивах);

c.) формирует третий массив из элементов, которые встречаются только в одном из массивов.

9.3.Составить программу, которая вводит информацию о сотрудни-

ках (фамилия и стаж работы) и:

a.) выводит список сотрудников, фамилии которых начинаются на заданную букву;

b.) выводит список сотрудников с заданным стажем работы;

c.) выводит список сотрудников, имеющих стаж работы выше сред-

него;

d.) выводит список сотрудников в алфавитном порядке;

e.) выводит список сотрудников в порядке убывания стажа работы.

9.4.Составить программу, которая формирует случайным образом массив NxN целых чисел и:

a.) выводит его в виде матрицы;

b.) вычисляет сумму элементов каждой строки;

c.) находит максимальные элементы каждого столбца; d.) вывод элементы под главной диагональю;

e.) упорядочивает по возрастанию каждую строку массива.

9.5.«Студенты». Составить программу, которая вводит следующую информацию о результатах студенческой сессии:

56

-список студентов,

-список экзаменов,

-оценки студентов за каждый из экзаменов.

Программа должна вывести введенную информацию в виде ведомости. На-

пример:

 

 

Программирование

Психология

Педагогика

Математика

1

Иванов

5

5

5

5

2

Петров

2

3

3

2

3

Сидоров

3

4

5

3

После этого программа должна обработать эту информацию следующим об-

разом:

a.) вывести список студентов, сдавших сессию на повышенные оценки;

b.) вывести список отличников;

c.) вывести список неуспевающих (а также названия предметов, по которым они имеют неудовлетворительные отметки);

d.) вычислить и вывести средний балл каждого студента; e.) вывести список в порядке убывания среднего балла;

f.) определить предмет, по которому студенты учатся хуже всего, и

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

57

Тема 10. Графика в языке Паскаль

Краткое изложение теоретического материала

Для работы в графическом режиме в языке Турбо Паскаль реализованы следующие возможности:

1. Подключение к программе модуля графической библиотеки:

Uses Graph;

2. Инициализация графики:

g1 := detect; { автоопределение типа графического адаптера } InitGraph (g1, g2, ’C:\tp70\BGI’); { инициализация графики }

Устанавливается графический режим с разрешением 640x480 точек.

Графика растровая (точечная). Точка - пиксел.

Переменные g1 и g2 имеют тип Integer. 3. Завершение графического режима:

CloseGraph;

4. Рисование точки с координатами (х, у) цветом с:

PutPixel (x, y, c):

5. Установить цвет фона с:

SetBkColor (c);

6. Установить цвет с для выводимого рисунка:

SetColor (c);

7. Рисование отрезка:

Line (x1, yl, x2, y2);

(xl, y1) и (х2, у2) - координаты концов отрезка.

8. Рисование окружности радиуса r с центром (х, у):

Circle (x, y, r);

9. Рисование прямоугольника со сторонами, параллельными сторонам экрана:

Rectangle (x1, у1, х2, у2);

(xl, y1) и (х2, у2) — координаты любой из диагоналей. 58

10. Закрашивание ограниченной области:

А) установка типа S и цвета С штриховки:

SetFillStyle (s, c);

где 0<=S<= 11 (0 - штриховка цветом фона, т.н. «пустая», 1 - сплошная за-

ливка, прочие значения – различные типы штриховки).

Б) закрашивание области с границей цвета b:

FloodFill (x, y, b);

b- цвет границы (до этого цвета будет "разливаться" краска (штриховка)).

11.Рисование закрашенного прямоугольника:

SetFillStyle (s, c);

 

Ваг(х1, у1, х2, у2);

.

(xl, yl) и (х2, у2) - координаты любой из диагоналей.

12. Рисование параллелепипеда с закрашенной передней гранью:

SetFillStyle (s, c);

Bar3D (xl, yl, x2, y2, d, Top);

(xl, yl) и (х2, у2) - координаты любой диагонали передней грани, d-глубина,

Тор - логический параметр, указывающий, рисовать ли верхнюю грань па-

раллелепипеда: True – рисовать, False - нет. 13. Рисование эллипса или его дуги:

Ellipse (x, y, a1, a2, xr, yr);

(х, у) - координаты центра,

a1 - начальный угол (в градусах),

а2 - конечный угол (в градусах),

хr - радиус по оси X,

уr - радиус по оси Y.

14. Рисование закрашенного сектора эллипса:

SetFillStyle (s, c);

Sector (х, у, а1, a2, xr, yr);

(х, у) - координаты центра,

a1 - начальный угол (в градусах),

59

а2 - конечный угол (в градусах),

хr - радиус по оси X,

уr - радиус по оси Y.

15. Вывод текста на графический экран: A) Установка шрифта:

SetTextStyle (f, d, s);

f - номер шрифта (0 - матричный шрифт 8x8),

d - направление вывода символов (0 - горизонтально, слева направо), s - размер символов.

Б) вывод текста:

OutTextXY (x, y, s);

(х, у) - координаты левого верхнего угла выводимой строки, s – выводимая текстовая строка.

Контрольные задания

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

10.2.Составить программу, которая нарисует на экране мишень из n колец.

10.3.Составить программу, которая нарисует на экране пирамидку из n

уменьшающихся прямоугольников.

10.4. Составить программу, которая нарисует на экране пирамидку из n уве-

личивающихся прямоугольников.

10.5.Составить программу, которая нарисует на экране многоэтажный дом.

10.6.Составить программу, изображающую лодку, плывущую по реке.

10.7.Составить программу, изображающую в центре экрана отрезок длины

L, вращающийся вокруг одного из своих концов.

10.8. Составить программу, изображающую на экране солнышко с n лучи-

ками длины l.

10.9. Составить программу, изображающую на экране снежинку с n лучика-

ми длины l.

10.10.Составить программу построения графика функции:

60