Разделы презентаций


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

Содержание

Программирование на алгоритмическом языке§ 62. Массивы

Слайды и текст этой презентации

Слайд 1Программирование на алгоритмическом языке
§ 62. Массивы
§ 63. Алгоритмы обработки массивов
§

64. Сортировка
§ 65. Двоичный поиск
§ 66. Символьные строки
§ 67. Матрицы
§

68. Работа с файлами
Программирование на алгоритмическом языке§ 62. Массивы§ 63. Алгоритмы обработки массивов§ 64. Сортировка§ 65. Двоичный поиск§ 66. Символьные

Слайд 2Программирование на алгоритмическом языке
§ 62. Массивы

Программирование на алгоритмическом языке§ 62. Массивы

Слайд 3Что такое массив?
Массив – это группа переменных одного типа, расположенных

в памяти рядом (в соседних ячейках) и имеющих общее имя.

Каждая ячейка в массиве имеет уникальный номер.

Надо:

выделять память
записывать данные в нужную ячейку
читать данные из ячейки

Что такое массив?Массив – это группа переменных одного типа, расположенных в памяти рядом (в соседних ячейках) и

Слайд 4Выделение памяти (объявление)
целтаб A[1:5]
вещтаб V[0:5]
логтаб L[-5:5]
симтаб S[65:90]
минимальный индекс
максимальный индекс
цел

N = 10
целтаб A[1:N]
размер через константу

Выделение памяти (объявление)целтаб A[1:5]вещтаб V[0:5]логтаб L[-5:5]симтаб S[65:90] минимальный индексмаксимальный индексцел N = 10целтаб A[1:N] размер через константу

Слайд 5Что неправильно?
целтаб A [10:1]
...
A[5] := 4.5;
[1:10]
целтаб A[1:10]
...
A[15] := 'a'

Что неправильно?целтаб A [10:1]...A[5] := 4.5;[1:10]целтаб A[1:10]...A[15] := 'a'

Слайд 6Обращение к элементу массива
A
массив
3
15
НОМЕР элемента массива
(ИНДЕКС)
A[1]
A[2]
A[3]
A[4]
A[5]
ЗНАЧЕНИЕ элемента массива
A[2]
НОМЕР (ИНДЕКС) элемента

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

Обращение к элементу массиваAмассив315НОМЕР  элемента массива(ИНДЕКС)A[1]A[2]A[3]A[4]A[5]ЗНАЧЕНИЕ элемента массиваA[2]НОМЕР (ИНДЕКС)  элемента массива: 2ЗНАЧЕНИЕ  элемента массива:

Слайд 7Как обработать все элементы массива?
Объявление:



Обработка:
цел N = 5
целтаб A[1:N]
| обработать

A[1]
| обработать A[2]
| обработать A[3]
| обработать A[4]
| обработать A[5]

Как обработать все элементы массива?Объявление:Обработка:цел N = 5целтаб A[1:N]| обработать A[1]| обработать A[2]| обработать A[3]| обработать A[4]|

Слайд 8Как обработать все элементы массива?
Обработка с переменной:
i:= 1
| обработать A[i]
i:=

i + 1
| обработать A[i]
i:= i + 1
| обработать A[i]
i:=

i + 1
| обработать A[i]
i:= i + 1
| обработать A[i]

i:= i + 1

Обработка в цикле:

i:= 1
нц пока i <= N
| обработать A[i]
i:= i + 1
кц

Цикл с переменной:

нц для i от 1 до N
| обработать A[i]
кц

Как обработать все элементы массива?Обработка с переменной:i:= 1| обработать A[i]i:= i + 1| обработать A[i]i:= i +

Слайд 9Заполнение массива
алг Массив
нач
цел i, N = 10
целтаб A[1:N]

нц для i от 1 до N
A[i]:= i*i

кц
кон
Заполнение массиваалг Массивнач цел i, N = 10 целтаб A[1:N] нц для i от 1 до N

Слайд 10Ввод с клавиатуры и вывод на экран
Объявление:



Ввод с клавиатуры:
Вывод на

экран:
цел N = 5, i
целтаб A[1:N]
нц для i от 1

до N
вывод 'A[',i,']='
ввод A[i]
кц

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

5
12
34
56
13

вывод 'Массив A', нс
нц для i от 1 до N
вывод A[i], ' '
кц

Ввод с клавиатуры и вывод на экранОбъявление:Ввод с клавиатуры:Вывод на экран:цел N = 5, iцелтаб A[1:N]нц для

Слайд 11Заполнение случайными числами
нц для i от 1 до N
A[i]:=

irand(20,100)
вывод A[i], ' '
кц
Задача. Заполнить массив (псевдо)случайными целыми числами

в диапазоне от 20 до 100.
Заполнение случайными числаминц для i от 1 до N A[i]:= irand(20,100) вывод A[i], ' 'кцЗадача. Заполнить массив

Слайд 12Перебор элементов
Общая схема:
нц для i от 1 до N
...

| сделать что-то с A[i]
кц
Подсчёт нужных элементов:
Задача. В массиве записаны

данные о росте баскетболистов. Сколько из них имеет рост больше 180 см, но меньше 190 см?

цел count = 0
нц для i от 1 до N
если 180 < A[i] и A[i] < 190 то
count:= count + 1
все
кц

Перебор элементовОбщая схема:нц для i от 1 до N ... | сделать что-то с A[i]кцПодсчёт нужных элементов:Задача.

Слайд 13Перебор элементов
Среднее арифметическое:
цел count = 0, sum = 0
нц для

i от 1 до N
если 180 < A[i] и

A[i] < 190 то
count:= count + 1
sum:= sum + A[i]
все
кц
вывод sum/count

среднее арифметическое

Перебор элементовСреднее арифметическое:цел count = 0, sum = 0нц для i от 1 до N если 180

Слайд 14Задачи
«A»: Заполните массив случайными числами в интервале [0,100] и найдите

среднее арифметическое его значений.
Пример:
Массив:
1 2 3 4 5
Среднее арифметическое

3.000

«B»: Заполните массив случайными числами в интервале [0,100] и подсчитайте отдельно среднее значение всех элементов, которые <50, и среднее значение всех элементов, которые ≥50.
Пример:
Массив:
3 2 52 4 60
Ср. арифм. элементов [0,50): 3.000
Ср. арифм. элементов [50,100]: 56.000

Задачи«A»: Заполните массив случайными числами в интервале [0,100] и найдите среднее арифметическое его значений. Пример:Массив:1 2 3

Слайд 15Задачи
«C»: Заполните массив из N элементов случайными числами в интервале

[1,N] так, чтобы в массив обязательно вошли все числа от

1 до N (постройте случайную перестановку).
Пример:
Массив:
3 2 1 4 5
Задачи«C»: Заполните массив из N элементов случайными числами в интервале [1,N] так, чтобы в массив обязательно вошли

Слайд 16Программирование на алгоритмическом языке
§ 63. Алгоритмы обработки массивов

Программирование на алгоритмическом языке§ 63. Алгоритмы обработки массивов

Слайд 17Поиск в массиве
Найти элемент, равный X:
i:= 1
нц пока A[i]

X
i:= i + 1
кц
вывод 'A[',i,']=',X
i:= 1
нц пока

и A[i] <> X
i:= i + 1
кц
если i <= N то
вывод 'A[',i,']=',X
иначе вывод 'Не нашли!'
все

