Слайд 1 - сайт учителя информатики

advertisement
Программирование
на языке Паскаль
1.
2.
3.
4.
5.
Массивы
Максимальный
элемент массива
Обработка массивов
Сортировка массивов
Двоичный поиск
 К. Поляков, 2006-2011
6.
7.
8.
9.
Символьные строки
Рекурсивный перебор
Матрицы
Файлы
http://kpolyakov.narod.ru
Программирование
на языке Паскаль
Тема 1. Массивы
 К. Поляков, 2006-2011
http://kpolyakov.narod.ru
Программирование на языке Паскаль. Часть II
3
Массивы
Массив – это группа однотипных элементов,
имеющих общее имя и порядковые номера
(индексы).
Особенности:
• все элементы имеют один тип
• весь массив имеет одно имя
• каждый элемент имеет свой индекс
Примеры:
• список учеников в классе
• квартиры в доме
• школы в городе
• данные о температуре воздуха за год
 К. Поляков, 2006-2011
http://kpolyakov.narod.ru
Программирование на языке Паскаль. Часть II
4
Массивы
A
массив
1
НОМЕР
элемента массива
(ИНДЕКС)
2
5
20
A[1]
A[2]
33
15
15
4
5
10
25
A[3]
A[4]
ЗНАЧЕНИЕ
A[5]
элемента массива
НОМЕР (ИНДЕКС)
элемента массива: 2
A[2]
ЗНАЧЕНИЕ
элемента массива: 20
 К. Поляков, 2006-2011
http://kpolyakov.narod.ru
Программирование на языке Паскаль. Часть II
5
Объявление массивов
Зачем объявлять?
• определить имя массива
• определить тип массива
• определить число элементов
• выделить место в памяти
Массив целых чисел:
имя
начальный
индекс
конечный
индекс
тип
элементов
var A : array[ 1 .. 5 ] of integer ;
 К. Поляков, 2006-2011
http://kpolyakov.narod.ru
Программирование на языке Паскаль. Часть II
6
Объявление массивов
Массивы других типов:
var X, Y: array [1..10] of real;
C: array [1..20] of char;
Другой диапазон индексов:
var Q: array [0..9] of real;
C: array [-5..13] of char;
 К. Поляков, 2006-2011
http://kpolyakov.narod.ru
Программирование на языке Паскаль. Часть II
7
Что неправильно?
var a: array[10..1]
[1..10] of integer;
...
A[5] := 4.5;
var a: array ['a'..'z']
['z'..'a'] of integer;
...
A['B'] := 15;
A['b']
var a: array [0..9] of integer;
...
A[10] := 'X';
 К. Поляков, 2006-2011
http://kpolyakov.narod.ru
Программирование на языке Паскаль. Часть II
8
Массивы
Объявление:
const N = 5;
var a: array[1..N] of integer;
i: integer;
Чтение элементов массива:
for i:=1 to N do read (a[i]);
Поэлементные операции:
for i:=1 to N do a[i]:=a[i]+1;
Вывод на экран:
writeln('Массив A:');
for i:=1 to N do write(a[i], ‘ ‘);
 К. Поляков, 2006-2011
http://kpolyakov.narod.ru
Программирование на языке Паскаль. Часть II
9
Задания
Ввести c клавиатуры массив из N элементов (N<100),
найти среднее арифметическое всех элементов массива.
Пример:
5
4
15
9.200
3
10
14
var a: array[1..100] of integer;
i, n, sum: integer;
sr: real;
begin
read (n); sum:=0;
for i:=1 to n do read (a[i]);
for i:=1 to n do sum := sum + a[i];
sr := sum / n;
write (sr);
end.
 К. Поляков, 2006-2011
http://kpolyakov.narod.ru
Программирование
на языке Паскаль
Тема 2. Максимальный
элемент массива
 К. Поляков, 2006-2011
http://kpolyakov.narod.ru
Программирование на языке Паскаль. Часть II
11
Максимальный элемент
Задача: найти в массиве максимальный элемент.
Алгоритм:
Псевдокод:
?
Почему цикл от i=2?
{ считаем, что первый элемент – максимальный }
for i:=2 to N do
if a[i] > { максимального } then
{ запомнить новый максимальный элемент a[i] }
Программа:
max := a[1];
for i:=2 to N do if a[i] > max then max := a[i];
 К. Поляков, 2006-2011
