Программирование на языке Паскаль. Часть II

Содержание

Слайд 2

Программирование на языке Паскаль Часть II

Тема 1. Массивы

© К.Ю. Поляков, 2006-2007

Программирование на языке Паскаль Часть II Тема 1. Массивы © К.Ю. Поляков, 2006-2007

Слайд 3

Массивы

Массив – это группа однотипных элементов, имеющих общее имя и расположенных в

Массивы Массив – это группа однотипных элементов, имеющих общее имя и расположенных
памяти рядом.
Особенности:
все элементы имеют один тип
весь массив имеет одно имя
все элементы расположены в памяти рядом
Примеры:
список учеников в классе
квартиры в доме
школы в городе
данные о температуре воздуха за год

Слайд 4

Массивы

A

массив

3

15

НОМЕР элемента массива
(ИНДЕКС)

A[1]

A[2]

A[3]

A[4]

A[5]

ЗНАЧЕНИЕ элемента массива

A[2]

НОМЕР (ИНДЕКС) элемента массива: 2

ЗНАЧЕНИЕ элемента массива: 10

Массивы A массив 3 15 НОМЕР элемента массива (ИНДЕКС) A[1] A[2] A[3]

Слайд 5

Объявление массивов

Зачем объявлять?
определить имя массива
определить тип массива
определить число элементов
выделить место в

Объявление массивов Зачем объявлять? определить имя массива определить тип массива определить число
памяти
Массив целых чисел:
Размер через константу:

имя

начальный индекс

конечный индекс

тип
элементов
var A: array[1.. ] of integer;

const N=5;

N

var A : array[ 1 .. 5 ] of integer ;

Слайд 6

Объявление массивов

Массивы других типов:
Другой диапазон индексов:
Индексы других типов:

var X, Y:

Объявление массивов Массивы других типов: Другой диапазон индексов: Индексы других типов: var
array [1..10] of real;
C: array [1..20] of char;

var Q: array [0..9] of real;
C: array [-5..13] of char;

var A: array ['A'..'Z'] of real;
B: array [False..True] of integer;
...
A['C'] := 3.14259*A['B'];
B[False] := B[False] + 1;

Слайд 7

Что неправильно?

var a: array[10..1] of integer;
...
A[5] := 4.5;

[1..10]

var a: array ['z'..'a']

Что неправильно? var a: array[10..1] of integer; ... A[5] := 4.5; [1..10]
of integer;
...
A['B'] := 15;

A['b']

['a'..'z']

var a: array [0..9] of integer;
...
A[10] := 'X';

Слайд 8

Массивы

Объявление:
Ввод с клавиатуры:
Поэлементные операции:
Вывод на экран:

const N = 5;
var a: array[1..N]

Массивы Объявление: Ввод с клавиатуры: Поэлементные операции: Вывод на экран: const N
of integer;
i: integer;

for i:=1 to N do begin
write('a[', i, ']=');
read ( a[i] );
end;

a[1] =
a[2] =
a[3] =
a[4] =
a[5] =

5
12
34
56
13

for i:=1 to N do a[i]:=a[i]*2;

writeln('Массив A:');
for i:=1 to N do write(a[i]:4);

Массив A:
10 24 68 112 26

Слайд 9

Задания

"4": Ввести c клавиатуры массив из 5 элементов, найти среднее арифметическое всех

Задания "4": Ввести c клавиатуры массив из 5 элементов, найти среднее арифметическое
элементов массива.
Пример:
Введите пять чисел:
4 15 3 10 14
среднее арифметическое 9.200
"5": Ввести c клавиатуры массив из 5 элементов, найти минимальный из них.
Пример:
Введите пять чисел:
4 15 3 10 14
минимальный элемент 3

Слайд 10

Программирование на языке Паскаль Часть II

Тема 2. Максимальный элемент массива

© К.Ю. Поляков,

Программирование на языке Паскаль Часть II Тема 2. Максимальный элемент массива © К.Ю. Поляков, 2006-2007
2006-2007

Слайд 11

Максимальный элемент

Задача: найти в массиве максимальный элемент.
Алгоритм:

Псевдокод:

{ считаем, что первый элемент

Максимальный элемент Задача: найти в массиве максимальный элемент. Алгоритм: Псевдокод: { считаем,
– максимальный }
for i:=2 to N do
if a[i] > { максимального } then
{ запомнить новый максимальный элемент a[i] }

Слайд 12

Максимальный элемент

max := a[1]; { считаем, что первый – максимальный }
iMax :=

Максимальный элемент max := a[1]; { считаем, что первый – максимальный }
1;
for i:=2 to N do { проверяем все остальные }
if a[i] > max then { нашли новый максимальный }
begin
max := a[i]; { запомнить a[i] }
iMax := i; { запомнить i }
end;

Дополнение: как найти номер максимального элемента?

По номеру элемента iMax всегда можно найти его значение a[iMax]. Поэтому везде меняем max на a[iMax] и убираем переменную max.

a[iMax]

Слайд 13

Программа

program qq;
const N = 5;
var a: array [1..N] of integer;
i, iMax:

Программа program qq; const N = 5; var a: array [1..N] of
integer;
begin
writeln('Исходный массив:');
for i:=1 to N do begin
a[i] := random(100) + 50;
write(a[i]:4);
end;
iMax := 1; { считаем, что первый – максимальный }
for i:=2 to N do { проверяем все остальные }
if a[i] > a[iMax] then { новый максимальный }
iMax := i; { запомнить i }
writeln; {перейти на новую строку}
writeln('Максимальный элемент a[', iMax, ']=', a[iMax]);
end;

for i:=1 to N do begin
a[i] := random(100) + 50;
write(a[i]:4);
end;

iMax := 1; { считаем, что первый – максимальный }
for i:=2 to N do { проверяем все остальные }
if a[i] > a[iMax] then { новый максимальный }
iMax := i; { запомнить i }

случайные числа в интервале [50,150)

поиск максимального

Слайд 14

Задания

"4": Заполнить массив из 10 элементов случайными числами в интервале [-10..10] и

Задания "4": Заполнить массив из 10 элементов случайными числами в интервале [-10..10]
найти в нем максимальный и минимальный элементы и их номера.
оператор:= random (max-min+1)+min;
Пример:
Исходный массив:
4 -5 3 10 -4 -6 8 -10 1 0
максимальный a[4]=10
минимальный a[8]=-10
"5": Заполнить массив из 10 элементов случайными числами в интервале [-10..10] и найти в нем два максимальных элемента и их номера.
Пример:
Исходный массив:
4 -5 3 10 -4 -6 8 -10 1 0
максимальные a[4]=10, a[7]=8

Слайд 15

uses crt;
const N=10;
var m:array[1..N] of integer;  
i,i_min,i_max:byte; min,max:integer;
begin  

uses crt; const N=10; var m:array[1..N] of integer; i,i_min,i_max:byte; min,max:integer; begin ClrScr;
ClrScr;
randomize;
writeln('Исходный массив:');
for i:=1 to N do
begin
m[i]:=random(20)-10;  
write(m[i],' ');  
end;
max:=m[1];
min:=m[1];
i_min:=1;
i_max:=1;
for i:=1 to N do
begin if m[i]>max then

begin  
max:=m[i];
i_max:=i;
end;  
if m[i]begin
min:=m[i];  
i_min:=i;  
end;  
end;  
writeln;
writeln('Максимальный элемент: ',max,' Его номер: ',i_max);  
writeln('Минимальный элемент: ',min,' Его номер: ',i_min);
readln;
end.

Слайд 16

Программирование на языке Паскаль Часть II

Тема 3. Обработка массивов

© К.Ю. Поляков, 2006-2007

Программирование на языке Паскаль Часть II Тема 3. Обработка массивов © К.Ю. Поляков, 2006-2007

Слайд 17

Реверс массива

Задача: переставить элементы массива в обратном порядке.
Алгоритм:
поменять местами A[1] и A[N],

Реверс массива Задача: переставить элементы массива в обратном порядке. Алгоритм: поменять местами
A[2] и A[N-1], …
Псевдокод:

for i:=1 to N do
{ поменять местами A[i] и A[N+1-i] }

сумма индексов N+1

N div 2

do

Слайд 18

Как переставить элементы?

2

3

1

Задача: поменять местами содержимое двух чашек.

Задача: поменять местами содержимое двух

Как переставить элементы? 2 3 1 Задача: поменять местами содержимое двух чашек.
ячеек памяти.

4

6

?

4

6

4

x

y

c

c := x;
x := y;
y := c;

x := y;
y := x;

3

2

1

Слайд 19

Программа

program qq;
const N = 10;
var A: array[1..N] of integer;
i, c: integer;
begin

Программа program qq; const N = 10; var A: array[1..N] of integer;
{ заполнить массив }
{ вывести исходный массив }
{ вывести полученный массив }
end;

for i:=1 to N div 2 do begin
c:=A[i]; A[i]:=A[N+1-i]; A[N+1-i]:=c;
end;

Слайд 20

Задания

"4": Заполнить массив из 10 элементов случайными числами в интервале [-10..10] и

Задания "4": Заполнить массив из 10 элементов случайными числами в интервале [-10..10]
выполнить инверсию отдельно для 1-ой и 2-ой половин массива.
Пример:
Исходный массив:
4 -5 3 10 -4 -6 8 -10 1 0
Результат:
-4 10 3 -5 4 0 1 -10 8 -6
"5": Заполнить массив из 12 элементов случайными числами в интервале [-12..12] и выполнить инверсию для каждой трети массива.
Пример:
Исходный массив:
4 -5 3 10 -4 -6 8 -10 1 0 5 7
Результат:
10 3 -5 4 -10 8 -6 -4 7 5 0 1

Слайд 21

Циклический сдвиг

Задача: сдвинуть элементы массива влево на 1 ячейку, первый элемент становится

Циклический сдвиг Задача: сдвинуть элементы массива влево на 1 ячейку, первый элемент
на место последнего.
Алгоритм:
A[1]:=A[2]; A[2]:=A[3];… A[N-1]:=A[N];
Цикл:

for i:=1 to N-1 do
A[i]:=A[i+1];

почему не N?

Слайд 22

Программа

program qq;
const N = 10;
var A: array[1..N] of integer;
i, c: integer;
begin

Программа program qq; const N = 10; var A: array[1..N] of integer;
{ заполнить массив }
{ вывести исходный массив }
{ вывести полученный массив }
end;

c := A[1];
for i:=1 to N-1 do A[i]:=A[i+1];
A[N] := c;

Имя файла: Программирование-на-языке-Паскаль.-Часть-II.pptx
Количество просмотров: 29
Количество скачиваний: 0