i <= N

должно быть первым!

Поиск в массивеНайти элемент, равный X:i:= 1нц пока A[i] X i:= i + 1кцвывод 'A[',i,']=',Xi:= 1нц пока

Слайд 18Поиск в массиве
nX:= 0
нц для i от 1 до N


если A[i] = X то
nX:= i


все
кц
если nX > 0 то
вывод 'A[',i,']=',X
иначе вывод 'Не нашли!'
все

Вариант с досрочным выходом:

выход

досрочный выход из цикла

Поиск в массивеnX:= 0нц для i от 1 до N  если A[i] = X то

Слайд 19Задачи
«A»: Заполните массив случайными числами в интервале [0,5]. Введите число

X и найдите все значения, равные X.
Пример:
Массив:
1 2 3

1 2
Что ищем:
2
Нашли: A[2]=2, A[5]=2
Пример:
Массив:
1 2 3 1 2
Что ищем:
6
Ничего не нашли.
Задачи«A»: Заполните массив случайными числами в интервале [0,5]. Введите число X и найдите все значения, равные X.

Слайд 20Задачи
«B»: Заполните массив случайными числами в интервале [0,5]. Определить, есть

ли в нем элементы с одинаковыми значениями, стоящие рядом.
Пример:
Массив:
1

2 3 3 2 1
Есть: 3
Пример:
Массив:
1 2 3 4 2 1
Нет
Задачи«B»: Заполните массив случайными числами в интервале [0,5]. Определить, есть ли в нем элементы с одинаковыми значениями,

Слайд 21Задачи
«C»: Заполните массив случайными числами. Определить, есть ли в нем

элементы с одинаковыми значениями, не обязательно стоящие рядом.
Пример:
Массив:
3 2 1

3 2 5
Есть: 3, 2
Пример:
Массив:
3 2 1 4 0 5
Нет
Задачи«C»: Заполните массив случайными числами. Определить, есть ли в нем элементы с одинаковыми значениями, не обязательно стоящие

Слайд 22Максимальный элемент
M:= A[1]
нц для i от 2 до N
если

A[i] > M то
M:= A[i]
все
кц
вывод M

Максимальный элементM:= A[1]нц для i от 2 до N если A[i] > M то  M:= A[i]

Слайд 23Максимальный элемент и его номер

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

Слайд 24Задачи
«A»: Заполнить массив случайными числами и найти минимальный и максимальный

элементы массива и их номера.
Пример:
Массив:
1 2 3 4 5
Минимальный

элемент: A[1]=1
Максимальный элемент: A[5]=5

«B»: Заполнить массив случайными числами и найти два максимальных элемента массива и их номера.
Пример:
Массив:
5 5 3 4 1
Максимальный элемент: A[1]=5
Второй максимум: A[2]=5

Задачи«A»: Заполнить массив случайными числами и найти минимальный и максимальный элементы массива и их номера. Пример:Массив:1 2

Слайд 25Задачи
«C»: Введите массив с клавиатуры и найдите (за один проход)

количество элементов, имеющих максимальное значение.
Пример:
Массив:
3 4 5 5 3

4 5
Максимальное значение 5
Количество элементов 3
Задачи«C»: Введите массив с клавиатуры и найдите (за один проход) количество элементов, имеющих максимальное значение. Пример:Массив:3 4

Слайд 26Реверс массива
«Простое» решение:
нц для i от 1 до N
|

поменять местами A[i] и A[N+1-i]
кц
div(N,2)
остановиться на середине!

Реверс массива«Простое» решение:нц для i от 1 до N | поменять местами A[i] и A[N+1-i]кцdiv(N,2)остановиться на середине!

Слайд 27Реверс массива
нц для i от 1 до div(N,2)
c:= A[i]

A[i]:= A[N+1-i]
A[N+1-i]:= c
кц

Реверс массиванц для i от 1 до div(N,2) c:= A[i] A[i]:= A[N+1-i] A[N+1-i]:= cкц

Слайд 28Циклический сдвиг элементов
«Простое» решение:
c:= A[1]
нц для i от 1 до

N-1
A[i]:= A[i+1]
кц
A[N]:= c

Циклический сдвиг элементов«Простое» решение:c:= A[1]нц для i от 1 до N-1 A[i]:= A[i+1]кцA[N]:= c

Слайд 29Задачи
«A»: Заполнить массив случайными числами и выполнить циклический сдвиг элементов

массива вправо на 1 элемент.
Пример:
Массив:
1 2 3 4 5

6
Результат:
6 1 2 3 4 5

«B»: Массив имеет четное число элементов. Заполнить массив случайными числами и выполнить реверс отдельно в первой половине и второй половине.
Пример:
Массив:
1 2 3 4 5 6
Результат:
3 2 1 6 5 4

Задачи«A»: Заполнить массив случайными числами и выполнить циклический сдвиг элементов массива вправо на 1 элемент. Пример:Массив:1 2

Слайд 30Задачи
«C»: Заполнить массив случайными числами в интервале [-100,100] и переставить

элементы так, чтобы все положительные элементы стояли в начала массива,

а все отрицательные и нули – в конце. Вычислите количество положительных элементов.
Пример:
Массив:
20 -90 15 -34 10 0
Результат:
20 15 10 -90 -34 0
Количество положительных элементов: 3
Задачи«C»: Заполнить массив случайными числами в интервале [-100,100] и переставить элементы так, чтобы все положительные элементы стояли

Слайд 31Отбор нужных элементов
«Простое» решение:
Задача. Отобрать элементы массива A, удовлетворяющие некоторому

условию, в массив B.
нц для i от 1 до N

если условие выполняется для A[i] то
B[i]:= A[i]
все
кц

A

B

выбрать чётные элементы

Отбор нужных элементов«Простое» решение:Задача. Отобрать элементы массива A, удовлетворяющие некоторому условию, в массив B.нц для i от

Слайд 32Отбор нужных элементов
A
B
выбрать чётные элементы
count:= 0 | счётчик
нц для i

от 1 до N
если mod(A[i],2) = 0 то

count:= count + 1

все
кц

B[count]:= A[i]

Отбор нужных элементовABвыбрать чётные элементыcount:= 0 | счётчикнц для i от 1 до N если mod(A[i],2) =

Слайд 33Задачи
«A»: Заполнить массив случайными числами в интервале [-10,10] и отобрать

в другой массив все чётные отрицательные числа.
Пример:
Массив А:
-5 6 7

-4 -6 8 -8
Массив B:
-4 -6 -8

«B»: Заполнить массив случайными числами в интервале [0,100] и отобрать в другой массив все простые числа. Используйте логическую функцию, которая определяет, является ли переданное ей число простым.
Пример:
Массив А:
12 13 85 96 47
Массив B:
13 47

Задачи«A»: Заполнить массив случайными числами в интервале  [-10,10] и отобрать в другой массив все чётные отрицательные

Слайд 34Задачи
«C»: Заполнить массив случайными числами и отобрать в другой массив

все числа Фибоначчи. Используйте логическую функцию, которая определяет, является ли

переданное ей число числом Фибоначчи.
Пример:
Массив А:
12 13 85 34 47
Массив B:
13 34
Задачи«C»: Заполнить массив случайными числами и отобрать в другой массив все числа Фибоначчи. Используйте логическую функцию, которая