http://kpolyakov.narod.ru
Программирование на языке Паскаль. Часть II
12
Максимальный элемент
Дополнение: как найти номер максимального элемента?
max := a[1]; { считаем, что первый – максимальный }
iMax := 1;
for i:=2 to N do
{ проверяем все остальные }
if a[i] > max then { нашли новый максимальный }
begin
max := a[i];
{ запомнить a[i] }
iMax := i;
{ запомнить i }
end;
 К. Поляков, 2006-2011
http://kpolyakov.narod.ru
Программирование на языке Паскаль. Часть II
13
Программа
var a: array [1..100] of integer;
n, i, max, k: integer;
begin
read (n);
for i:=1 to n do read (a[i]);
max := a[1];
k := 1;
for i:=2 to n do if a[i] > max then
begin
max := a[i];
k := i;
end;
write(k);
end.
 К. Поляков, 2006-2011
http://kpolyakov.narod.ru
Программирование
на языке Паскаль
Тема 3. Обработка массивов
 К. Поляков, 2006-2011
http://kpolyakov.narod.ru
Программирование на языке Паскаль. Часть II
15
Подсчет элементов
Задача: в прочитанном массиве из N элементов
подсчитать количество нулевых элементов.
Идея: используем переменную-счётчик.
Решение:
1) записать в счётчик ноль
2) просмотреть все элементы массива: если
очередной элемент = 0, то увеличить счётчик на 1
3) вывести значение счётчика
 К. Поляков, 2006-2011
http://kpolyakov.narod.ru
Программирование на языке Паскаль. Часть II
16
Подсчет элементов
var a: array [1..100] of integer;
n, i, count: integer;
begin
read (n);
for i:=1 to N do read (a[i]);
count:= 0;
for i:=1 to N do
if A[i] = 0 then count:= count + 1;
write(count);
end.
 К. Поляков, 2006-2011
http://kpolyakov.narod.ru
Программирование на языке Паскаль. Часть II
17
Сумма выбранных элементов
Задача: в прочитанном массиве из N элементов
подсчитать сумму положительных элементов.
Идея: используем переменную sum для накопления
суммы.
Решение:
1) записать в переменную sum ноль
2) просмотреть все элементы массива: если
очередной элемент > 0, то добавить к сумме этот
элемент
3) вывести значение суммы
sum := sum + a[i]
 К. Поляков, 2006-2011
http://kpolyakov.narod.ru
Программирование на языке Паскаль. Часть II
18
Сумма выбранных элементов
var A: array [1..100] of integer;
n, i, sum: integer;
begin
read (n);
for i:=1 to N do read (a[i]);
sum:= 0;
for i:=1 to N do
if A[i] = 0 then sum:= sum + a[i];
write(sum);
end.
 К. Поляков, 2006-2011
http://kpolyakov.narod.ru
Программирование на языке Паскаль. Часть II
19
Поиск в массиве
Задача – найти в массиве элемент, равный X, или
установить, что его нет.
Алгоритм:
1) начать с 1-ого элемента (i:=1)
2) если очередной элемент (A[i]) равен X, то
закончить поиск иначе перейти к следующему
элементу
 К. Поляков, 2006-2011
http://kpolyakov.narod.ru
Программирование на языке Паскаль. Часть II
20
Поиск элемента в массиве
var a:array[1..100] of integer;
n, i, X: integer;
begin
read (n);
for i:=1 to N do read (a[i]);
i:=1;
while (a[i]<>X) and (i<=n) do i:=i+1;
if i <= N then write(i)
else write('Нет такого');
end.
 К. Поляков, 2006-2011
http://kpolyakov.narod.ru
Программирование на языке Паскаль. Часть II
21
Конец фильма
ПОЛЯКОВ Константин Юрьевич
д.т.н., учитель информатики высшей
категории,
ГОУ СОШ № 163, г. Санкт-Петербург
kpolyakov@mail.ru
 К. Поляков, 2006-2011
http://kpolyakov.narod.ru
Download