Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


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

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

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

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

Презентация на тему програмирование на алгоретмическом языке часть 3

Содержание

Программирование на алгоритмическом языке. Часть IIТема 1. Обработка массивов
Программирование  на алгоритмическом языке. Часть IIIОбработка массивовСортировка массивовДвоичный поискСимвольные строкиМатрицыФайлы Программирование  на алгоритмическом языке. Часть IIТема 1. Обработка массивов Реверс массиваЗадача: переставить элементы массива в обратном порядке.Алгоритм:поменять местами A[1] и A[N], Как переставить элементы?231Задача: поменять местами содержимое двух чашек.Задача: поменять местами  содержимое Программаалг Реверснач цел i, c, N = 10 целтаб A[1:N] | здесь Задания«3»: Заполнить массив из 10 элементов случайными числами в интервале [-10..10] и Задания«5»: Заполнить массив из 12 элементов случайными числами в интервале [-12..12] и Циклический сдвигЗадача: сдвинуть элементы массива влево на 1 ячейку, первый элемент становится Программаалг Циклический сдвиг влевонач цел i, c, N = 10 целтаб A[1:N] Задания«3»: Заполнить массив из 10 элементов случайными числами в интервале [-10..10] и Задания«5»: Заполнить массив из 12 элементов случайными числами в интервале [-12..12] и Выбор нужных элементовЗадача – найти в массиве элементы, удовлетворяющие некоторому условию (например, Выбор нужных элементовРешение: ввести счетчик найденных элементов count, очередной элемент ставится на Как вывести массив B?Примитивное решение:вывод Задания«3»: Заполнить массив случайными числами в интервале  [-10,10] и записать в Задания«5»: Заполнить массив случайными числами и выделить в другой массив все числа, Программирование  на алгоритмическом языке. Часть IIТема 2. Сортировка массивов СортировкаСортировка – это расстановка элементов массива в заданном порядке (по возрастанию, убыванию, Метод пузырькаИдея – пузырек воздуха в стакане воды поднимается со дна вверх. Программа1-ый проход:сравниваются пары A[N-1] и A[N],  A[N-2] и A[N-1], ..., A[1] Программаалг Сортировканач цел N = 5, i, j, c целтаб A[1:N] | Задания«3»: Заполнить массив из 10 элементов случайными числами в интервале [-10..10] и Задания«5»: Заполнить массив из 10 элементов случайными числами в интервале [0..100] и Метод выбораИдея:найти минимальный элемент и поставить на первое место (поменять местами с Метод выборанц для i от 1 до N-1 nMin:= i  нц Задания«3»: Заполнить массив из 10 элементов случайными числами в интервале [0..99] и Задания«5»: Заполнить массив из 10 элементов случайными числами в интервале [0..100] и «Быстрая сортировка» (Quick Sort)Идея – более эффективно переставлять элементы, расположенные дальше друг «Быстрая сортировка» (Quick Sort)Медиана – такое значение X, что слева и справа «Быстрая сортировка» (Quick Sort) «Быстрая сортировка» (Quick Sort)алг qSort(аргрез целтаб A[1:5], арг цел iStart, iEnd)нач цел «Быстрая сортировка» (Quick Sort)алг Сортировка Quick Sortнач цел N = 5, i Количество перестановок(случайные данные) Задания«3»: Заполнить массив из 10 элементов случайными числами в интервале [-50..50] и Программирование  на алгоритмическом языке. Часть IIТема 3. Двоичный поиск Поиск в массивеЗадача – найти в массиве элемент, равный X, или установить, Линейный поискi:= 1нц пока A[i] X i:= i + 1кцесли i Двоичный поискX = 7X < 884X > 46X > 6Выбрать средний элемент Двоичный поискL:= 1; R:= N; nX:= 0 если nX > 0 Сравнение методов поиска Задания«3»: Написать программу, которая сортирует массив по возрастанию и ищет в нем Программирование  на алгоритмическом языке. Часть IIТема 4. Символьные строки Задачи на обработку строкЗадача: с клавиатуры вводится число N, обозначающее количество футболистов Программаиспользовать Строкиалг Футболисты нач цел N, i, p, year, goal, count=0 лит Разбор строкиПропуск фамилии:p:= найти( Разбор строкиЕсли фамилия нужна:p:= найти( Задания«3»: Вывести фамилии всех футболистов, которые забили больше двух голов.  Пример: Задания«5»: Вывести в алфавитном порядке фамилии и имена всех футболистов, которые забили Рекурсивный переборЗадача: Алфавит языка племени «тумба-юмба» состоит из букв Ы, Ц, Щ Рекурсивный перебор1KРекурсия: Решения задачи для слов из К букв сводится к 4-м Процедураалг Рек(цел p)нач если p > K то   вывод s, Основная программалит s, цел count = 0, Kалг Рекурсивный перебор нач вывод Процедура (много букв)алг Рек(цел p)нач если p > K то ЗаданияАлфавит языка племени «тумба-юмба» состоит из букв Ы, Ц, Щ и О. Программирование  на алгоритмическом языке. Часть IIТема 5. Матрицы Операции с матрицамиЗадача 1. Вывести на экран главную диагональ квадратной матрицы из Операции с матрицамиЗадача 3. Найти сумму элементов, стоящих на главной диагонали и Операции с матрицамиЗадача 4. Перестановка строк или столбцов. В матрице из N ЗаданияЗаполнить матрицу из 7 строк и 7 столбцов случайными числами в интервале Программирование  на алгоритмическом языке. Часть IIТема 6. Файлы ФайлыФайл – это данные на диске, имеющие имя.Файлытолько текст без оформления, не Работа с файлами: принцип сэндвичаI этап. открыть файл:сделать его активным,  приготовить Работа с файламиОсобенности:имя файла упоминается только при открытии файла, работа с файлом Последовательный доступпри открытии файла курсор устанавливается в началочтение выполняется с той позиции, Последовательный доступкак вернуться назад и начать с начала?не открывая файл зановоначать чтение ПримерЗадача: в файле input.txt записаны числа (в столбик), сколько их – неизвестно. Программа: чтение данных из файлаиспользовать Файлы Палг Сумма чиселнач цел F, S, Программа: запись результата в файлF:= открыть на запись( ЗаданияВ файле input.txt записаны числа, сколько их – неизвестно. «3»: Найти сумму Обработка массивовЗадача: в файле input.txt записаны числа (в столбик), сколько их – Программа: чтение данных в массивиспользовать Файлы Палг Сортировканач цел F, MAX = Программа: вывод массива в файлF:= открыть на запись( ЗаданияВ файле input.txt записаны числа (в столбик), известно, что их не более Обработка текстовых данныхЗадача: в файле input.txt записаны строки, в которых есть слово-паразит Обработка текстовых данныхАлгоритм: Прочитать строку из файла. Удалить все сочетания Работа с двумя файлами одновременноиспользовать Строкииспользовать Файлы Палг Обработка строкнач цел fIn, Цикл обработки файланц пока не конец файла(fIn) Фввод fIn, s  | Обработка одной строкинц пока да p:= найти( ЗаданияВ файле input.txt записаны строки, сколько их – неизвестно. «3»: Заменить все Сортировка списковЗадача: в файле list.txt записаны фамилии и имена пользователей сайта (не Сортировка списковАлгоритм: прочитать строки из файла в массив строк, подсчитать их в Сортировка списковВвод массива строк из файла: f:= открыть на чтение( Сортировка списковСортировка первых N элементов массива: нц для i от 1 до Сортировка списковКак сравниваются строки: ||||||||?s1s2Кодовая таблица: WinUNICODE245226код( код("в")"х" > "в""Пароход" > "Паровоз""> Сортировка списковКак сравниваются строки: ||||||?s1s2 ¤"Пароход" > "Пар""> Сортировка списковРабота с отдельной строкой массива: литтаб s[1:MAX]лит c | вспомогательная строка Задания«3»: Добавить к списку нумерацию:  1) Анисимов Никита  2) Иванов Списки с числовыми даннымиЗадача: в файле marks.txt записаны фамилии и имена школьников Работа с двумя файлами одновременноиспользовать Файлы Писпользовать Строкиалг Отметки на экзамененач цел Цикл обработки файлацел ballнц пока не конец файла(fIn) Фввод fIn, s Преобразования «строка»-«число»Из строки в число:s:= Обработка строкиn:= найти( Обработка строкиn:= найти( Задания«3»: Добавить к списку нумерацию:  1) Федоров Иван 78	2) Анисимов Никита Конец фильмаПОЛЯКОВ Константин Юрьевичд.т.н., учитель информатики высшей категории,ГОУ СОШ № 163, г. Санкт-Петербургkpolyakov@mail.ru
Слайды презентации

Слайд 2 Программирование на алгоритмическом языке. Часть II
Тема 1. Обработка

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

массивов


Слайд 3 Реверс массива
Задача: переставить элементы массива в обратном порядке.
Алгоритм:
поменять

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

местами A[1] и A[N], A[2] и A[N-1], …
Псевдокод:



нц для

i от 1 до N
| поменять местами A[i] и A[N+1-i]
кц

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

div(N,2)




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

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

поменять местами содержимое двух ячеек памяти.
4
6
?
4
6
4
x
y
c
c:= x
x:= y
y:= c
x:=

y
y:= x


3

2

1


Слайд 5 Программа
алг Реверс
нач
цел i, c, N = 10

Программаалг Реверснач цел i, c, N = 10 целтаб A[1:N] |

целтаб A[1:N]
| здесь нужно заполнить массив






| здесь

нужно вывести результат
кон

нц для i от 1 до div(N,2)
c:= A[i]
A[i]:= A[N+1-i]
A[N+1-i]:= c;
кц


Слайд 6 Задания

«3»: Заполнить массив из 10 элементов случайными числами

Задания«3»: Заполнить массив из 10 элементов случайными числами в интервале [-10..10]

в интервале [-10..10] и сделать реверс всех элементов, кроме

первого.
Пример:
Исходный массив:
4 -5 3 10 -4 -6 8 -10 1 0
Результат:
4 0 1 -10 8 -6 -4 10 3 -5
«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

Слайд 7 Задания

«5»: Заполнить массив из 12 элементов случайными числами

Задания«5»: Заполнить массив из 12 элементов случайными числами в интервале [-12..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

Слайд 8 Циклический сдвиг
Задача: сдвинуть элементы массива влево на 1

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

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

нц

для i от 1 до N-1
A[i]:= A[i+1]
кц

почему не N?


Слайд 9 Программа
алг Циклический сдвиг влево
нач
цел i, c, N

Программаалг Циклический сдвиг влевонач цел i, c, N = 10 целтаб

= 10
целтаб A[1:N]
| здесь нужно заполнить массив






| здесь нужно вывести результат
кон

c:= A[1]
нц для i от 1 до N-1
A[i]:= A[i+1]
кц
A[N]:= c;


Слайд 10 Задания

«3»: Заполнить массив из 10 элементов случайными числами

Задания«3»: Заполнить массив из 10 элементов случайными числами в интервале [-10..10]

в интервале [-10..10] и выполнить циклический сдвиг влево без

первого элемента.
Пример:
Исходный массив:
4 -5 3 10 -4 -6 8 -10 1 0
Результат:
4 0 -5 3 10 -4 -6 8 -10 1
«4»: Заполнить массив из 10 элементов случайными числами в интервале [-10..10] и выполнить циклический сдвиг ВПРАВО.
Пример:
Исходный массив:
4 -5 3 10 -4 -6 8 -10 1 0
Результат:
0 4 -5 3 10 -4 -6 8 -10 1

Слайд 11 Задания

«5»: Заполнить массив из 12 элементов случайными числами

Задания«5»: Заполнить массив из 12 элементов случайными числами в интервале [-12..12]

в интервале [-12..12] и выполнить циклический сдвиг ВПРАВО на

4 элемента.
Пример:
Исходный массив:
4 -5 3 10 -4 -6 8 -10 1 0 5 7
Результат:
1 0 5 7 4 -5 3 10 -4 -6 8 -10

Слайд 12 Выбор нужных элементов
Задача – найти в массиве элементы,

Выбор нужных элементовЗадача – найти в массиве элементы, удовлетворяющие некоторому условию

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

другой массив.

Примитивное решение:

цел i, N = 5
целтаб A[1:N], B[1:N]
| здесь заполнить массив A
нц для i от 1 до N
если A[i] < 0 то
B[i]:= A[i]
все
кц

A

B




Слайд 13 Выбор нужных элементов

Решение: ввести счетчик найденных элементов count,

Выбор нужных элементовРешение: ввести счетчик найденных элементов count, очередной элемент ставится

очередной элемент ставится на место B[count].
цел i, N =

5, count = 0
целтаб A[1:N], B[1:N]
| здесь заполнить массив A
нц для i от 1 до N
если A[i]< 0 то
count:= count + 1
B[ ]:= A[i]
все
кц

A

B



count


Слайд 14
Как вывести массив B?
Примитивное решение:
вывод "Выбранные элементы:", нс
нц

Как вывести массив B?Примитивное решение:вывод

для i от 1 до N
вывод B[i], "

"
кц

Правильное решение:

вывод "Выбранные элементы:", нс
нц для i от 1 до
вывод B[i], " "
кц

count


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

Задания«3»: Заполнить массив случайными числами в интервале [-10,10] и записать в

и записать в другой массив все положительные числа.

Пример:
Исходный массив:
0 -5 3 7 -8
Положительные числа:
3 7
«4»: Заполнить массив случайными числами в интервале [20,100] и записать в другой массив все числа, которые оканчиваются на 0.
Пример:
Исходный массив:
40 57 30 71 84
Заканчиваются на 0:
40 30

Слайд 16
Задания
«5»: Заполнить массив случайными числами и выделить в

Задания«5»: Заполнить массив случайными числами и выделить в другой массив все

другой массив все числа, которые встречаются более одного раза.

Пример:
Исходный массив:
4 1 2 1 11 2 34
Результат:
1 2

Слайд 17 Программирование на алгоритмическом языке. Часть II
Тема 2. Сортировка

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

массивов


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

СортировкаСортировка – это расстановка элементов массива в заданном порядке (по возрастанию,

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


Задача: переставить элементы массива в порядке возрастания.
Алгоритмы сортировки:
простые и понятные, но медленно работающие для больших массивов
метод пузырька
метод выбора
сложные, но быстрые («быстрая сортировка» и др.)

сложность O(N2)


Слайд 19 Метод пузырька
Идея – пузырек воздуха в стакане воды

Метод пузырькаИдея – пузырек воздуха в стакане воды поднимается со дна

поднимается со дна вверх.
Для массивов – самый маленький

(«легкий» элемент перемещается вверх («всплывает»).




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



1-ый проход

2-ой проход

3-ий проход


Для сортировки массива из N элементов нужен N-1 проход (достаточно поставить на свои места N-1 элементов).


Слайд 20 Программа
1-ый проход:


сравниваются пары
A[N-1] и A[N], A[N-2]

Программа1-ый проход:сравниваются пары A[N-1] и A[N], A[N-2] и A[N-1], ..., A[1]

и A[N-1], ..., A[1] и A[2]
A[j] и A[j+1]
2-ой

проход


нц для j от N-1 до 2 шаг -1
если A[j] > A[j+1] то
c:=A[j]; A[j]:=A[j+1]; A[j+1]:=c
все
кц

2

нц для j от N-1 до 1 шаг -1
если A[j] > A[j+1] то
c:=A[j]; A[j]:=A[j+1]; A[j+1]:=c
все
кц

1

i-ый проход

нц для j от N-1 до i шаг -1
...

i



Слайд 21 Программа
алг Сортировка
нач
цел N = 5, i, j,

Программаалг Сортировканач цел N = 5, i, j, c целтаб A[1:N]

c
целтаб A[1:N]
| здесь нужно заполнить массив









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

нц для i от 1 до N-1
нц для j от N-1 до i шаг -1
если A[j] > A[j+1] то
c:=A[j]; A[j]:=A[j+1]; A[j+1]:=c
все
кц
кц

i

элементы выше A[i] уже поставлены


Слайд 22 Задания

«3»: Заполнить массив из 10 элементов случайными числами

Задания«3»: Заполнить массив из 10 элементов случайными числами в интервале [-10..10]

в интервале [-10..10] и отсортировать его по убыванию.

Пример:
Исходный массив:
4 5 -8 3 -7 -5 3 1 0 9
Результат:
9 5 4 3 3 1 0 -5 -7 -8
«4»: Заполнить массив из 10 элементов случайными числами в интервале [0..100] и отсортировать его по последней цифре.
Пример:
Исходный массив:
14 25 13 30 76 58 32 11 41 97
Результат:
30 11 41 32 13 14 25 76 97 58

Слайд 23 Задания

«5»: Заполнить массив из 10 элементов случайными числами

Задания«5»: Заполнить массив из 10 элементов случайными числами в интервале [0..100]

в интервале [0..100] и отсортировать первую половину по возрастанию,

а вторую – по убыванию.
Пример:
Исходный массив:
14 25 13 30 76 58 32 11 41 97
Результат:
13 14 25 30 76 97 58 41 32 11

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

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

место (поменять местами с A[1])
из оставшихся найти минимальный элемент

и поставить на второе место (поменять местами с A[2]), и т.д.








Слайд 25 Метод выбора



нц для i от 1 до N-1

Метод выборанц для i от 1 до N-1 nMin:= i нц

nMin:= i
нц для j от i+1 до

N
если A[j] < A[nMin] то nMin:= j все
кц
если nMin <> i то
c:= A[i]
A[i]:= A[nMin]
A[nMin]:= c
все
кц

N-1

N

нужно N-1 проходов

поиск минимального от A[i] до A[N]

если нужно, переставляем

i+1

i


Слайд 26 Задания

«3»: Заполнить массив из 10 элементов случайными числами

Задания«3»: Заполнить массив из 10 элементов случайными числами в интервале [0..99]

в интервале [0..99] и отсортировать его по убыванию последней

цифры.
Пример:
Исходный массив:
14 25 13 12 76 58 21 87 10 98
Результат:
98 58 87 76 25 14 13 12 21 10
«4»: Заполнить массив из 10 элементов случайными числами в интервале [0..99] и отсортировать его по возрастанию суммы цифр (подсказка: их всего две).
Пример:
Исходный массив:
14 25 13 12 76 58 21 87 10 98
Результат:
10 21 12 13 14 25 76 58 87 98

Слайд 27 Задания

«5»: Заполнить массив из 10 элементов случайными числами

Задания«5»: Заполнить массив из 10 элементов случайными числами в интервале [0..100]

в интервале [0..100] и отсортировать первую половину по возрастанию,

а вторую – по убыванию.
Пример:
Исходный массив:
14 25 13 30 76 58 32 11 41 97
Результат:
13 14 25 30 76 97 58 41 32 11

Слайд 28 «Быстрая сортировка» (Quick Sort)
Идея – более эффективно переставлять

«Быстрая сортировка» (Quick Sort)Идея – более эффективно переставлять элементы, расположенные дальше

элементы, расположенные дальше друг от друга.
div(N,2)
2 шаг: переставить

элементы так:

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

1 шаг: выбрать некоторый элемент массива X

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

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



Слайд 29 «Быстрая сортировка» (Quick Sort)
Медиана – такое значение X,

«Быстрая сортировка» (Quick Sort)Медиана – такое значение X, что слева и

что слева и справа от него в отсортированном массиве

стоит одинаковое число элементов (для этого надо отсортировать массив…).

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


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


Слайд 30 «Быстрая сортировка» (Quick Sort)




«Быстрая сортировка» (Quick Sort)

Слайд 31 «Быстрая сортировка» (Quick Sort)
алг qSort(аргрез целтаб A[1:5], арг

«Быстрая сортировка» (Quick Sort)алг qSort(аргрез целтаб A[1:5], арг цел iStart, iEnd)нач

цел iStart, iEnd)
нач
цел L, R, c, X
если

iStart >= iEnd то выход все
L:= iStart; R:= iEnd;
X:= A[div(L+R,2)]







qSort(A, iStart, R)
qSort(A, L, iEnd)
кон

ограничение рекурсии

сортируем две части:
рекурсия!

нц пока 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
все

разделение

обмен

двигаемся дальше


Слайд 32 «Быстрая сортировка» (Quick Sort)
алг Сортировка Quick Sort
нач
цел

«Быстрая сортировка» (Quick Sort)алг Сортировка Quick Sortнач цел N = 5,

N = 5, i
целтаб A[1:N]
| заполнить массив

и вывести на экран
qSort(A, 1, N) | сортировка
| вывести отсортированный массив
кон

алг qSort(аргрез целтаб A[1:5], арг цел iStart, iEnd)
нач
...
кон

Вызов:

qSort(N, A, 1, N)

для массивов любого размера


Слайд 33 Количество перестановок
(случайные данные)

Количество перестановок(случайные данные)

Слайд 34 Задания

«3»: Заполнить массив из 10 элементов случайными числами

Задания«3»: Заполнить массив из 10 элементов случайными числами в интервале [-50..50]

в интервале [-50..50] и отсортировать его с помощью алгоритма

быстрой сортировки.
«4»: Заполнить массив из 10 элементов случайными числами в интервале [-50..50] и отсортировать его по убыванию с помощью алгоритма быстрой сортировки.
«5»: Заполнить массив из 500 элементов случайными числами в интервале [0..100]. Отсортировать его по возрастанию двумя способами – методом «пузырька» и методом «быстрой сортировки» . Вывести на экран число перестановок элементов массива в том и в другом случае. Массив выводить на экран не нужно.

Слайд 35 Программирование на алгоритмическом языке. Часть II
Тема 3. Двоичный

Программирование на алгоритмическом языке. Часть IIТема 3. Двоичный поиск

поиск


Слайд 36 Поиск в массиве
Задача – найти в массиве элемент,

Поиск в массивеЗадача – найти в массиве элемент, равный X, или

равный X, или установить, что его нет.
Решение: для

произвольного массива: линейный поиск (перебор)
недостаток: низкая скорость
Как ускорить? – заранее подготовить массив для поиска
как именно подготовить?
как использовать «подготовленный массив»?

Слайд 37 Линейный поиск
i:= 1
нц пока A[i] X
i:=

Линейный поискi:= 1нц пока A[i] X i:= i + 1кцесли i

i + 1
кц
если i

i, "]=", X
иначе вывод "Нет такого"
все

i – номер нужного элемента в массиве

i<=N и A[i]<>X


Слайд 38 Двоичный поиск



X = 7
X < 8

8
4
X > 4

6

X

Двоичный поискX = 7X < 884X > 46X > 6Выбрать средний

> 6
Выбрать средний элемент A[c] и сравнить с X.
Если

X = A[c], нашли (выход).
Если X < A[c], искать дальше в первой половине.
Если X > A[c], искать дальше во второй половине.

Слайд 39 Двоичный поиск
L:= 1; R:= N; nX:= 0








если

nX > 0
то вывод "A[", nX, "]=",

X
иначе вывод "Не нашли"
все

нц пока R >= L
c:= div(R+L, 2);



если X < A[c] то R:= c – 1 все
если X > A[c] то L:= c + 1 все
кц

номер среднего элемента

если X = A[c]
то nX:= c; выход
все

нашли

выйти из цикла

сдвигаем границы


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

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

Слайд 41 Задания

«3»: Написать программу, которая сортирует массив по возрастанию

Задания«3»: Написать программу, которая сортирует массив по возрастанию и ищет в

и ищет в нем элемент, равный X (это число

вводится с клавиатуры). Использовать двоичный поиск.
«4»: Написать программу, которая сортирует массив ПО УБЫВАНИЮ и ищет в нем элемент, равный X (это число вводится с клавиатуры). Использовать двоичный поиск.
«5»: Написать программу, которая считает среднее число шагов в двоичном поиске для массива из 32 элементов в интервале [0,100]. Для поиска использовать 1000 случайных чисел в этом же интервале.

Слайд 42 Программирование на алгоритмическом языке. Часть II
Тема 4. Символьные

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

строки


Слайд 43 Задачи на обработку строк
Задача: с клавиатуры вводится число

Задачи на обработку строкЗадача: с клавиатуры вводится число N, обозначающее количество

N, обозначающее количество футболистов команды «Шайба», а затем –

N строк, в каждой из которых – информация об одном футболисте таком формате:
<Фамилия> <Имя> <год рождения> <голы>
Все данные разделяются одним пробелом. Нужно подсчитать, сколько футболистов, родившихся в период с 1988 по1990 год, не забили мячей вообще.

Алгоритм (для каждой строки):
выделить год (year) и количество голов (goal)
если 1988 <= year <=1990 и goal = 0,
то увеличить счётчик


Слайд 44 Программа
использовать Строки
алг Футболисты
нач
цел N, i, p,

Программаиспользовать Строкиалг Футболисты нач цел N, i, p, year, goal, count=0

year, goal, count=0
лит s
ввод N
нц для

i от 1 до N
ввод s
| разобрать строку, выделить год и голы
если year >= 1988 и year <= 1990 и goal = 0
то count:=count+1
все
кц
вывод count
кон

год

голы

счётчик


Слайд 45 Разбор строки
Пропуск фамилии:
p:= найти(" ", s)
s:= s[p+1:длин(s)]
Пропуск имени:
Ввод

Разбор строкиПропуск фамилии:p:= найти(

года рождения:
p:= найти(" ", s)
year:= лит_в_цел(s[1:p-1],OK)
s:= s[p+1:длин(s)]
Ввод числа голов:
Иванов

Вася 1998 5

p


Вася 1998 5

p:= найти(" ", s)
s:= s[p+1:длин(s)]

Вася 1998 5

p


1998 5

p


1998 5

5

goal:= лит_в_цел(s,OK)

лог OK

1998 5


Слайд 46 Разбор строки
Если фамилия нужна:
p:= найти(" ", s)
fam:= s[1:p-1]
s:=

Разбор строкиЕсли фамилия нужна:p:= найти(

s[p+1:длин(s)]
лит fam
Иванов Вася 1998 5
p

Иванов
Вася 1998 5
Если нужны ВСЕ

фамилии:

p:= найти(" ", s)
fam[i]:= s[1:p-1]
s:= s[p+1:длин(s)]

литтаб fam[1:N]


Слайд 47 Задания

«3»: Вывести фамилии всех футболистов, которые забили больше

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

двух голов.
Пример:
Иванов Василий
Семёнов Кузьма
«4»: Вывести

фамилию и имя футболиста, забившего наибольшее число голов, и количество забитых им голов.
Пример:
Иванов Василий 25

Информация о футболистах вводится так же, как и для приведенной задачи (сначала N, потом N строк с данными).


Слайд 48 Задания

«5»: Вывести в алфавитном порядке фамилии и имена

Задания«5»: Вывести в алфавитном порядке фамилии и имена всех футболистов, которые

всех футболистов, которые забили хотя бы один гол. В

списке не более 100 футболистов.
Пример:
Васильев Иван
Иванов Василий
Кутузов Михаил
Пупкин Василий

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

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

букв Ы, Ц, Щ и О. Вывести на экран

все слова из К букв, которые можно составить в этом языке, и подсчитать их количество. Число K вводится с клавиатуры.

1

K

в каждой ячейке может быть любая из 4-х букв

4 варианта

4 варианта

4 варианта

4 варианта

Количество вариантов:


Слайд 50 Рекурсивный перебор
1
K
Рекурсия: Решения задачи для слов из К

Рекурсивный перебор1KРекурсия: Решения задачи для слов из К букв сводится к

букв сводится к 4-м задачам для слов из K-1

букв.

1

K

1

K

1

K


перебрать все варианты


перебрать все варианты


перебрать все варианты


перебрать все варианты


Слайд 51 Процедура
алг Рек(цел p)
нач
если p > K то

Процедураалг Рек(цел p)нач если p > K то  вывод s,


вывод s, нс
count:= count

+ 1
выход
все




кон

1

K

p

s

p+1

рекурсивные вызовы

Глобальные переменные:
лит s
цел count, K

если p > K то
вывод s, нс
count:= count + 1
выход
все

s[p]:= "Ы"; Рек(p+1)
s[p]:= "Ц"; Рек(p+1)
s[p]:= "Щ"; Рек(p+1)
s[p]:= "О"; Рек(p+1)

окончание рекурсии


Слайд 52 Основная программа
лит s, цел count = 0, K
алг

Основная программалит s, цел count = 0, Kалг Рекурсивный перебор нач

Рекурсивный перебор
нач
вывод "Введите длину слов: "
ввод

K
s:= ""
нц K раз s:= s + " " кц
Рек(1)
вывод "Всего ", count, " слов"
кон

s:= ""
нц K раз s:= s + " " кц

строка из K пробелов

глобальные переменные

алг Рек(цел p)
нач
...
кон


Слайд 53 Процедура (много букв)
алг Рек(цел p)
нач

если p >

Процедура (много букв)алг Рек(цел p)нач если p > K то

K то
вывод s, нс

count:= count + 1
выход
все



кон

лит syms="ЫЦЩО", цел i

нц для i от 1 до длин(syms)
s[p]:= syms[i]; Рек(p+1)
кц

локальные переменные

все буквы

цикл по всем буквам


Слайд 54 Задания

Алфавит языка племени «тумба-юмба» состоит из букв Ы,

ЗаданияАлфавит языка племени «тумба-юмба» состоит из букв Ы, Ц, Щ и

Ц, Щ и О. Число K вводится с клавиатуры.
«3»:

Вывести на экран все слова из К букв, в которых первая буква – Ы, и подсчитать их количество.
«4»: Вывести на экран все слова из К букв, в которых буква Ы встречается более 1 раза, и подсчитать их количество.
«5»: Вывести на экран все слова из К букв, в которых есть одинаковые буквы, стоящие рядом (например, ЫЩЩО), и подсчитать их количество.

Слайд 55 Программирование на алгоритмическом языке. Часть II
Тема 5. Матрицы

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

Слайд 56 Операции с матрицами
Задача 1. Вывести на экран главную

Операции с матрицамиЗадача 1. Вывести на экран главную диагональ квадратной матрицы

диагональ квадратной матрицы из N строк и N столбцов.
A[1,N]
A[2,2]
A[3,3]
A[N,N]
нц

для i от 1 до N
вывод A[i,i], " "
кц

Задача 2. Вывести на экран вторую диагональ.

A[N,1]

A[N-1,2]

A[2,N-1]

нц для i от 1 до N
вывод A[i, ], " "
кц

N+1-i

сумма номеров строки и столбца N+1

A[1,1]


Слайд 57 Операции с матрицами
Задача 3. Найти сумму элементов, стоящих

Операции с матрицамиЗадача 3. Найти сумму элементов, стоящих на главной диагонали

на главной диагонали и ниже ее.
строка 1: A[1,1]
строка 2:

A[2,1]+A[2,2]
...
строка N: A[N,1]+A[N,2]+...+A[N,N]

S:= 0;
нц для i от 1 до N



кц

нц для j от 1 до i
S:= S + A[i,j]
кц

складываем нужные элементы строки i

цикл по всем строкам

i


Слайд 58 Операции с матрицами
Задача 4. Перестановка строк или столбцов.

Операции с матрицамиЗадача 4. Перестановка строк или столбцов. В матрице из

В матрице из N строк и M столбцов переставить

2-ую и 4-ую строки.

2

4

j

A[2,j]

A[4,j]

нц для j от 1 до M
c:= A[2,j]
A[2,j]:= A[4,j]
A[4,j]:= c
кц

Задача 5. К третьему столбцу добавить шестой.

нц для i от 1 до N
A[i,3]:= A[i,3] + A[i,6]
кц


Слайд 59
Задания
Заполнить матрицу из 7 строк и 7 столбцов

ЗаданияЗаполнить матрицу из 7 строк и 7 столбцов случайными числами в

случайными числами в интервале [10,90] и вывести ее на

экран. Заполнить элементы, отмеченные зеленым фоном, числами 99, и вывести полученную матрицу на экран.

«3»: «4»: «5»:


Слайд 60 Программирование на алгоритмическом языке. Часть II
Тема 6. Файлы

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

Слайд 61 Файлы
Файл – это данные на диске, имеющие имя.
Файлы
только

ФайлыФайл – это данные на диске, имеющие имя.Файлытолько текст без оформления,

текст без оформления, не содержат управляющих символов (с кодами

32)

ACSII (1 байт на символ)
UNICODE (>1 байта на символ)

*.txt, *.log,
*.htm, *.html

могут содержать любые символы кодовой таблицы

*.doc, *.exe,
*.bmp, *.jpg,
*.wav, *.mp3,
*.avi, *.mpg

Текстовые

Двоичные

Каталоги (папки)


Слайд 62 Работа с файлами: принцип сэндвича

I этап. открыть файл:
сделать

Работа с файлами: принцип сэндвичаI этап. открыть файл:сделать его активным, приготовить

его активным, приготовить к работе
связать переменную F с

файлом


F:= открыть на чтение("in.txt")

II этап: работа с файлом

цел F

III этап: закрыть файл

закрыть(F)


Фввод F, a, b | ввести a и b

F:= открыть на запись("out.txt")

Фвывод F, a, b, нс | вывести a и b


Слайд 63 Работа с файлами
Особенности:
имя файла упоминается только при открытии

Работа с файламиОсобенности:имя файла упоминается только при открытии файла, работа с

файла, работа с файлом – через файловую переменную
файл, который

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

Слайд 64 Последовательный доступ
при открытии файла курсор устанавливается в начало
чтение

Последовательный доступпри открытии файла курсор устанавливается в началочтение выполняется с той

выполняется с той позиции, где стоит курсор
после чтения курсор

сдвигается на первый непрочитанный символ

12 5 45 67 56●


12 5 45 67 56●

F:= открыть на чтение("qq.txt")

Фввод F, x












конец файла


Слайд 65 Последовательный доступ
как вернуться назад и начать с начала?


не

Последовательный доступкак вернуться назад и начать с начала?не открывая файл зановоначать

открывая файл заново
начать чтение ( F )
закрыть (

F )
F:= открыть на чтение ( "qq.txt" )

Слайд 66 Пример

Задача: в файле input.txt записаны числа (в столбик),

ПримерЗадача: в файле input.txt записаны числа (в столбик), сколько их –

сколько их – неизвестно. Записать в файл output.txt их

сумму.
Алгоритм:
Открыть файл input.txt для чтения.
S := 0
Если чисел не осталось, перейти к шагу 7.
Прочитать очередное число в переменную x.
S := S + x
Перейти к шагу 3.
Закрыть файл input.txt.
Открыть файл output.txt для записи.
Записать в файл значение S.
Закрыть файл output.txt.

цикл «пока есть данные»


Слайд 67 Программа: чтение данных из файла
использовать Файлы П
алг Сумма

Программа: чтение данных из файлаиспользовать Файлы Палг Сумма чиселнач цел F,

чисел
нач
цел F, S, x
F:= открыть на чтение("input.txt")

S:= 0
нц пока не конец файла( F )
Фввод F, x
S:= S + x
кц
закрыть( F )
| здесь нужно записать результат в файл
кон

логическая функция, возвращает да, если достигнут конец файла


Слайд 68 Программа: запись результата в файл
F:= открыть на запись("output.txt")
Фвывод

Программа: запись результата в файлF:= открыть на запись(

F, S
закрыть( F )
Особенности:
файл, который открывается на запись, не

обязательно должен существовать
старое содержимое файла уничтожается

Слайд 69 Задания

В файле input.txt записаны числа, сколько их –

ЗаданияВ файле input.txt записаны числа, сколько их – неизвестно. «3»: Найти

неизвестно.
«3»: Найти сумму всех чётных чисел и записать

её в файл output.txt.
«4»: Найти минимальное и максимальное из всех чисел и записать их в файл output.txt.
«5»: Найти длину самой длинной цепочки одинаковых чисел, идущих подряд, и записать её в файл output.txt.

Слайд 70 Обработка массивов
Задача: в файле input.txt записаны числа (в

Обработка массивовЗадача: в файле input.txt записаны числа (в столбик), сколько их

столбик), сколько их – неизвестно, но не более 100.

Переставить их в порядке возрастания и записать в файл output.txt.
Проблемы:
для сортировки надо удерживать в памяти все числа сразу (нужен массив!);
сколько чисел – неизвестно.
Решение:
выделяем в памяти массив из 100 элементов;
записываем прочитанные числа в массив и считаем их с помощью переменной N;
сортируем первые N элементов массива;
записываем их в файл.

Слайд 71 Программа: чтение данных в массив
использовать Файлы П
алг Сортировка
нач

Программа: чтение данных в массивиспользовать Файлы Палг Сортировканач цел F, MAX

цел F, MAX = 100, N = 0, i,

j, c
целтаб A[1:MAX]
F:= открыть на чтение("input.txt")
нц пока не конец файла(F) и N < MAX
N:= N + 1
Фввод F, A[N]
кц
закрыть(F)
| отсортировать первые N элементов
| вывести полученный массив
кон

цикл заканчивается, если достигнут конец файла или прочитали 100 чисел


Слайд 72 Программа: вывод массива в файл
F:= открыть на запись("output.txt")
нц

Программа: вывод массива в файлF:= открыть на запись(

для i от 1 до N
Фвывод F, A[i],

нс
кц
закрыть(F)

зачем?


Слайд 73 Задания

В файле input.txt записаны числа (в столбик), известно,

ЗаданияВ файле input.txt записаны числа (в столбик), известно, что их не

что их не более 100.
«3»: Отсортировать массив по

убыванию и записать его в файл output.txt.
«4»: Отсортировать массив по убыванию последней цифры и записать его в файл output.txt.
«5»: Отсортировать массив по возрастанию суммы цифр и записать его в файл output.txt.

Слайд 74 Обработка текстовых данных
Задача: в файле input.txt записаны строки,

Обработка текстовых данныхЗадача: в файле input.txt записаны строки, в которых есть

в которых есть слово-паразит «короче». Очистить текст от мусора

и записать в файл output.txt.
Файл input.txt :
Мама, короче, мыла, короче, раму.
Декан, короче, пропил, короче, бутан.
А роза, короче, упала на лапу, короче, Азора.
Каждый, короче, охотник желает, короче, знать, где ...
Результат - файл output.txt :
Мама мыла раму.
Декан пропил бутан.
А роза упала на лапу Азора.
Каждый охотник желает знать, где сидит фазан.

Слайд 75 Обработка текстовых данных
Алгоритм:
Прочитать строку из файла.
Удалить

Обработка текстовых данныхАлгоритм: Прочитать строку из файла. Удалить все сочетания

все сочетания ", короче,".
Записать строку в другой файл.

Перейти к шагу 1.

Особенность:
надо одновременно держать открытыми два файла: один в режиме чтения, второй – в режиме записи.

пока не кончились данные


Слайд 76 Работа с двумя файлами одновременно
использовать Строки
использовать Файлы П
алг

Работа с двумя файлами одновременноиспользовать Строкииспользовать Файлы Палг Обработка строкнач цел

Обработка строк
нач
цел fIn, fOut
fIn:= открыть на чтение("input.txt")

fOut:= открыть на запись("output.txt")
| обработка файла
закрыть(fIn)
закрыть(fOut)
кон

Слайд 77 Цикл обработки файла
нц пока не конец файла(fIn)
Фввод

Цикл обработки файланц пока не конец файла(fIn) Фввод fIn, s |

fIn, s
| обработка строки s
Фвывод fOut,

s, нс
кц

Слайд 78 Обработка одной строки
нц пока да
p:= найти(", короче,",

Обработка одной строкинц пока да p:= найти(

s)
если p < 1 то выход все
s:=

s[1:p-1] + s[p+9:длин(s)]
кц

бесконечный цикл

выход из цикла

удалить 9 символов

s

p

p+9

1

длин(s)






Слайд 79 Задания

В файле input.txt записаны строки, сколько их –

ЗаданияВ файле input.txt записаны строки, сколько их – неизвестно. «3»: Заменить

неизвестно.
«3»: Заменить все слова «короче» на «в общем»

и записать результат в файл output.txt.
«4»: Вывести в файл output.txt только те строки, в которых есть слово «пароход». В этих строках заменить все слова «короче» на «в общем».
«5»: Вывести в файл output.txt только те строки, в которых больше 5 слов (слова могут быть разделены несколькими пробелами).

Слайд 80 Сортировка списков
Задача: в файле list.txt записаны фамилии и

Сортировка списковЗадача: в файле list.txt записаны фамилии и имена пользователей сайта

имена пользователей сайта (не более 100). Вывести их в

алфавитном порядке в файл sort.txt.
Файл list.txt :
Федоров Иван
Иванов Федор
Анисимов Никита
Никитин Николай
Результат – файл sort.txt :
Анисимов Никита
Иванов Федор
Никитин Николай
Федоров Иван

Слайд 81 Сортировка списков

Алгоритм:
прочитать строки из файла в массив

Сортировка списковАлгоритм: прочитать строки из файла в массив строк, подсчитать их

строк, подсчитать их в переменной N
отсортировать первые N строк

массива по алфавиту
вывести первые N строк массива в файл

Объявление массива (с запасом):

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


Слайд 82 Сортировка списков

Ввод массива строк из файла:
f:= открыть

Сортировка списковВвод массива строк из файла: f:= открыть на чтение(

на чтение("list.txt")
N:= 0
нц пока не конец файла(f)
N:= N

+ 1
Фввод f, s[N]
кц
закрыть(f)

цел f, N

Вывод первых N строк массива в файл:

f:= открыть на запись("sort.txt")
нц для i от 1 до N
Фвывод f, s[i], нс
кц
закрыть(f)


Слайд 83 Сортировка списков

Сортировка первых N элементов массива:
нц для

Сортировка списковСортировка первых N элементов массива: нц для i от 1

i от 1 до N-1
nMin:= i
нц для

j от i+1 до N
если s[j] < s[nMin] то nMin:= j все
кц
если i <> nMin то
c:= s[i]
s[i]:= s[nMin]
s[nMin]:= c
все
кц

цел i, j, nMin
лит c


Слайд 84 Сортировка списков

Как сравниваются строки:
||
||
||
||
?
s1
s2
Кодовая таблица:
Win
UNICODE
245
226
код("х") >

код("в")
"х" > "в"
"Пароход" > "Паровоз"


Слайд 85 Сортировка списков

Как сравниваются строки:
||
||
||
?
s1
s2
"х" > ¤
"Пароход" >

"Пар"


Слайд 86 Сортировка списков

Работа с отдельной строкой массива:
литтаб s[1:MAX]
лит

Сортировка списковРабота с отдельной строкой массива: литтаб s[1:MAX]лит c | вспомогательная

c | вспомогательная строка
нц для i от 1

до N
с:= s[i]
| работаем со строкой c, меняем ее
s[i]:= c
кц

Слайд 87 Задания

«3»: Добавить к списку нумерацию:
1) Анисимов

Задания«3»: Добавить к списку нумерацию: 1) Анисимов Никита 2) Иванов Федор«4»:

Никита
2) Иванов Федор
«4»: Выполнить задачу на «3»

и сократить имя до первой буквы:
1) Анисимов Н.
2) Иванов Ф.
«5»: Выполнить задачу на «4», но при выводе начинать с имени:
1) Н. Анисимов
2) Ф. Иванов

Слайд 88 Списки с числовыми данными
Задача: в файле marks.txt записаны

Списки с числовыми даннымиЗадача: в файле marks.txt записаны фамилии и имена

фамилии и имена школьников и баллы, полученные ими на

экзамене (0-100). В файле не более 100 строк. Вывести в файл best.txt список тех, кто получил более 75 баллов.
Файл marks.txt :
Федоров Иван 78
Иванов Федор 63
Анисимов Никита 90
Никитин Николай 55
Результат – файл best.txt :
Федоров Иван 78
Анисимов Никита 90

Слайд 89 Работа с двумя файлами одновременно
использовать Файлы П
использовать Строки
алг

Работа с двумя файлами одновременноиспользовать Файлы Писпользовать Строкиалг Отметки на экзамененач

Отметки на экзамене
нач
цел fIn, fOut
fIn:= открыть на

чтение("marks.txt")
fOut:= открыть на запись("best.txt")
| обработка строк из файла
закрыть(fIn)
закрыть(fOut)
кон

Слайд 90 Цикл обработки файла
цел ball
нц пока не конец файла(fIn)

Цикл обработки файлацел ballнц пока не конец файла(fIn) Фввод fIn, s

Фввод fIn, s
| обработка строки s

| ball:= результат на экзамене
если ball > 75 то
Фвывод fOut, s, нс
все
кц

Слайд 94 Задания

«3»: Добавить к списку нумерацию:
1) Федоров

Задания«3»: Добавить к списку нумерацию: 1) Федоров Иван 78	2) Анисимов Никита

Иван 78
2) Анисимов Никита 90
«4»: Выполнить задачу на «3»

и сократить имя до первой буквы:
1) Федоров И. 78
2) Анисимов Н. 90
«5»: Выполнить задачу на «4», но отсортировать список по алфавиту.
1) Анисимов Н. 90
2) Федоров И. 78
«6»: Выполнить задачу на «4», но отсортировать список по убыванию отметки (балла).

  • Имя файла: programirovanie-na-algoretmicheskom-yazyke-chast-3.pptx
  • Количество просмотров: 184
  • Количество скачиваний: 0
- Предыдущая 7 wonders of Belarus