Слайд 35Программирование на алгоритмическом языке
§ 64. Сортировка

Программирование на алгоритмическом языке§ 64. Сортировка

Слайд 36Что такое сортировка?
Сортировка – это расстановка элементов массива в заданном

порядке.
…по возрастанию, убыванию, последней цифре, сумме делителей, по алфавиту, …
Алгоритмы:
простые

и понятные, но неэффективные для больших массивов
метод пузырька
метод выбора
сложные, но эффективные
«быстрая сортировка» (QuickSort)
сортировка «кучей» (HeapSort)
сортировка слиянием (MergeSort)
пирамидальная сортировка
Что такое сортировка?Сортировка – это расстановка элементов массива в заданном порядке.…по возрастанию, убыванию, последней цифре, сумме делителей,

Слайд 37Метод пузырька (сортировка обменами)
Идея: пузырек воздуха в стакане воды поднимается

со дна вверх.
Для массивов – самый маленький («легкий» элемент

перемещается вверх («всплывает»).

сравниваем два соседних элемента; если они стоят «неправильно», меняем их местами
за 1 проход по массиву один элемент (самый маленький) становится на свое место

1-й проход:

Метод пузырька (сортировка обменами)Идея: пузырек воздуха в стакане воды поднимается со дна вверх. Для массивов – самый

Слайд 38Метод пузырька
2-й проход:
3-й проход:
4-й проход:

Метод пузырька2-й проход:3-й проход:4-й проход:

Слайд 39Метод пузырька
1-й проход:
нц для j от N-1 до 1 шаг

-1
если A[j+1]< A[j] то
| поменять местами A[j]

и A[j+1]
все
кц

2-й проход:

нц для j от N-1 до шаг -1
если A[j+1]< A[j] то
| поменять местами A[j] и A[j+1]
все
кц

2

единственное отличие!

Метод пузырька1-й проход:нц для j от N-1 до 1 шаг -1 если A[j+1]< A[j] то  |

Слайд 40Метод пузырька
нц для i от 1 до N-1
нц

для j от N-1 до шаг -1
если

A[j+1]< A[j] то
| поменять местами A[j] и A[j+1]
все
кц
кц

i

Метод пузырьканц для i от 1 до N-1  нц для j от N-1 до  шаг

Слайд 41Задачи
«A»: Напишите программу, в которой сортировка выполняется «методом камня» –

самый «тяжёлый» элемент опускается в конец массива.
«B»: Напишите вариант метода

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

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

Задачи«A»: Напишите программу, в которой сортировка выполняется «методом камня» – самый «тяжёлый» элемент опускается в конец массива.«B»:

Слайд 42Метод выбора (минимального элемента)
Идея: найти минимальный элемент и поставить его

на первое место.
нц для i от 1 до N-1


| найти номер nMin минимального элемента | из A[i]..A[N]
если i <> nMin то
| поменять местами A[i] и A[nMin]
все
кц
Метод выбора (минимального элемента)Идея: найти минимальный элемент и поставить его на первое место. нц для i от

Слайд 43Метод выбора (минимального элемента)
нц для i от 1 до N-1









если i nMin то
| поменять местами

A[i] и A[nMin]
все
кц

nMin:= i
нц для j от i+1 до N
если A[j] < A[nMin] то
nMin:= j
все
кц

Метод выбора (минимального элемента)нц для i от 1 до N-1  если i nMin то  |

Слайд 44Задачи
«A»: Массив содержит четное количество элементов. Напишите программу, которая сортирует

первую половину массива по возрастанию, а вторую – по убыванию.

Каждый элемент должен остаться в «своей» половине.
Пример:
Массив:
5 3 4 2 1 6 3 2
После сортировки:
2 3 4 5 6 3 2 1
Задачи«A»: Массив содержит четное количество элементов. Напишите программу, которая сортирует первую половину массива по возрастанию, а вторую

Слайд 45Задачи
«B»: Напишите программу, которая сортирует массив и находит количество различных

чисел в нем.
Пример:
Массив:
5 3 4 2 1 6 3

2 4
После сортировки:
1 2 2 3 3 4 4 5 6
Различных чисел: 5

«C»: Напишите программу, которая сравнивает число перестановок элементов при использовании сортировки «пузырьком» и методом выбора. Проверьте ее на разных массивах, содержащих 1000 случайных элементов, вычислите среднее число перестановок для каждого метода.

Задачи«B»: Напишите программу, которая сортирует массив и находит количество различных чисел в нем. Пример:Массив:5 3 4 2

Слайд 46Быстрая сортировка (QuickSort)
Идея: выгоднее переставлять элементы, который находятся дальше друг

от друга.

Быстрая сортировка (QuickSort)Идея: выгоднее переставлять элементы, который находятся дальше друг от друга.

Слайд 47Быстрая сортировка
Шаг 2: переставить элементы так:

при сортировке элементы

не покидают « свою область»!
Шаг 1: выбрать некоторый элемент массива

X

Шаг 3: так же отсортировать две получившиеся области

Разделяй и властвуй (англ. divide and conquer)

Медиана – такое значение X, что слева и справа от него в отсортированном массиве стоит одинаковое число элементов (для этого надо отсортировать массив…).

Быстрая сортировкаШаг 2: переставить элементы так:   при сортировке элементы не покидают « свою область»!Шаг 1:

Слайд 48Быстрая сортировка
Разделение:
выбрать средний элемент массива (X=67)


установить L:=1, R:=N
увеличивая L,

найти первый элемент A[L], который >= X (должен стоять справа)
уменьшая

R, найти первый элемент A[R], который <= X (должен стоять слева)
если L<=R то поменять местами A[L] и A[R] и перейти к п. 3 иначе стоп.
Быстрая сортировкаРазделение: выбрать средний элемент массива (X=67)установить L:=1, R:=Nувеличивая L, найти первый элемент A[L],  который >=

Слайд 49Быстрая сортировка

Быстрая сортировка

Слайд 50Быстрая сортировка
цел N = 7
целтаб A[1:N]
алг Быстрая сортировка
нач
| заполнить

массив
qSort(1, N) | сортировка
| вывести результат
кон


Основная программа:

глобальные данные

Быстрая сортировкацел N = 7целтаб A[1:N]алг Быстрая сортировканач | заполнить массив  qSort(1, N) | сортировка

Слайд 51Быстрая сортировка
алг qSort(цел nStart, nEnd)
нач
цел L, R, c, X

если nStart >= nEnd то выход все
L:= nStart; R:=

nEnd
X:= A[div(L+R,2)] | или X:= A[irand(L,R)]
нц пока L <= R | разделение
нц пока A[L] < X; L:= L + 1 кц
нц пока A[R] > X; R:= R - 1 кц
если L <= R то
c:= A[L]; A[L]:= A[R]; A[R]:= c
L:= L+1; R:= R-1
все
кц
qSort(nStart, R) | рекурсивные вызовы
qSort(L, nEnd)
кон
Быстрая сортировкаалг qSort(цел nStart, nEnd)нач цел L, R, c, X если nStart >= nEnd то выход все

Слайд 52Быстрая сортировка
Сортировка массива случайных значений:

Быстрая сортировкаСортировка массива случайных значений:

Слайд 53Задачи
«A»: Массив содержит четное количество элементов. Напишите программу, которая сортирует

по возрастанию отдельно элементы первой и второй половин массива. Каждый

элемент должен остаться в «своей» половине. Используйте алгоритм быстрой сортировки.
Пример:
Массив:
5 3 4 2 1 6 3 2
После сортировки:
2 3 4 5 6 3 2 1
Задачи«A»: Массив содержит четное количество элементов. Напишите программу, которая сортирует по возрастанию отдельно элементы первой и второй

Слайд 54Задачи
«B»: Напишите программу, которая сортирует массив и находит количество различных

чисел в нем. Используйте алгоритм быстрой сортировки.
Пример:
Массив:
5 3 4 2

1 6 3 2 4
После сортировки:
1 2 2 3 3 4 4 5 6
Различных чисел: 5
Задачи«B»: Напишите программу, которая сортирует массив и находит количество различных чисел в нем. Используйте алгоритм быстрой сортировки.Пример:Массив:5

Слайд 55Задачи
«C»: Напишите программу, которая сравнивает число перестановок элементов при использовании

сортировки «пузырьком», методом выбора и алгоритма быстрой сортировки. Проверьте ее

на разных массивах, содержащих 1000 случайных элементов, вычислите среднее число перестановок для каждого метода.

«D»: Попробуйте построить массив из 10 элементов, на котором алгоритм быстрой сортировки показывает худшую эффективность (наибольшее число перестановок). Сравните это количество перестановок с эффективностью метода пузырька (для того же массива).

Задачи«C»: Напишите программу, которая сравнивает число перестановок элементов при использовании сортировки «пузырьком», методом выбора и алгоритма быстрой

Слайд 56Программирование на алгоритмическом языке
§ 65. Двоичный поиск

Программирование на алгоритмическом языке§ 65. Двоичный поиск

Слайд 57Двоичный поиск
X = 7
X < 8
8
4
X > 4
6
X > 6
Выбрать

средний элемент A[c] и сравнить с X.
Если X = A[c],

то нашли (стоп).
Если X < A[c], искать дальше в первой половине.
Если X > A[c], искать дальше во второй половине.
Двоичный поискX = 7X < 884X > 46X > 6Выбрать средний элемент A[c] и сравнить с X.Если

Слайд 58Двоичный поиск
X = 44

Двоичный поискX = 44

Слайд 59Двоичный поиск
цел L, R, c
L:= 1; R:= N + 1

| начальный диапазон
нц пока L < R-1

c:= div(L+R,2) | нашли середину
если X < A[c] то
R:= c | изменить диапазон
иначе L:= c
все
кц
если A[L] = X то
вывод 'A[',L,']=',X
иначе вывод 'Не нашли!'
все
Двоичный поискцел L, R, cL:= 1; R:= N + 1  | начальный диапазон  нц пока

Слайд 60Двоичный поиск
скорость выше, чем при линейном поиске
нужна предварительная сортировка
Число сравнений:

Двоичный поискскорость выше, чем при линейном поискенужна предварительная сортировкаЧисло сравнений:

Слайд 61Задачи
«A»: Заполнить массив случайными числами и отсортировать его. Ввести число

X. Используя двоичный поиск, определить, есть ли в массиве число,

равное X. Подсчитать количество сравнений.
Пример:
Массив:
1 4 7 3 9 2 4 5 2
После сортировки:
1 2 2 3 4 4 5 7 9
Введите число X:
2
Число 2 найдено.
Количество сравнений: 2
Задачи«A»: Заполнить массив случайными числами и отсортировать его. Ввести число X. Используя двоичный поиск, определить, есть ли

Слайд 62Задачи
«B»: Заполнить массив случайными числами и отсортировать его. Ввести число

X. Используя двоичный поиск, определить, сколько чисел, равных X, находится

в массиве.
Пример:
Массив:
1 4 7 3 9 2 4 5 2
После сортировки:
1 2 2 3 4 4 5 7 9
Введите число X:
4
Число 4 встречается 2 раз(а).
Пример:
Массив:
1 4 7 3 9 2 4 5 2
После сортировки:
1 2 2 3 4 4 5 7 9
Введите число X:
14
Число 14 не встречается.
Задачи«B»: Заполнить массив случайными числами и отсортировать его. Ввести число X. Используя двоичный поиск, определить, сколько чисел,

Слайд 63Задачи
«C»: Заполнить массив случайными числами и ввести число и отсортировать

его. Ввести число X. Используя двоичный поиск, определить, есть ли

в массиве число, равное X. Если такого числа нет, вывести число, ближайшее к X.
Пример:
Массив:
1 4 7 3 9 2 4 5 2
После сортировки:
1 2 2 3 4 4 5 12 19
Введите число X:
12
Число 12 найдено.
Пример:
Массив:
1 4 7 3 9 2 4 5 2
После сортировки:
1 2 2 3 4 4 5 12 19
Введите число X:
11
Число 11 не найдено. Ближайшее число 12.
Задачи«C»: Заполнить массив случайными числами и ввести число и отсортировать его. Ввести число X. Используя двоичный поиск,

Слайд 64Программирование на алгоритмическом языке
§ 66. Символьные строки

Программирование на алгоритмическом языке§ 66. Символьные строки

Слайд 65Зачем нужны символьные строки?
симтаб s[1:80] | массив символов
элементы массива –

отдельные объекты
сложно работать со строками переменной длины
Хочется:
строка – единый объект
длина

строки может меняться во время работы программы

лит s | символьная строка

литерный тип

Зачем нужны символьные строки?симтаб s[1:80] | массив символовэлементы массива – отдельные объектысложно работать со строками переменной длиныХочется:строка

Слайд 66Символьные строки
Присваивание:
s:= 'Вася пошёл гулять'
Ввод с клавиатуры:
ввод s
Вывод на экран:
вывод

s
Отдельный символ:
s[4]:= 'a'
Длина строки:
цел n
n:= длин(s)
лит s

Символьные строкиПрисваивание:s:= 'Вася пошёл гулять'Ввод с клавиатуры:ввод sВывод на экран:вывод sОтдельный символ:s[4]:= 'a'Длина строки:цел nn:= длин(s)лит s

Слайд 67Символьные строки
алг Замена а на б
нач
лит s


вывод 'Введите строку: '
ввод s
цел i


нц для i от 1 до длин(s)
если s[i] = 'а' то
s[i]:= 'б'
все
кц
вывод s
кон

Задача: заменить в строке все буквы 'а' на буквы 'б'.

Символьные строкиалг Замена а на б нач  лит s  вывод 'Введите строку: ' ввод s

Слайд 68Задачи
«A»: Ввести с клавиатуры символьную строку и заменить в ней

все буквы «а» на «б» и все буквы «б» на

«а» (заглавные на заглавные, строчные на строчные).
Пример:
Введите строку:
ааббААББссСС
Результат:
ббааББААссСС
Задачи«A»: Ввести с клавиатуры символьную строку и заменить в ней все буквы «а» на «б» и все

Слайд 69Задачи
«B»: Ввести с клавиатуры символьную строку и определить, сколько в

ней слов. Словом считается последовательности непробельных символов, отделенная с двух

сторон пробелами (или стоящая с краю строки). Слова могут быть разделены несколькими пробелами, в начале и в конце строки тоже могут быть пробелы.
Пример:
Введите строку:
Вася пошел гулять
Найдено слов: 3
Задачи«B»: Ввести с клавиатуры символьную строку и определить, сколько в ней слов. Словом считается последовательности непробельных символов,

Слайд 70Задачи
«C»: Ввести с клавиатуры символьную строку и найдите самое длинное

слово и его длину. Словом считается последовательности непробельных символов, отделенная

с двух сторон пробелами (или стоящая с краю строки). Слова могут быть разделены несколькими пробелами, в начале и в конце строки тоже могут быть пробелы.
Пример:
Введите строку:
Вася пошел гулять
Самое длинное слово: гулять, длина 6
Задачи«C»: Ввести с клавиатуры символьную строку и найдите самое длинное слово и его длину. Словом считается последовательности

Слайд 71Операции со строками
Объединение (конкатенация) :
s1:= 'Привет'
s2:= 'Вася'
s :=

s1 + ', ' + s2 + '!'
'Привет, Вася!'
Срез:
s:=

'123456789'
s1:= s[3:7] | '34567'

с какого символа

до какого символа

Операции со строкамиОбъединение (конкатенация) :s1:= 'Привет' s2:= 'Вася' s := s1 + ', ' + s2 +

Слайд 72Операции со строками
Вставка:
s:= '123456789'
вставить('ABC', s, 3) | '12ABC3456789'
что
куда
с какого символа
Удаление:
s:=

'123456789'
удалить(s, 3, 6) | '129'
с какого символа
сколько символов

Операции со строкамиВставка:s:= '123456789'вставить('ABC', s, 3) | '12ABC3456789'чтокудас какого символаУдаление:s:= '123456789'удалить(s, 3, 6) | '129'с какого символасколько

Слайд 73Поиск в строках
s:= 'Здесь был Вася.'

n:= позиция('с', s)
если n >

0 то
вывод 'Номер символа ', n
иначе
вывод 'Символ

не найден.'
все

что

где

Поиск в строкахs:= 'Здесь был Вася.'n:= позиция('с', s)если n > 0 то вывод 'Номер символа ', nиначе

Слайд 74Пример обработки строк
Задача: Ввести имя, отчество и фамилию. Преобразовать их

к формату «фамилия-инициалы».
Пример:
Введите имя, отчество и фамилию:

Василий Алибабаевич Хрюндиков
Результат:
Хрюндиков В.А.

Алгоритм:
найти первый пробел и выделить имя
удалить имя с пробелом из основной строки
найти первый пробел и выделить отчество
удалить отчество с пробелом из основной строки
«сцепить» фамилию, первые буквы имени и фамилии, точки, пробелы…

Алибабаевич Хрюндиков

Хрюндиков

Хрюндиков В.А.

Пример обработки строкЗадача: Ввести имя, отчество и фамилию. Преобразовать их к формату «фамилия-инициалы».  Пример:	 Введите имя,

Слайд 75Пример обработки строк
алг FIO
нач
лит s, name, name2
цел n

вывод 'Введите имя, отчество и фамилию'

ввод s
n:= позиция(' ', s);
name:= s[1:n-1] | вырезать имя
удалить(s, 1, n)
n:= позиция(' ', s)
name2:= s[1:n-1] | вырезать отчество
удалить(s, 1, n) | осталась фамилия
s:= s + ' ' + name[1] + '.' + name2[1] + '.'
вывод s
кон
Пример обработки строкалг FIOнач лит s, name, name2 цел n вывод 'Введите имя, отчество и фамилию'

Слайд 76Задачи
«A»: Ввести с клавиатуры в одну строку фамилию, имя и

отчество, разделив их пробелом. Вывести фамилию и инициалы.
Пример:
Введите фамилию, имя

и отчество:
Иванов Петр Семёнович
П.С. Иванов
Задачи«A»: Ввести с клавиатуры в одну строку фамилию, имя и отчество, разделив их пробелом. Вывести фамилию и

Слайд 77Задачи
«B»: Ввести адрес файла и «разобрать» его на части, разделенные

знаком '/'. Каждую часть вывести в отдельной строке.
Пример:
Введите адрес файла:
C:/Фото/2013/Поход/vasya.jpg
C:
Фото
2013
Поход
vasya.jpg

Задачи«B»: Ввести адрес файла и «разобрать» его на части, разделенные знаком '/'. Каждую часть вывести в отдельной

Слайд 78Задачи
«C»: Напишите программу, которая заменяет во всей строке одну последовательность

символов на другую.
Пример:
Введите строку:
(X > 0) and (Y < X)

and (Z > Y) and (Z <> 5)
Что меняем: and
Чем заменить: &
Результат
(X > 0) & (Y < X) & (Z > Y) & (Z <> 5)
Задачи«C»: Напишите программу, которая заменяет во всей строке одну последовательность символов на другую.Пример:Введите строку:(X > 0) and

Слайд 79Преобразования «строка» – «число»
Из строки в число:
s:= '123'
N:= лит_в_цел(s,

OK) | N = 123
если не OK то вывод

'Ошибка!' все
s:= '123.456';
X:= лит_в_вещ(s, OK) | X = 123.456
если не OK то вывод 'Ошибка!' все

Из числа в строку:

N:= 123
s:= цел_в_лит(N) | '123'
X:= 123.456
s:= вещ_в_лит(X) | '123.456'


цел N, вещ X, лит s, лог OK

да или нет

Преобразования «строка» – «число» Из строки в число:s:= '123'N:= лит_в_цел(s, OK) | N = 123 если не

Слайд 80Задачи
«A»: Напишите программу, которая вычисляет сумму трех чисел, введенную в

форме символьной строки. Все числа целые.
Пример:
Введите выражение:
12+3+45
Ответ: 60
«B»: Напишите программу,

которая вычисляет выражение, состоящее из трех чисел и двух знаков (допускаются только знаки «+» или «–»). Выражение вводится как символьная строка, все числа целые.
Пример:
Введите выражение:
12-3+45
Ответ: 54
Задачи«A»: Напишите программу, которая вычисляет сумму трех чисел, введенную в форме символьной строки. Все числа целые.Пример:Введите выражение:12+3+45Ответ:

Слайд 81Задачи
«C»: Напишите программу, которая вычисляет выражение, состоящее из трех чисел

и двух знаков (допускаются знаки «+», «–», «*» и «/»).

Выражение вводится как символьная строка, все числа целые. Операция «/» выполняется как целочисленное деление (div).
Пример:
Введите выражение:
12*3+45
Ответ: 81
Задачи«C»: Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков (допускаются знаки «+», «–»,

Слайд 82Задачи
«D»: Напишите программу, которая вычисляет выражение, состоящее из трех чисел

и двух знаков (допускаются знаки «+», «–», «*» и «/»)

и круглых скобок. Выражение вводится как символьная строка, все числа целые. Операция «/» выполняется как целочисленное деление (div).
Пример:
Введите выражение:
2*(3+45)+4
Ответ: 100
Задачи«D»: Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков (допускаются знаки «+», «–»,

Слайд 83Строки в процедурах и функциях
Задача: построить процедуру, которая заменяет в

строке s все вхождения слова-образца wOld на слово-замену wNew.
нц пока

| слово wOld есть в строке s
| удалить слово wOld из строки
| вставить на это место слово wNew
кц

wOld: '12'
wNew: 'A12B'

зацикливание

Строки в процедурах и функцияхЗадача: построить процедуру, которая заменяет в строке s все вхождения слова-образца wOld на

Слайд 84Замена всех экземпляров подстроки

Замена всех экземпляров подстроки

Слайд 85Замена всех экземпляров подстроки
алг Замена всех
нач
лит s = '12.12.12'

replaceAll(s, '12', 'A12B')
вывод s
кон

Замена всех экземпляров подстрокиалг Замена всехнач лит s = '12.12.12' replaceAll(s, '12', 'A12B') вывод sкон

Слайд 86Замена всех экземпляров подстроки
алг replaceAll(аргрез лит s, арг лит wOld,

wNew)
нач
лит res; цел p, len
len:= длин(wOld)
res:= ''

нц пока длин(s) > 0
p:= позиция(wOld, s)
если p = 0 то res:= res + s; выход все
если p > 1 то res:= res + s[1:p-1] все
res:= res + wNew
если p+len > длин(s) то
s:= ''
иначе s:= s[p+len:длин(s)]
все
кц
s:= res
кон

найти слово wOld

не нашли…

добавить то, что перед ним

добавить wNew

взять «хвост»

Замена всех экземпляров подстрокиалг replaceAll(аргрез лит s, арг лит wOld, wNew)нач лит res; цел p, len len:=

Слайд 87Замена: из процедуры в функцию
алг Замена всех
нач
лит s =

'12.12.12'
s:= replaceAll(s, '12', 'A12B')
вывод s
кон
алг лит replaceAll(лит s0,

wOld, wNew)
нач
лит s
s:= s0
... | тело процедуры
знач:= res
кон
Замена: из процедуры в функциюалг Замена всехнач лит s = '12.12.12' s:= replaceAll(s, '12', 'A12B') вывод sконалг

Слайд 88Задачи
«A»: Напишите функцию, которая возвращает первое слово переданной ей символьной

строки.
Пример:
Введите строку: Однажды в студёную зимнюю пору...
Первое слово: Однажды

Задачи«A»: Напишите функцию, которая возвращает первое слово переданной ей символьной строки. Пример:Введите строку: Однажды в студёную зимнюю

Слайд 89Задачи
«B»: Напишите функцию, которая заменяет расширение файла на заданное новое

расширение.
Пример:
Введите имя файла: qq
Введите новое расширение: tmp
Результат: qq.tmp
Пример:
Введите имя

файла: qq.exe
Введите новое расширение: tmp
Результат: qq.tmp
Пример:
Введите имя файла: qq.work.xml
Введите новое расширение: tmp
Результат: qq.work.tmp

Задачи«B»: Напишите функцию, которая заменяет расширение файла на заданное новое расширение. Пример:Введите имя файла: qqВведите новое расширение:

Слайд 90Задачи
«C»: Напишите функцию, которая заменяет во всей строке все римские

числа на соответствующие десятичные числа.
Пример:
Введите строку:
В MMXIII году в

школе CXXIII состоялся очередной выпуск XI классов.
Результат:
В 2013 году в школе 123 состоялся очередной выпуск 11 классов.
Задачи«C»: Напишите функцию, которая заменяет во всей строке все римские числа на соответствующие десятичные числа. Пример:Введите строку:В

Слайд 91Рекурсивный перебор
Задача. В алфавите языке племени «тумба-юмба» четыре буквы: «Ы»,

«Ш», «Ч» и «О». Нужно вывести на экран все слова,

состоящие из K букв, которые можно построить из букв этого алфавита.

перебор K-1 символов

задача для слов длины К сведена к задаче для слов длины К-1!

Рекурсивный переборЗадача. В алфавите языке племени «тумба-юмба» четыре буквы: «Ы», «Ш», «Ч» и «О». Нужно вывести на

Слайд 92Рекурсивный перебор
алг перебор К символов
нач
w[1]:='Ы'
|

перебор последних K-1 символов
w[1]:='Ш'
| перебор последних K-1

символов
w[1]:='Ч'
| перебор последних K-1 символов
w[1]:='О'
| перебор последних K-1 символов
кон
Рекурсивный переборалг перебор К символовнач   w[1]:='Ы'  | перебор последних K-1 символов w[1]:='Ш'  |

Слайд 93Рекурсивный перебор
алг ЫШЧО
нач
лит word = '...'; | из

K символов
TumbaWords('ЫШЧО', word, 0)
кон
алг TumbaWords(лит A, w0, цел N)
нач

если N = длин(w0) то | слово построено
вывод w0, нс
выход
все
цел i; лит w
w:= w0
нц для i от 1 до длин(A)
w[N+1]:= A[i]
TumbaWords(A, w, N+1) | рекурсия
кц
кон

уже установлено

когда все символы уже установлены

по всем символам алфавита

алфавит

слово

Рекурсивный переборалг ЫШЧО нач лит word = '...'; | из K символов TumbaWords('ЫШЧО', word, 0)коналг TumbaWords(лит A,

Слайд 94Задачи
«A»: В алфавите языке племени «тумба-юмба» четыре буквы: «Ы», «Ш»,

«Ч» и «О». Нужно вывести на экран все возможные слова,

состоящие из K букв, в которых вторая буква «Ы». Подсчитайте количество таких слов.

«B»: В алфавите языке племени «тумба-юмба» четыре буквы: «Ы», «Ш», «Ч» и «О». Нужно вывести на экран все возможные слова, состоящие из K букв, в которых есть по крайней мере две одинаковые буквы, стоящие рядом. Подсчитайте количество таких слов. Программа не должна строить другие слова, не соответствующие условию.

Задачи«A»: В алфавите языке племени «тумба-юмба» четыре буквы: «Ы», «Ш», «Ч» и «О». Нужно вывести на экран

Слайд 95Задачи
«C»: В алфавите языке племени «тумба-юмба» четыре буквы: «Ы», «Ш»,

«Ч» и «О». Нужно вывести на экран все возможные слова,

состоящие из K букв, в которых есть по крайней мере две одинаковые буквы, не обязательно стоящие рядом. Программа не должна строить другие слова, не соответствующие условию.
Задачи«C»: В алфавите языке племени «тумба-юмба» четыре буквы: «Ы», «Ш», «Ч» и «О». Нужно вывести на экран

Слайд 96Сравнение строк
Сравнение по кодам символов:

Сравнение строкСравнение по кодам символов:

Слайд 97Сравнение строк
5STEAM 

Сравнение строк5STEAM 

Слайд 98Сортировка строк
алг Сортировка строк
нач
цел i, j, N = 10

литтаб S[1:N]
лит s1
нц для i от 1 до

N
ввод S[i]
кц
...
нц для i от 1 до N
вывод S[i], нс
кц
кон

нц для i от 1 до N-1
нц для j от N-1 до i шаг -1
если S[j+1] < S[j] то
s1:= S[j]
S[j]:= S[j+1]
S[j+1]:= s1
все
кц
кц

массив строк

Сортировка строкалг Сортировка строкнач цел i, j, N = 10 литтаб S[1:N] лит s1 нц для i

Слайд 99Задачи
«A»: Вводится 5 строк, в которых сначала записан порядковый номер

строки с точкой, а затем – слово. Вывести слова в

алфавитном порядке.
Пример:
Введите 5 строк:
1. тепловоз
2. арбуз
3. бурундук
4. кефир
5. урядник
Список слов в алфавитном порядке:
арбуз, бурундук, кефир, тепловоз, урядник
Задачи«A»: Вводится 5 строк, в которых сначала записан порядковый номер строки с точкой, а затем – слово.

Слайд 100Задачи
«B»: Вводится несколько строк (не более 20), в которых сначала

записан порядковый номер строки с точкой, а затем – слово.

Ввод заканчивается пустой строкой. Вывести введённые слова в алфавитном порядке.
Пример:
Введите слова:
1. тепловоз
2. арбуз
 
Список слов в алфавитном порядке:
арбуз, тепловоз
Задачи«B»: Вводится несколько строк (не более 20), в которых сначала записан порядковый номер строки с точкой, а

Слайд 101Задачи
«C»: Вводится несколько строк (не более 20), в которых сначала

записаны инициалы и фамилии работников фирмы. Ввод заканчивается пустой строкой.

Отсортировать строки в алфавитном порядке по фамилии.
Пример:
Введите ФИО:
А.Г. Урядников
Б.В. Тепловозов
В.Д. Арбузов
 
Список в алфавитном порядке:
В.Д. Арбузов
Б.В. Тепловозов
А.Г. Урядников
Задачи«C»: Вводится несколько строк (не более 20), в которых сначала записаны инициалы и фамилии работников фирмы. Ввод

Слайд 102Программирование на алгоритмическом языке
§ 67. Матрицы

Программирование на алгоритмическом языке§ 67. Матрицы

Слайд 103Что такое матрица?
Матрица — это прямоугольная таблица, составленная из элементов

одного типа (чисел, строк и т.д.). Каждый элемент матрицы имеет

два индекса – номера строки и столбца.

нет знака

нолик

крестик

строка 2, столбец 3

Что такое матрица?Матрица — это прямоугольная таблица, составленная из элементов одного типа (чисел, строк и т.д.). Каждый

Слайд 104Объявление матриц
цел N = 3, M = 4
целтаб A[1:N, 1:M]
вещтаб

X[-3:0, -8:M]
логтаб L[1:N, 0:1]
строки
столбцы
строки
столбцы

Объявление матриццел N = 3, M = 4целтаб A[1:N, 1:M]вещтаб X[-3:0, -8:M]логтаб L[1:N, 0:1]строкистолбцыстрокистолбцы

Слайд 105Простые алгоритмы
Заполнение случайными числами:
нц для i от 1 до N

нц для j от 1 до M
A[i,j]:= irand(20,80)

вывод A[i,j], ' '
кц
вывод нс
кц

Суммирование:

s:= 0
нц для i от 1 до N
нц для j от 1 до M
s:= s + A[i,j]
кц
кц

Простые алгоритмыЗаполнение случайными числами:нц для i от 1 до N нц для j от 1 до M

Слайд 106Задачи
«A»: Напишите программу, которая заполняет квадратную матрицу случайными числами в

интервале [10,99], и находит максимальный и минимальный элементы в матрице

и их индексы.
Пример:
Матрица А:
12 14 67 45
32 87 45 63
69 45 14 11
40 12 35 15
Максимальный элемент A[2,2]=87
Минимальный элемент A[3,4]=11
Задачи«A»: Напишите программу, которая заполняет квадратную матрицу случайными числами в интервале [10,99], и находит максимальный и минимальный

Слайд 107Задачи
«B»: Яркости пикселей рисунка закодированы числами от 0 до 255

в виде матрицы. Преобразовать рисунок в черно-белый по следующему алгоритму:
вычислить

среднюю яркость пикселей по всему рисунку
все пиксели, яркость которых меньше средней, сделать черными (записать код 0), а остальные – белыми (код 255)
Пример:
Матрица А:
12 14 67 45
32 87 45 63
69 45 14 11
40 12 35 15
Средняя яркость 37.88
Результат:
0 0 255 255
0 255 0 255
255 255 0 0
255 0 0 0
Задачи«B»: Яркости пикселей рисунка закодированы числами от 0 до 255 в виде матрицы. Преобразовать рисунок в черно-белый

Слайд 108Задачи
«С»: Заполните матрицу, содержащую N строк и M столбцов, натуральными

числами по спирали и змейкой, как на рисунках:

Задачи«С»: Заполните матрицу, содержащую N строк и M столбцов, натуральными числами по спирали и змейкой, как на

Слайд 109Перебор элементов матрицы
Главная диагональ:
нц для i от 1 до N

| работаем с  A[i,i]
кц
Побочная диагональ:
нц для i от 1

до N
| работаем с  A[i,N+1-i]
кц

Главная диагональ и под ней:

нц для i от 1 до N
нц для j от 1 до  i 
| работаем с  A[i,j]
кц
кц

Перебор элементов матрицыГлавная диагональ:нц для i от 1 до N | работаем с  A[i,i] кцПобочная диагональ:нц для

Слайд 110Перестановка строк
2-я и 4-я строки:
нц для j от 1 до

M
c:= A[2,j]
A[2,j]:= A[4,j]
A[4,j]:= c
кц

Перестановка строк2-я и 4-я строки:нц для j от 1 до M c:= A[2,j] A[2,j]:= A[4,j] A[4,j]:= cкц

Слайд 111Задачи
«A»: Напишите программу, которая заполняет квадратную матрицу случайными числами в

интервале [10,99], а затем записывает нули во все элементы выше

главной диагонали. Алгоритм не должен изменяться при изменении размеров матрицы.
Пример:
Матрица А:
12 14 67 45
32 87 45 63
69 45 14 30
40 12 35 65
Результат:
12 0 0 0
32 87 0 0
69 45 14 0
40 12 35 65
Задачи«A»: Напишите программу, которая заполняет квадратную матрицу случайными числами в интервале [10,99], а затем записывает нули во

Слайд 112Задачи
«B»: Пиксели рисунка закодированы числами (обозначающими цвет) в виде матрицы,

содержащей N строк и M столбцов. Выполните отражение рисунка сверху

вниз:

«С»: Пиксели рисунка закодированы числами (обозначающими цвет) в виде матрицы, содержащей N строк и M столбцов. Выполните поворот рисунка вправо на 90 градусов:

Задачи«B»: Пиксели рисунка закодированы числами (обозначающими цвет) в виде матрицы, содержащей N строк и M столбцов. Выполните

Слайд 113Программирование на алгоритмическом языке
§ 68. Работа с файлами

Программирование на алгоритмическом языке§ 68. Работа с файлами

Слайд 114Как работать с файлами?
файлы
текстовые
двоичные
«plain text»:
текст, разбитый на строки;
из специальных

символов только символы перехода на новую строку
любые символы
рисунки, звуки, видео,


Как работать с файлами?файлытекстовыедвоичные«plain text»: текст, разбитый на строки;из специальных символов только символы перехода на новую строкулюбые

Слайд 115Принцип сэндвича
хлеб
хлеб
начинка
файл Fin, Fout
Fin:= открыть на чтение('input.txt')
Fout:= открыть на запись('output.txt')

| здесь работаем с файлами
закрыть(Fout)
закрыть(Fin)
файловые переменные

Принцип сэндвичахлебхлебначинкафайл Fin, FoutFin:= открыть на чтение('input.txt')Fout:= открыть на запись('output.txt')  | здесь работаем с файламизакрыть(Fout)закрыть(Fin) файловые

Слайд 116Ввод данных
цел a, b
файл Fin
Fin:= открыть на чтение('input.txt')

закрыть(Fin)
начать чтение(Fin)
ввод

Fin, a, b
Переход к началу открытого файла:
если конец файла(Fin)
вывод

'Данные кончились'
все

Определение конца файла:

Ввод данныхцел a, bфайл FinFin:= открыть на чтение('input.txt')закрыть(Fin) начать чтение(Fin)ввод Fin, a, bПереход к началу открытого файла:если

Слайд 117Вывод данных в файл
цел a = 1, b = 2
файл

Fout
Fout:= открыть на запись('output.txt')

закрыть(Fout)
вывод Fout, a, '+', b, '=', a+b

Вывод данных в файлцел a = 1, b = 2файл FoutFout:= открыть на запись('output.txt')закрыть(Fout)вывод Fout, a, '+',

Слайд 118Чтение неизвестного количества данных
нц пока | не конец файла
|

прочитать число из файла
| добавить его к сумме
кц
Задача. В

файле записано в столбик неизвестное количество чисел. Найти их сумму.

цел x, S
файл Fin
Fin:= открыть на чтение('input.txt')
S:= 0
нц пока не конец файла(Fin)
ввод Fin, x
S:= S + x
кц
закрыть(Fin)

Чтение неизвестного количества данныхнц пока | не конец файла | прочитать число из файла | добавить его

Слайд 119Задачи
«A»: Напишите программу, которая находит среднее арифметическое всех чисел, записанных

в файле в столбик, и выводит результат в другой файл.

«B»:

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

«C»: В файле в столбик записаны целые числа, сколько их – неизвестно. Напишите программу, которая определяет длину самой длинной цепочки идущих подряд одинаковых чисел и выводит результат в другой файл.

Задачи«A»: Напишите программу, которая находит среднее арифметическое всех чисел, записанных в файле в столбик, и выводит результат

Слайд 120Обработка массивов
Задача. В файле записано не более 100 целых чисел.

Вывести в другой текстовый файл те же числа, отсортированные в

порядке возрастания.

цел MAX = 100
целтаб A[1:MAX]

Обработка массивовЗадача. В файле записано не более 100 целых чисел. Вывести в другой текстовый файл те же

Слайд 121Обработка массивов
Ввод массива:
файл Fin
Fin:= открыть на чтение('input.txt')
цел N
N:= 0 |

счётчик прочитанных данных
нц пока не конец файла(Fin) и
N:= N

+ 1
ввод Fin, A[N]
кц
закрыть(Fin)

N < MAX

Обработка массивовВвод массива:файл FinFin:= открыть на чтение('input.txt')цел NN:= 0 | счётчик прочитанных данныхнц пока не конец файла(Fin)

Слайд 122Обработка массивов
Вывод результата:
файл Fout
Fout:= открыть на запись('output.txt')
нц для i от

1 до
вывод Fout, A[i], нс
кц
закрыть(Fout)

N

Обработка массивовВывод результата:файл FoutFout:= открыть на запись('output.txt')нц для i от 1 до вывод Fout, A[i], нскцзакрыть(Fout) N

Слайд 123Задачи
«A»: В файле записано не более 100 чисел. Отсортировать их

по возрастанию последней цифры и записать в другой файл.

«B»: В

файле записано не более 100 чисел. Отсортировать их по возрастанию суммы цифр и записать в другой файл. Используйте функцию, которая вычисляет сумму цифр числа.

«C»: В двух файлах записаны отсортированные по возрастанию массивы неизвестной длины. Объединить их и записать результат в третий файл. Полученный массив также должен быть отсортирован по возрастанию.

Задачи«A»: В файле записано не более 100 чисел. Отсортировать их по возрастанию последней цифры и записать в

Слайд 124Обработка строк
Задача. В файле записано данные о собаках: в каждой

строчке кличка собаки, ее возраст и порода:
Мухтар 4 немецкая овчарка


Вывести в другой файл сведения о собаках, которым меньше 5 лет.

нц пока не конец файла(Fin)
| прочитать строку из файла Fin
| разобрать строку – выделить возраст
если возраст < 5 то
| записать строку в файл Fout
все
кц

Обработка строкЗадача. В файле записано данные о собаках: в каждой строчке кличка собаки, ее возраст и порода:Мухтар

Слайд 125Обработка строк
| найти в строке пробел
| удалить из строки кличку

с первым пробелом
| найти в строке пробел
| выделить возраст перед

пробелом
| преобразовать возраст в числовой вид

Разбор строки:

лит s, sAge
цел age, p
лог OK
... | s = 'Мухтар 4 овчарка'
p:= позиция(' ', s) | 'Мухтар 4 овчарка'
s:= s[p+1:длин(s)] | s = '4 овчарка'
p:= позиция (' ',s) | '4 овчарка'
sAge:= s[1:p-1] | sAge = '4'
age:= лит_в_цел(sAge, OK) | age = 4

Обработка строк| найти в строке пробел| удалить из строки кличку с первым пробелом| найти в строке пробел|

Слайд 126Обработка строк
лит s, s0
нц пока не конец файла(Fin)
ввод Fin,

s0
s:= s0
... | обработка строки s
если age

< 5 то
вывод Fout, s0, нс
все
кц
Обработка строклит s, s0нц пока не конец файла(Fin) ввод Fin, s0 s:= s0 ... | обработка строки

Слайд 127Задачи
«A»: В файле записаны данные о результатах сдачи экзамена. Каждая

строка содержит фамилию, имя и количество баллов, разделенные пробелами:

<Количество баллов>
Вывести в другой файл фамилии и имена тех учеников, которые получили больше 80 баллов.

«B»: В предыдущей задаче добавить к полученному списку нумерацию, сократить имя до одной буквы и поставить перед фамилией:
П. Иванов
И. Петров
...
Задачи«A»: В файле записаны данные о результатах сдачи экзамена. Каждая строка содержит фамилию, имя и количество баллов,

Слайд 128Задачи
«C»: В файле записаны данные о результатах сдачи экзамена. Каждая

строка содержит фамилию, имя и количество баллов, разделенные пробелами:

<Количество баллов>
Вывести в другой файл данные учеников, которые получили больше 80 баллов. Список должен быть отсортирован по убыванию балла. Формат выходных данных:
П. Иванов 98
И. Петров 96
...
Задачи«C»: В файле записаны данные о результатах сдачи экзамена. Каждая строка содержит фамилию, имя и количество баллов,

Слайд 129Конец фильма
ПОЛЯКОВ Константин Юрьевич
д.т.н., учитель информатики
ГБОУ СОШ № 163, г.

Санкт-Петербург
kpolyakov@mail.ru
ЕРЕМИН Евгений Александрович
к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО

ПГГПУ, г. Пермь
eremin@pspu.ac.ru
Конец фильмаПОЛЯКОВ Константин Юрьевичд.т.н., учитель информатикиГБОУ СОШ № 163, г. Санкт-Петербургkpolyakov@mail.ru ЕРЕМИН Евгений Александровичк.ф.-м.н., доцент кафедры мультимедийной

Слайд 130Источники иллюстраций
www.mcdonalds.com
иллюстрации художников издательства «Бином»
авторские материалы

Источники иллюстрацийwww.mcdonalds.com иллюстрации художников издательства «Бином»авторские материалы

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика