Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемТарас Дятлов
1 К. Поляков, Программирование на алгоритмическом языке. Часть II 1. Массивы Массивы 2. Максимальный элемент массива Максимальный элемент массива 3. Обработка массивов Обработка массивов 4. Символьные строки Символьные строки 5. Матрицы Матрицы 6.Алгоритмы-функции Алгоритмы-функции 7. Построение графиков функций Построение графиков функций
2 К. Поляков, Программирование на алгоритмическом языке. Часть II Тема 1. Массивы
3 Программирование на алгоритмическом языке. Часть II К. Поляков, Массив – это группа однотипных элементов, имеющих общее имя и расположенных в памяти рядом. Особенности: все элементы имеют один тип весь массив имеет одно имя все элементы расположены в памяти рядом Примеры: список учеников в классе квартиры в доме школы в городе данные о температуре воздуха за год Массивы
4 Программирование на алгоритмическом языке. Часть II К. Поляков, Массивы A массив 3 15 НОМЕР элемента массива (ИНДЕКС) НОМЕР элемента массива (ИНДЕКС) A[1] A[2] A[3] A[4] A[5] ЗНАЧЕНИЕ элемента массива A[2] НОМЕР (ИНДЕКС) элемента массива: 2 ЗНАЧЕНИЕ элемента массива: 10
5 Программирование на алгоритмическом языке. Часть II К. Поляков, Объявление массивов Зачем объявлять? определить имя массива определить тип массива определить число элементов выделить место в памяти Массив целых чисел: Размер через переменную: имя начальный индекс конечный индекс тип элементов тип элементов целтаб A[ 1 : N ] цел N = 5 N целтаб A[ 1 : 5 ]
6 Программирование на алгоритмическом языке. Часть II К. Поляков, Объявление массивов Массивы других типов: Другой диапазон индексов: вещтаб X[1:10], Y[1:20] | вещественные X[1] := 4.25 сим табл[1:20] | символьный S[1] := "z" логтаб L[1:5] | логический L[1] := да | да или нет вещтаб X[1:10], Y[1:20] | вещественные X[1] := 4.25 сим табл[1:20] | символьный S[1] := "z" логтаб L[1:5] | логический L[1] := да | да или нет целтаб Q[0:9] вещтаб C[-5:13] целтаб Q[0:9] вещтаб C[-5:13]
7 Программирование на алгоритмическом языке. Часть II К. Поляков, Что неправильно? целтаб A [10:1]... A[5] := 4.5; целтаб A [10:1]... A[5] := 4.5; [1:10] целтаб A[1:10]... A[15] := "a" целтаб A[1:10]... A[15] := "a"
8 Программирование на алгоритмическом языке. Часть II К. Поляков, Как обработать все элементы массива? Объявление: Обработка: цел N = 5 целтаб A[1:N] цел N = 5 целтаб A[1:N] | обработать A[1] | обработать A[2] | обработать A[3] | обработать A[4] | обработать A[5] | обработать A[1] | обработать A[2] | обработать A[3] | обработать A[4] | обработать A[5] 1) если N велико (1000, )? 2) при изменении N программа не должна меняться! ?
9 Программирование на алгоритмическом языке. Часть II К. Поляков, Как обработать все элементы массива? Обработка с переменной: 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:= 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
10 Программирование на алгоритмическом языке. Часть II К. Поляков, Простейшая программа Объявление: Ввод с клавиатуры: Обработка каждого элемента: цел N = 5, i целтаб A[1:N] цел N = 5, i целтаб A[1:N] нц для i от 1 до N вывод "A[",i,"]=" ввод A[i] кц нц для i от 1 до N вывод "A[",i,"]=" ввод A[i] кц A[1] = A[2] = A[3] = A[4] = A[5] = нц для i от 1 до N A[i]:= A[i]+1 кц нц для i от 1 до N A[i]:= A[i]+1 кц вывод "Массив A", нс нц для i от 1 до N вывод A[i], " " кц вывод "Массив A", нс нц для i от 1 до N вывод A[i], " " кц Массив A: Вывод на экран:
11 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания «3»: Ввести c клавиатуры массив из 5 элементов, умножить их на 2 и вывести на экран. Пример: Введите пять чисел: Результат: «4»: Ввести c клавиатуры массив из 5 элементов, найти среднее арифметическое всех элементов массива. Пример: Введите пять чисел: среднее арифметическое При изменении N остальная программа не должна изменяться! !
12 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания «5»: Ввести c клавиатуры массив из 5 элементов, найти минимальный из них. Пример: Введите пять чисел: минимальный элемент 3
13 К. Поляков, Программирование на алгоритмическом языке. Часть II Тема 2. Максимальный элемент массива
14 Программирование на алгоритмическом языке. Часть II К. Поляков, Максимальный элемент Задача: найти в массиве максимальный элемент. Алгоритм: Решение: 1)считаем, что первый элемент – максимальный 2)просмотреть остальные элементы массива: если очередной элемент > M, то записать A[i] в M 3)вывести значение M
15 Программирование на алгоритмическом языке. Часть II К. Поляков, Максимальный элемент начало конец нет да нет да i M? M:= A[i] i:= i + 1 пока считаем, что первый – максимальный пока считаем, что первый – максимальный начать со 2-ого перейти к следующему нашли новый максимум
16 Программирование на алгоритмическом языке. Часть II К. Поляков, Максимальный элемент алг Максимум нач цел i, N = 5, M целтаб A[1:N] | здесь заполнить массив M:= A[1] | пока максимальный – A[1] нц для i от 2 до N если A[i] > M то M:= A[i] все кц вывод "Максимальный элемент ", M кон алг Максимум нач цел i, N = 5, M целтаб A[1:N] | здесь заполнить массив M:= A[1] | пока максимальный – A[1] нц для i от 2 до N если A[i] > M то M:= A[i] все кц вывод "Максимальный элемент ", M кон M то M:= A[i] все кц вывод "Максимальный элемент ", M кон">
17 Программирование на алгоритмическом языке. Часть II К. Поляков, Максимальный элемент M:= A[1] | пока первый – максимальный iMax:= 1 нц для i от 2 до N | проверяем остальные если A[i] > M то | нашли еще больше M:= A[i] | запомнить A[i] iMax:= i | запомнить i все кц вывод "Максимальный элемент A[",iMax,"]=",M M:= A[1] | пока первый – максимальный iMax:= 1 нц для i от 2 до N | проверяем остальные если A[i] > M то | нашли еще больше M:= A[i] | запомнить A[i] iMax:= i | запомнить i все кц вывод "Максимальный элемент A[",iMax,"]=",M Дополнение: как найти номер максимального элемента? По номеру элемента iMax всегда можно найти его значение A[iMax]. Поэтому везде меняем M на A[iMax] и убираем переменную M. A[iMax] Как упростить? ? M то | нашли еще больше M:= A[i] | запомнить A[i] iMax:= i | запомнить i все кц вывод "Максимальный элемент A[",iMax,"]=",M Дополнение: как найти номер максимального элемента? По номеру элемента iMax всегда можно найти его значение A[iMax]. Поэтому везде меняем M на A[iMax] и убираем переменную M. A[iMax] Как упростить? ?">
18 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания «3»: Ввести с клавиатуры массив из 5 элементов, найти в нем минимальный элемент и его номер. Пример: Исходный массив: минимальный A[4]=-10 «4»: Ввести с клавиатуры массив из 5 элементов, найти в нем максимальный и минимальный элементы и их номера. Пример: Исходный массив: максимальный A[3]=10 минимальный A[4]=-10
19 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания «5»: Ввести с клавиатуры массив из 5 элементов, найти в нем два максимальных элемента и их номера. Пример: Исходный массив: максимальные A[3]=10, A[5]=5
20 К. Поляков, Программирование на алгоритмическом языке. Часть II Тема 3. Обработка массивов
21 Программирование на алгоритмическом языке. Часть II К. Поляков, Случайно… 1) встретить друга на улице 2) разбить тарелку 3) найти 10 рублей 4) выиграть в лотерею Случайный выбор: 1) жеребьевка на соревнованиях 2) выигравшие номера в лотерее Как получить случайность? 21 Случайность и ее моделирование
22 Программирование на алгоритмическом языке. Часть II К. Поляков, Электронный генератор нужно специальное устройство нельзя воспроизвести результаты малый период (последовательность повторяется через 10 6 чисел) Метод середины квадрата (Дж. фон Нейман) в квадрате Псевдослучайные числа – обладают свойствами случайных чисел, но каждое следующее число вычисляется по заданной формуле. 22 Случайные числа на компьютере
23 Программирование на алгоритмическом языке. Часть II К. Поляков, Модель: снежинки падают на отрезок [a,b] a b a b распределение равномерное неравномерное Сколько может быть разных распределений? ? 23 Распределение случайных чисел
24 Программирование на алгоритмическом языке. Часть II К. Поляков, Особенности: распределение – это характеристика всей последовательности, а не одного числа равномерное распределение одно, компьютерные датчики случайных чисел дают равномерное распределение неравномерных – много любое неравномерное можно получить с помощью равномерного a b a b 24 Распределение случайных чисел
25 Программирование на алгоритмическом языке. Часть II К. Поляков, Вещественные числа в интервале [0,10): 25 Генератор случайных чисел вещ X, Y X:= rand(0, 10) | интервал от 0 до 10 (
26 Программирование на алгоритмическом языке. Часть II К. Поляков, Заполнение массива случайными числами цел i, N = 5 целтаб A[1:N] вывод "Массив ", нс нц для i от 1 до N A[i]:= irand(10, 30); вывод A[i], " " кц цел i, N = 5 целтаб A[1:N] вывод "Массив ", нс нц для i от 1 до N A[i]:= irand(10, 30); вывод A[i], " " кц Зачем сразу выводить? ?
27 Программирование на алгоритмическом языке. Часть II К. Поляков, Подсчет элементов Задача: заполнить массив случайными числами в интервале [-1,1] и подсчитать количество нулевых элементов. Идея: используем переменную-счётчик. Решение: 1)записать в счётчик ноль 2)просмотреть все элементы массива: если очередной элемент = 0, то увеличить счётчик на 1 3)вывести значение счётчика
28 Программирование на алгоритмическом языке. Часть II К. Поляков, Подсчет элементов начало конец нет да нет да i
29 Программирование на алгоритмическом языке. Часть II К. Поляков, Подсчет элементов цел count, i, N = 10 целтаб A[1:N] | здесь надо заполнить массив count:= 0 нц для i от 1 до N если A[i] = 0 то count:= count + 1 все кц цел count, i, N = 10 целтаб A[1:N] | здесь надо заполнить массив count:= 0 нц для i от 1 до N если A[i] = 0 то count:= count + 1 все кц перебираем все элементы массива
30 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания «3»: Заполнить массив случайными числами в интервале [-2,2] и подсчитать количество положительных элементов. «4»: Заполнить массив случайными числами в интервале [20,100] и подсчитать отдельно число чётных и нечётных элементов. «5»: Заполнить массив случайными числами в интервале [1000,2000] и подсчитать число элементов, у которых вторая с конца цифра – четная.
31 Программирование на алгоритмическом языке. Часть II К. Поляков, Сумма выбранных элементов Задача: заполнить массив случайными числами в интервале [-10,10] и подсчитать сумму положительных элементов. Идея: используем переменную S для накопления суммы. Решение: 1)записать в переменную S ноль 2)просмотреть все элементы массива: если очередной элемент > 0, то добавить к сумме этот элемент 3)вывести значение суммы S:=0S:= A[1]S:= A[1]+A[2] S:= A[1]+A[2]+A[3] S:= A[1]+A[2]+…+A[N] S:= S+A[i]
32 Программирование на языке Паскаль. Часть II К. Поляков, Сумма выбранных элементов начало конец нет да нет да i 0? S:= S + A[i] i:= i + 1 пока ни одного не нашли начать с 1-ого перейти к следующему нашли еще 1
33 Программирование на алгоритмическом языке. Часть II К. Поляков, Сумма выбранных элементов цел S, i, N = 10 целтаб A[1:N] | здесь надо заполнить массив S:= 0 нц для i от 1 до N если A[i] > 0 то S:= S + A[i] все кц цел S, i, N = 10 целтаб A[1:N] | здесь надо заполнить массив S:= 0 нц для i от 1 до N если A[i] > 0 то S:= S + A[i] все кц перебираем все элементы массива
34 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания «3»: Заполнить массив из 10 элементов случайными числами в интервале [-10,10] и подсчитать сумму всех отрицательных элементов. «4»: Заполнить массив из 10 элементов случайными числами в интервале [0,100] и подсчитать среднее значение всех элементов, которые
35 Программирование на алгоритмическом языке. Часть II К. Поляков, Поиск в массиве 35 Задача – найти в массиве элемент, равный X, или установить, что его нет. Пример: если в классе ученик с фамилией Пупкин? Алгоритм: 1)начать с 1-ого элемента ( i:=1 ) 2)если очередной элемент ( A[i] ) равен X, то закончить поиск иначе перейти к следующему элементу:
36 Программирование на алгоритмическом языке. Часть II К. Поляков, Поиск элемента, равного X начало конец нет да нет да i
37 Программирование на алгоритмическом языке. Часть II К. Поляков, Поиск в массиве 37 алг Поиск нач цел i, N = 5, X целтаб A[1:N] | здесь нужно заполнить массив вывод нс,"Что ищем? " ввод X i:= 1 нц пока i
38 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания «3»: Заполнить массив из 10 элементов случайными числами в интервале [10..20] и найти элемент, равный X. Пример: Исходный массив: Что ищем? 20 A[5] = 20 «4»: Заполнить массив из 10 элементов случайными числами в интервале [0..4] и вывести номера всех элементов, равных X. Пример: Исходный массив: Что ищем? 0 A[2], A[5], A[10]
39 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания «5»: Заполнить массив из 10 элементов случайными числами в интервале [0..4] и определить, есть ли в нем одинаковые соседние элементы. Пример: Исходный массив: Ответ: есть
40 К. Поляков, Программирование на алгоритмическом языке. Часть II Тема 4. Символьные строки
41 Программирование на алгоритмическом языке. Часть II К. Поляков, Чем плох массив символов? 41 симтаб s[1:10] Это массив символов: каждый символ – отдельный объект; массив имеет длину, которая задана при объявлении Что нужно: обрабатывать последовательность символов как единое целое строка должна иметь переменную длину
42 Программирование на алгоритмическом языке. Часть II К. Поляков, Символьные строки 42 Привет!¤ 1 рабочая часть s[1] s[2] s[3] s[4] лит s Длина строки: n:= длин(s) цел n 2 Объявление строки:
43 Программирование на алгоритмическом языке. Часть II К. Поляков, Символьные строки 43 Задача: ввести строку с клавиатуры и заменить все буквы «а» на буквы «б». алг Замена а на б нач лит s вывод "Введите строку: " ввод s цел i нц для i от 1 до длин(s) если s[i] = "а" то s[i]:= "б" все кц вывод s кон алг Замена а на б нач лит s вывод "Введите строку: " ввод s цел i нц для i от 1 до длин(s) если s[i] = "а" то s[i]:= "б" все кц вывод s кон длина строки
44 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания 44 «3»: Ввести символьную строку и заменить все буквы «а» на буквы «б», как заглавные, так и строчные. Пример: Введите строку: ааббссААББСС Результат: ббббссББББСС «4»: Ввести символьную строку и заменить все буквы «а» на буквы «б» и наоборот, как заглавные, так и строчные. Пример: Введите строку: ааббссААББСС Результат: ббаассББААСС
45 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания 45 «5»: Ввести символьную строку и проверить, является ли она палиндромом (палиндром читается одинаково в обоих направлениях). Пример: Пример: Введите строку: Введите строку: АБВГДЕ КАЗАК Результат: Результат: Не палиндром. Палиндром.
46 Программирование на алгоритмическом языке. Часть II К. Поляков, Операции со строками 46 Объединение: добавить одну строку в конец другой. Запись нового значения: лит s, s1, s2 s:= "Вася" s1:= "Привет" s2:= "Вася" s := s1 + ", " + s2 + "!" s1:= "Привет" s2:= "Вася" s := s1 + ", " + s2 + "!" | "Привет, Вася!" Подстрока: выделить часть строки в другую строку. s:= " " s1:= s[3:8] s2:= s1[2:4] s:= " " s1:= s[3:8] s2:= s1[2:4] | "345678" | "456"
47 Программирование на алгоритмическом языке. Часть II К. Поляков, Удаление и вставка 47 Удаление части строки: Вставка в строку: s:= " " s:= удалить(s, 3, 6); s:= " " s:= удалить(s, 3, 6); с 3-его символа 6 штук строка меняется! строка меняется! ' ' '129' s:= " " s:= вставить("ABC", s, 3) s:= вставить( "Q", s, 5 ) s:= " " s:= вставить("ABC", s, 3) s:= вставить( "Q", s, 5 ) куда вставляем что вставляем начиная с 3-его символа '12ABC ' '12ABQC '
0 то вывод "Буква е – это s[", n, "]" иначе вывод "Не наш" title="Программирование на алгоритмическом языке. Часть II К. Поляков, 2010-2012 http://kpolyakov.narod.ru Поиск в строке ( найти ) 48 Поиск в строке: s:= "Здесь был Вася." n:= найти("е", s) если n > 0 то вывод "Буква е – это s[", n, "]" иначе вывод "Не наш" class="link_thumb"> 48 Программирование на алгоритмическом языке. Часть II К. Поляков, Поиск в строке ( найти ) 48 Поиск в строке: s:= "Здесь был Вася." n:= найти("е", s) если n > 0 то вывод "Буква е – это s[", n, "]" иначе вывод "Не нашли" все n:= найти("Вася", s) s1:= s[n:n+3] s:= "Здесь был Вася." n:= найти("е", s) если n > 0 то вывод "Буква е – это s[", n, "]" иначе вывод "Не нашли" все n:= найти("Вася", s) s1:= s[n:n+3] s[3] 3 3 n = 11 Особенности: функция найти возвращает номер символа, с которого начинается образец в строке если образец не найден, возвращается -1 поиск с начала (находится первое слово) цел n Вася 0 то вывод "Буква е – это s[", n, "]" иначе вывод "Не наш"> 0 то вывод "Буква е – это s[", n, "]" иначе вывод "Не нашли" все n:= найти("Вася", s) s1:= s[n:n+3] s:= "Здесь был Вася." n:= найти("е", s) если n > 0 то вывод "Буква е – это s[", n, "]" иначе вывод "Не нашли" все n:= найти("Вася", s) s1:= s[n:n+3] s[3] 3 3 n = 11 Особенности: функция найти возвращает номер символа, с которого начинается образец в строке если образец не найден, возвращается -1 поиск с начала (находится первое слово) цел n Вася"> 0 то вывод "Буква е – это s[", n, "]" иначе вывод "Не наш" title="Программирование на алгоритмическом языке. Часть II К. Поляков, 2010-2012 http://kpolyakov.narod.ru Поиск в строке ( найти ) 48 Поиск в строке: s:= "Здесь был Вася." n:= найти("е", s) если n > 0 то вывод "Буква е – это s[", n, "]" иначе вывод "Не наш">
49 Программирование на алгоритмическом языке. Часть II К. Поляков, Примеры 49 s:= "Вася Петя Митя" n:= найти( "Петя", s ) s:= удалить(s, n, 4) s:= вставить("Куку", s, n ) s:= "Вася Петя Митя" n:= найти( "Петя", s ) s:= удалить(s, n, 4) s:= вставить("Куку", s, n ) 'Вася Куку Митя' s:= "Вася Петя Митя" n:= длин( s ) s1:= s[1:4] s2:= s[11:14] s3:= s[6:9] s:= s3 + s1 + s2 n:= длин( s ) s:= "Вася Петя Митя" n:= длин( s ) s1:= s[1:4] s2:= s[11:14] s3:= s[6:9] s:= s3 + s1 + s2 n:= длин( s ) 'Вася Митя' 14 'Вася' 'Митя' 'Петя' 'Петя ВасяМитя'
50 Программирование на алгоритмическом языке. Часть II К. Поляков, Пример решения задачи 50 Задача: Ввести имя, отчество и фамилию. Преобразовать их к формату «фамилия-инициалы». Пример: Введите имя, отчество и фамилию: Василий Алибабаевич Хрюндиков Результат: Хрюндиков В.А. Алгоритм: найти первый пробел и выделить имя удалить имя с пробелом из основной строки найти первый пробел и выделить отчество удалить отчество с пробелом из основной строки «сцепить» фамилию, первые буквы имени и фамилии, точки, пробелы…
51 Программирование на алгоритмическом языке. Часть II К. Поляков, Программа 51 использовать Строки алг ФИО нач лит s, имя, отчество цел n вывод "Введите имя, отчество и фамилию" ввод s n:= найти(" ", s); имя:= s[1:n-1] | вырезать имя s:= удалить(s, 1, n) n:= найти(" ", s) отчество:= s[1:n-1] | вырезать отчество s:= удалить(s, 1, n) | осталась фамилия s:= s + " " + имя[1] + "." + отчество[1] + "." вывод s кон использовать Строки алг ФИО нач лит s, имя, отчество цел n вывод "Введите имя, отчество и фамилию" ввод s n:= найти(" ", s); имя:= s[1:n-1] | вырезать имя s:= удалить(s, 1, n) n:= найти(" ", s) отчество:= s[1:n-1] | вырезать отчество s:= удалить(s, 1, n) | осталась фамилия s:= s + " " + имя[1] + "." + отчество[1] + "." вывод s кон
52 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания 52 «3»: Ввести в одну строку фамилию, имя и отчество, разделив их пробелом. Вывести инициалы и фамилию. Пример: Введите фамилию, имя и отчество: Иванов Петр Семёнович Результат: П.С. Иванов «4»: Ввести имя файла (возможно, без расширения) и изменить его расширение на «.exe ». Пример: Введите имя файла: Введите имя файла: qqq qqq.com Результат: Результат: qqq.exe qqq.exe
53 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания 53 «5»: Ввести путь к файлу и «разобрать» его, выводя каждую вложенную папку с новой строки Пример: Введите путь к файлу: C:\Мои документы\10-Б\Вася\qq.exe Результат: C: Мои документы 10-Б Вася qq.exe
54 Программирование на алгоритмическом языке. Часть II К. Поляков, Задачи на обработку строк 54 Задача: с клавиатуры вводится символьная строка, представляющая собой сумму двух целых чисел, например: Вычислить эту сумму: 12+35=47 Алгоритм: 1)найти знак «+» 2)выделить числа слева и справа в отдельные строки 3)перевести строки в числа 4)сложить 5)вывести результат
55 Программирование на алгоритмическом языке. Часть II К. Поляков, Преобразования «строка»-«число» 55 Из строки в число: s:= "123" N:= лит_в_цел(s, OK) | N = 123 если не OK то вывод "Ошибка!" все s:= " "; X:= лит_в_вещ(s, OK) | X = если не OK то вывод "Ошибка!" все s:= "123" N:= лит_в_цел(s, OK) | N = 123 если не OK то вывод "Ошибка!" все s:= " "; X:= лит_в_вещ(s, OK) | X = если не OK то вывод "Ошибка!" все Из числа в строку: N:= 123 s:= цел_в_лит(N) | "123" X:= s:= вещ_в_лит(X) | " " N:= 123 s:= цел_в_лит(N) | "123" X:= s:= вещ_в_лит(X) | " " цел N, вещ X, лит s, лог OK да или нет
56 Программирование на алгоритмическом языке. Часть II К. Поляков, Программа 56 использовать Строки алг Калькулятор нач лит s, s1, s2 цел n, n1, n2, sum лог OK вывод "Введите выражение (сумму двух чисел): " ввод s n:= найти("+", s) s1:= s[1:n-1] s2:= s[n+1:длин(s)] n1:= лит_в_цел(s1, OK) n2:= лит_в_цел(s2, OK) sum:= n1 + n2 вывод n1, "+", n2, "=", sum кон использовать Строки алг Калькулятор нач лит s, s1, s2 цел n, n1, n2, sum лог OK вывод "Введите выражение (сумму двух чисел): " ввод s n:= найти("+", s) s1:= s[1:n-1] s2:= s[n+1:длин(s)] n1:= лит_в_цел(s1, OK) n2:= лит_в_цел(s2, OK) sum:= n1 + n2 вывод n1, "+", n2, "=", sum кон слагаемые-строки слагаемые-числа сумма слагаемые-строки слагаемые-числа 57 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания 57 «3»: Ввести арифметическое выражение: разность двух чисел. Вычислить эту разность. Пример: Ответ: 13 «4»: Ввести арифметическое выражение: сумму трёх чисел. Вычислить эту сумму. Пример: Ответ: 71
58 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания 58 «5»: Ввести арифметическое выражение c тремя числами, в котором можно использовать сложение и вычитание. Вычислить это выражение. Пример: Пример: Ответ: 71 Ответ: 3 Пример: Ответ: 47 Ответ: -21
59 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания 59 «6»: Ввести арифметическое выражение c тремя числами, в котором можно использовать сложение, вычитание и умножение. Вычислить это выражение. Пример: Пример: 25+12*3 25*2-34 Ответ: 61 Ответ: 16 Пример: *2*3 Ответ: 47 Ответ: 150
60 К. Поляков, Программирование на алгоритмическом языке. Часть II Тема 5. Матрицы
61 Программирование на алгоритмическом языке. Часть II К. Поляков, Матрицы 61 Задача: запомнить положение фигур на шахматной доске abcdefgh c6 A[6,3]
62 Программирование на алгоритмическом языке. Часть II К. Поляков, Матрицы 62 Матрица – это прямоугольная таблица чисел (или других элементов одного типа). Матрица – это массив, в котором каждый элемент имеет два индекса (номер строки и номер столбца) A строка 2 столбец 3 ячейка A[3,4]
63 Программирование на алгоритмическом языке. Часть II К. Поляков, Матрицы 63 Объявление: цел N = 3, M = 4 целтаб A[1:N,1:M] целтаб B[-3:0,-8:M] цел N = 3, M = 4 целтаб A[1:N,1:M] целтаб B[-3:0,-8:M] Ввод с клавиатуры: нц для i от 1 до N нц для j от 1 до M вывод "A[", i, ",", j, "]=" ввод A[i,j] кц нц для i от 1 до N нц для j от 1 до M вывод "A[", i, ",", j, "]=" ввод A[i,j] кц Если переставить циклы? ? A[1,1]=25 A[1,2]=14 A[1,3]=14... A[3,4]=54 i i j j нц для j от 1 до M нц для i от 1 до N
64 Программирование на алгоритмическом языке. Часть II К. Поляков, Матрицы 64 Заполнение случайными числами нц для i от 1 до N нц для j от 1 до M A[i,j]:= irand(20,80) кц нц для i от 1 до N нц для j от 1 до M A[i,j]:= irand(20,80) кц цикл по строкам цикл по столбцам Вывод на экран нц для i от 1 до N вывод нс кц нц для i от 1 до N вывод нс кц нц для j от 1 до M вывод A[i,j] кц нц для j от 1 до M вывод A[i,j] кц вывод строки Если переставить циклы? ? Что плохо? ?, " "
65 Программирование на алгоритмическом языке. Часть II К. Поляков, Обработка всех элементов матрицы 65 Задача: заполнить матрицу из 3 строк и 4 столбцов случайными числами и вывести ее на экран. Найти сумму элементов матрицы. алг Сумма нач цел N = 3, M = 4, i, j целтаб A[1:N,1:M] | заполнение матрицы и вывод на экран цел S = 0 нц для i от 1 до N нц для j от 1 до M S:= S + A[i,j] кц вывод "Сумма элементов матрицы: ", S кон алг Сумма нач цел N = 3, M = 4, i, j целтаб A[1:N,1:M] | заполнение матрицы и вывод на экран цел S = 0 нц для i от 1 до N нц для j от 1 до M S:= S + A[i,j] кц вывод "Сумма элементов матрицы: ", S кон
66 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания 66 Заполнить матрицу из 8 строк и 5 столбцов случайными числами в интервале [10,90] и вывести ее на экран. Затем … «3»: Удвоить все элементы матрицы и вывести её на экран. «4»: Найти минимальный и максимальный элементы в матрице их номера. Формат вывода: Минимальный элемент A[3,4]=11 Максимальный элемент A[2,2]=89 «5»: Вывести на экран строку, сумма элементов которой максимальна. Формат вывода: Строка 2:
67 К. Поляков, Программирование на алгоритмическом языке Тема 7. Алгоритмы-функции
68 Программирование на алгоритмическом языке. Часть II К. Поляков, Максимум из трех 68 начало конец a > b? да x:= a нет x:= b c > x? да x:= c a a b b x x x x c c Где ответ? ? нет
69 Программирование на алгоритмическом языке. Часть II К. Поляков, Максимум из трех 69 алг цел Макс 3(цел a, b, c) нач цел x если a > b то x:= a иначе x:= b все если c > x то x:= c все знач := x кон знач цел x цел результат – целое число внутренняя (локальная) переменная результат (значение) функции
70 Программирование на алгоритмическом языке. Часть II К. Поляков, Максимум из трех 70 алг Максимум нач цел Z, X, C, M вывод "Введите три числа " ввод Z, X, C M:= Макс 3(Z, X, C) вывод "Максимум: ", M кон алг Максимум нач цел Z, X, C, M вывод "Введите три числа " ввод Z, X, C M:= Макс 3(Z, X, C) вывод "Максимум: ", M кон алг цел Макс 3(цел a, b, c) нач... кон вызов функции имена параметров могут быть любые!
71 Программирование на алгоритмическом языке. Часть II К. Поляков, Максимум из пяти 71 Как с помощью этой функции найти максимум из пяти чисел? ? алг Максимум нач цел Z, X, C, V, B, M ввод Z, X, C, V, B M:= Макс 3( Макс 3(Z,X,C), V, B) вывод "Максимум: ", M кон алг Максимум нач цел Z, X, C, V, B, M ввод Z, X, C, V, B M:= Макс 3( Макс 3(Z,X,C), V, B) вывод "Максимум: ", M кон алг цел Макс 3(цел a, b, c) нач... кон ???
72 Программирование на алгоритмическом языке. Часть II К. Поляков, НОД трёх чисел 72 Задача: ввести три числа и найти наибольший общий делитель (НОД). Используйте формулу НОД(a,b,c) = НОД(НОД(a,b), c) Нужно два раза применить один и тот же алгоритм вычисления НОД двух чисел. ! Решение: построить вспомогательный алгоритм для вычисления НОД двух чисел и применить (вызвать) его два раза.
73 Программирование на алгоритмическом языке. Часть II К. Поляков, Общий вид программы 73 алг НОД трёх чисел нач цел a, b, c, N вывод "Введите три числа", нс ввод a, b, c N:= НОД(НОД(a,b), c) вывод N кон алг НОД трёх чисел нач цел a, b, c, N вывод "Введите три числа", нс ввод a, b, c N:= НОД(НОД(a,b), c) вывод N кон алг цел НОД(цел x, y) нач | здесь нужно вычислить НОД(x,y) кон алг цел НОД(цел x, y) нач | здесь нужно вычислить НОД(x,y) кон основной алгоритм вспомогательный алгоритм ???
74 Программирование на алгоритмическом языке. Часть II К. Поляков, Блок-схема алгоритма Евклида 74 a = b? да нет a > b? да a:=a-b нет b:=b-a начало конец
75 Программирование на алгоритмическом языке. Часть II К. Поляков, Алгоритм Евклида 75 алг цел НОД(цел x, y) нач цел a, b a:= x; b:= y | копии параметров нц пока a b если a > b то a:= a - b иначе b:= b - a все кц знач:= a | результат функции кон алг цел НОД(цел x, y) нач цел a, b a:= x; b:= y | копии параметров нц пока a b если a > b то a:= a - b иначе b:= b - a все кц знач:= a | результат функции кон
76 Программирование на алгоритмическом языке. Часть II К. Поляков, Рекурсивные функции 76 Факториал: если алг цел Факт(цел N) нач если N < 2 то знач:= 1 иначе знач:= N*Факт(N-1) все кон алг цел Факт(цел N) нач если N < 2 то знач:= 1 иначе знач:= N*Факт(N-1) все кон алг цел Факт(цел N) нач цел i знач:= 1 нц для i от 2 до N знач:= знач*i кц кон алг цел Факт(цел N) нач цел i знач:= 1 нц для i от 2 до N знач:= знач*i кц кон Алгоритм без рекурсии, как правило, работает быстрее и требует меньше памяти. !
77 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания «3 » : Составить функцию, которая определяет НАИМЕНЬШЕЕ из трёх чисел и привести пример ее использования. Пример: Введите три числа: Наименьшее число 10. «4» : Составить функцию, которая вычисляет НАИМЕНЬШЕЕ из четырёх чисел и привести пример ее использования. Пример: Введите четыре числа: Наименьшее число 5.
78 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания «5» : Составить функцию, которая определяет сумму всех чисел от 1 до N и привести пример ее использования. Пример: Введите число: 100 Сумма чисел от 1 до 100 = 5050
79 Программирование на алгоритмическом языке. Часть II К. Поляков, Логические функции 79 Задача: составить функцию, которая определяет, верно ли, что заданное число – четное. Особенности: ответ – логическое значение ( да или нет ) результат функции можно использовать как логическую величину в условиях ( если, пока ) Алгоритм: если число делится на 2, оно четное. если mod(N,2)= 0 то | число N четное иначе | число N нечетное все если mod(N,2)= 0 то | число N четное иначе | число N нечетное все
80 Программирование на алгоритмическом языке. Часть II К. Поляков, Логические функции 80 алг лог Четное(цел N) нач если mod(N,2) = 0 то знач:= да иначе знач:= нет все кон алг лог Четное(цел N) нач если mod(N,2) = 0 то знач:= да иначе знач:= нет все кон логическое значение ( да или нет )
81 Программирование на алгоритмическом языке. Часть II К. Поляков, Логические функции 81 алг Проверка четности нач цел x вывод "Введите целое число: " ввод x если Четное(x) то вывод "Число четное." иначе вывод "Число нечетное." все кон алг Проверка четности нач цел x вывод "Введите целое число: " ввод x если Четное(x) то вывод "Число четное." иначе вывод "Число нечетное." все кон алг лог Четное(цел N) нач... кон
82 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания 82 «3»: Составить функцию, которая определяет, верно ли, что число оканчивается на 0. Пример: Введите число:Введите число: Верно.Неверно. «4»: Составить функцию, которая определяет, верно ли, что в числе вторая цифра с конца больше 6. Пример: Введите число:Введите число: Верно.Неверно.
83 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания 83 «5»: Составить функцию, которая определяет, верно ли, что переданное ей число – простое (делится только на само себя и на единицу). Пример: Введите число:Введите число: 2928 Простое число.Составное число.
84 К. Поляков, Программирование на алгоритмическом языке. Часть II Тема 8. Построение графиков функций
85 Программирование на алгоритмическом языке. Часть II К. Поляков, Построение графиков функций 85 Задача: построить график функции y = x 2 на интервале от -2 до 2. Анализ: максимальное значение y max = 4 при x = ±2 минимальное значение y min = 0 при x = 0 Проблема: функция задана в математической системе координат, строить надо на экране, указывая координаты в пикселях. X Y
86 Программирование на алгоритмическом языке. Часть II К. Поляков, Преобразование координат 86 (x,y)(x,y) x y Математическая система координат Экранная система координат (пиксели) (xэ,yэ)(xэ,yэ) xэxэ yэyэ (0,0)(0,0) (0,0)(0,0) x0x0 y0y0 k – масштаб (длина изображения единичного отрезка на экране) x э = x 0 + kx y э = y 0 - ky x э = x 0 + kx y э = y 0 - ky X Y
87 Программирование на алгоритмическом языке. Часть II К. Поляков, Программа 87 на экране оси координат цикл построения графика использовать Рисователь алг График нач цел x0=150, y0=250, k=50, xe, ye вещ xmin=-2, xmax=2, x, y, h в точку(0,y0) линия в точку(x0+150,y0) в точку(x0,0) линия в точку(x0,y0+20) x:=xmin; h:=0.02 нц пока x
88 Программирование на алгоритмическом языке. Часть II К. Поляков, Как соединить точки? 88 Алгоритм: Если первая точка перейти в точку (x э,y э ) иначе линия в точку (x э,y э ) Если первая точка перейти в точку (x э,y э ) иначе линия в точку (x э,y э ) Программа: начальное значение выбор варианта действий логическая переменная лог первая... первая:= да нц пока x
89 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания 89 «3»: Построить график функции на интервале [-2,2]. «4»: Построить графики функций и на интервале [-2,2].
90 Программирование на алгоритмическом языке. Часть II К. Поляков, Задания 90 «5»: Построить графики функций и на интервале [-2,2]. Соединить точки линиями.
91 Программирование на алгоритмическом языке. Часть II К. Поляков, Конец фильма 91 ПОЛЯКОВ Константин Юрьевич д.т.н., учитель информатики высшей категории, ГОУ СОШ 163, г. Санкт-Петербург
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.