Свойства алгоритмов Массовость – способность алгоритма быть применимым
Свойства алгоритмов Массовость – способность алгоритма быть применимым не к одному исходному данному, а к целому классу таковых. Результативность – способность алгоритма приводить к результату. Детерминированность – способность алгоритма быть чётко и ясно сформулированным. Дискретность – способность алгоритмы быть разбитым на конечное число шагов. Конечность – способность алгоритма быть законченным.
Способы записи алгоритмов 1)Словесный 2)Графический 3)Структурно-стилизованный 4)Алгоритмический ( языки программирования) 5)Табличный
Значения графических блоков Блок ввода данных с клавиатуры, блок вывода результатов на экран. Блок начала и конца программы, процесса. Вычислительный процесс, действие. Логический блок (исп. В циклических и разветвляющихся алгоритмах). Вывод результатов на бумажный носитель. Циклический блок, повторяющийся процесс.
Задача №1 Дано: a, b Найти: a + b=? Алг сумма (вещ a, b, S) арг a, b рез S Нач S:=a+b Всё Конец начало a, b S:=a+b S конец
Задача №2 Дано: a, b Найти: Max-? Алг max 2x (вещ a, b, max) арг a, b рез max Нач если а>b то max:=a иначе max:=b Всё конец Начало a,b,c,d. a>b y:=a y:=b max конец
Задача №3 Алг max 3x (вещ a, b, c, max) арг a, b, c. рез max. Нач если а>b то y:=a иначе y:=b Всё если y>c то max:=y иначе max:=c Всё конец Начало a,b,c,d. a>b y:=a y:=b y>c max:=y max:=c max конец Да Да Нет Нет Дано: a, b, с Найти: Max-?
Начало a,b,c,d. a>b y:=a y:=b y>c z:=y z:=c z>d max:=d max:=d max конец Да Да Да Нет Нет Нет Алг max 4x (вещ a, b, c, d, max) арг a, b, c, d. рез max. Нач если а>b то y:=a иначе y:=b Всё если y>c то z:=y иначе z:=c Всё если z>d то max:=z иначе max:=d Всё конец Дано: a, b, c, d Найти: Max-? Задача №4
Задача №5 aлг Summa (вещ x, n, S); арг x, n рез S нач вещ i S:= 0 для i=1 до n нц S:=S+x кц кон S:=0 S:=S+x конец Для i от 1 до N или 1 начало n x S Дано: 1...n Найти: S-?
S:=0 S=S+i S конец Для i от 1 до N или 1 начало n i/2 S=0 Да Нет aлг Summa (вещ i, n, S); арг i, n рез S нач вещ i S:= 0 для i=1 до n нц если i:2 то S:=S+i иначе S=0 кц кон Дано: 1...n, Найти S для х:2. Задача №6
S:=0 S=S+i S конец Для i от 1 до N или 1 начало n 9
Задача №8 начало n i:=1,N x X>0 y:=x*x*x*x y:=x*x y конец Да Нет алг числ (вещ n, x, y) арг x,n рез y Нач Для i от 1 до n нц если x>0 то y:=x*x*x*x иначе y:=x*x кц конец Дано: x=i до n Найти: у; для x>0 у:=x*x*x*x для x<0 y:=x*x
Задача №9 Алг бакт (вещ t, b) арг t рез b Нач вещ i b:=1 Для i от 1 до t нц b:=2b кц конец t начало Для i от 1 до t b:=1 b:=2b b конец В начальный момент времени была одна бактерия, через минуту стало 2. Каждую минуту каждая бактерия делилась надвое. Написать программу, которая за введённые минуты считает кол-во бактерий.
Задача №10 Алг билет (вещ с1,c2,c3,c4,c5,c6,S1,S2) арг с1,c2,c3,c4,c5,c6 рез S1,S2 Нач S1:=c1+c2+c3 S2:=c4+c5+c6 если S1=S2 то happy иначе unhapppy Всё Конец. начало c1,c2,c3,c4,c5,c6 S1:=c1+c2+c3 S2:=c3+c4+c5 S1=S2 Happy unhappy конец Дано: с1,c2,c3,c4, c5,c6 Найти: с1+с2+с3 ? с3+с4+с5
Запись графически и на «Кумире» Алг min (вещ x,min) арг x рез min нач для i от 1 до 9 нц если x
Задача №12 Алг а1 (вещ S, a, b, c) арг а, b, c рез S S:=100a+10c+b нач если a=b то ‘palendrom’ иначе ‘ne palendrom’ всё Конец. начало S S:=100a+10c+b a=b palendrom Ne palendrom конец Составить программу, определяющую максимальное из 10 введённых с клавиатуры чисел. (числа могут быть как положительными, так и отрицательными)
Задача Алг 1 (вещ x, kp, ko) Арг х Рез кр, ко Нач Кр:=0 Ко:=0 Повторить Если x>0 То кр:=кр+1 Если x<0 То ко:=ко+1 Пока х=0 Всё конец начало Kp:=0 Ko:=0 x x>0 Kp:=kp+1 x<0 Ko:=ko+1 x=0 Kp,ko конец Написать программу, которая будет вводить целые числа до тех пор, пока не будет введён 0. посчитать количество положительных и отрицательных чисел.
Задача №14 Алг 2 (вещ n, t) Арг n Рез t Нач t:=0 Повторить n:= n div 10 t:=t+1 Пока n=0 Всё конец. начало n t:=0 n:=n div 10 t:=t+1 n=0 t конец С клавиатуры вводится длинное целое число. Посчитать количество цифр в числе.
Задача №15 алг 3 (вещ n, S) Арг n Рез S S:=0 Повторить S:= S+ (n mod 10) n:= n div 10 Пока n=0 Всё Конец. начало n S:=0 S:=S+(n mod 10 n:=n div 10 n=0 S конец С клавиатуры вводится целое число. Посчитать сумму его цифр.
Задача №16 Положительное ноль отрицательное
Символьный тип char, строковый тип string Символьный тип данных представляет собой любой символ, который может быть отражён на экране дисплея и занимает в памяти компьютера 1 байт. Описывается служебным словом char и его значение заключается в апострофе а = ‘b’. Символы, как любые однотипные данные, могут быть объединены в массивы. В описании такого массива можно задать строку символов (a: array [1…20] of char – строка из 20 символов), или таблицу (b: array [1…10,1…15] of char – 10 строк по 15 символов в каждом), состоящую из строк символов. Обработка символьных массивов мало чем отличается от обработки числовых.
Обработка строк, операции над строками. Для строк определены следующие операции: Объединение (+)ж Сравнение (=, <>,>=,<=,<,>) Сравнение строк производится слева направо до первого несовпадающего символа; длиннее считается та строка, у которой первый несовпадающий символ имеет больший номер в таблице кодов (буквы в таблице расположены по возрастанию) ‘abc’>’abc’ Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше . ‘abcd’ < ‘abcdfe’ При вводе текста пробел также является символом.
Задача №17 С клавиатуры вводится буквы, вывести на экран её код, затем вывести на экран последнюю и предыдущую.
Задача №18 С клавиатуры вводится ascii код, вывести соответствующий символ.
Задача №19 Найти разность кодов чисел 2 и 6.
Задача №20 Дано слово Бойтик, начти сумму его кодов.
Использование процедур и функций над строками. СЦЕПЛЕНИЕ – CONCAT (строка1, строка2,…)Аналогична операции сцепления. Исходные данные: а=‘код’, b=‘ил’ Оператор: S:=concat (‘кро’,a, b). Результат: b:=‘рок’ КОПИРОВАТЬ - COPY (строка, число1, число2). Отыскивает первое вхождение строки 1 в строку 2 и возвращает номер начальной позиции вхождения или нуль, если строка 1 не входит в строку 2. Исходные данные: S:=‘крокодил’. Оператор: b:=copy (S,2,3). Результат: b:=‘рок’. ПОЗИЦИЯ – POS (строка1, строка2). Отыскивает первое вхождение строка 1 в строку 2 и возвращает номер начальной позиции вхождения или нуль, если строка 1 не входит в строку 2. Исходные данные: S= ‘крокодил’. Оператор: i:=pos (‘око’,S). Результат i=3. Оператор:i:=pos ‘(я’,’крокодил’). Результат: i=0.
Продолжение ДЛИНА – LENGTH (строка). Возвращает длину строки-аргумента. Исходные данные: S= ‘крокодил’ Оператор: j:= length (S); Результат: j=8. ВСТАВИТЬ – INSERT (строка1, строка2, число). Вставляет строку 1 в строку 2, начиная с позиции, заданной числом. Если в результате получается строка больше максимальной длины, то она усекается справа. Исходные данные: S= ‘крокодил’. Оператор: d:=copy (S, 3, 3). Результат: d= ‘око’. Оператор: insert (‘H’, d, 3). Результат: d= ‘окно’. УДАЛИТЬ – DELETE (строка, число1, число2). Удаляет из строки подстроку, начиная с позиции, заданной числом 1, и длиной, заданной числом 2. Если число 1 больше размера строки, то подстрока удаляется. Если число2 больше имеющегося количества, то удаляются символя до конца строки. Исходные данные: S= ‘крокодил’. Оператор:delete (S, 4, 3). Результат: S= ‘кроил’. Оператор: delete (S, 1, 1). Результат; S= ‘роил’.
Продолжение ПРЕОБРАЗОВАТЬ число и строку – STR (число [:M[:N]], строка)ю Преобразует число в строку. М задаёт общее количество символов, получаемых в строке, N для вещественных чисел (типа real) задаёт количество цифр в дробной части: Str (123, S). Результат: S=‘123’. ПРЕОБРАЗОВАТЬ строку в число – VAL (строка, число, код). Преобразовать строку символов во внутреннее представление числа. Код указывает код неправильного символа или равен 0 в случае успешного преобразования. Val (‘+12.3’,v,k). Результат v=12.3,k=0 (преобразование прошло успешно). Val (‘23+5’,v,k). Результат v – не определено, k=3 (ошибка при попытке преобразовать третий символ).
Пример №1 (сцепление) Пример №2 (Копировать)
Пример №3 (позиция) Пример №4 (длина)
Пример №6 (Удалить) Пример №5 (вставить)
Пример №7(преобразовать)
Пример №8 (преобразовать)
Задача №21 Выделить часть строки после первого пробела
Задача №22 Удалить последний символ строки S.
Задача №23 Записать оператор, позволяющий получить из слова «моряк» слово «морячок».
Задача №24 Дана строка. Подсчитать в ней количество вхождений букв r, k, t.
Задача №25 Дана строка. Определить, сколько в ней символов *, ;, :.
Задача №26 Дана строка, заканчивающаяся точкой. Подсчитать, сколько в ней слов.
Задача №27 С клавиатуры вводится строка слов, опре6делить длину наибольшего слова.
Задача №28 Написать программу с переменной text1 и вопросом, на который нужно дать ответ. Результат сцепления этих строк положить в 3 строку и вывести на экран.
Задача №28 Дана строка символов. Группа символов между пробелами считается словами. Определить самое длинное слово в строке и количество слов такой же длины.
Задача №29 Дано слово. Определить, является ли оно палиндромом.
Задача №30 Дана строка символов. Группа символов между пробелами считается словами. Определить количество слов в строке.
Операторы графиков в Turbo Pascal SetBkColor – устанавливает текущий цвет фона, используя палитру, где Color – переменная типа Word. Put Pixel (х, у, color) – выводит точку с заданным цветом (где х, у – const или переменная типа integer – координаты точки. Line (х1,у1,х2,у2) – х1, у1, х2, у2 – координаты начала и конца линии (const, переменная – integer) Set view Port (х1,у1,х2,у2, clip) – clip – Boolean, определитель удаления не умещающихся элементов изображения Clear Device – очищает экран цветом фона (графический курсор при этом находится в левом верхнем углу) Circle (x, y, r) – окружность (x, y – integer, r – word)
Установка цвета графических фигур SetColor(1) - синий SetColor(2) - зелёный SetColor(3) - бирюзовый SetColor(4) - красный SetColor(5) - лиловый SetColor(6) - коричневый SetColor(7) - серый SetColor(8) – тёмно-серый SetColor(9) – васильковый синий SetColor (10) - салатовый SetColor(11) – светло-бирюзовый SetColor(12) – кораллово-розовый SetColor(13) – ярко-розовый SetColor(14) - жёлтый
Задача №31 Вывести на экран несколько циклически расположенных кругов, установив при этом цвет их окружностей и цвет фона.
Задача №32 Написать программу, выводящую на экран последовательно круги и прямоугольники в случайной последовательности и со случайным выбором цвета.
Задача №33 Написать программу, выводящую на экран точки случайным образом со случайным выбором цвета, создавая эффект звёздного неба.
Задача №34 Написать программу, выводящую и удаляющую случайным образом круги со случайным выбором цвета.
Задача №35 Написать программу, выводящую на экран случайным образом прямоугольники со случайным выбором цвета.
Задача №36
Символьный тип данных представляет собой любой символ, который может быть отображён на экране дисплея и занимает в памяти компьютера 1 байт. Описывается служебным словом char и его значение заключается в апостроф: а=‘b’. Символы как любые однотипные данные могут быть объединены в массивы. В описании такого массива можно задать строку символов ( a: array of c[1…20] of char – строка из 20 символов) или таблицу (b: array [1…10, 1…15] of char - 10 строк по 15 символов в каждой), состоящую из строк символов. Обработка символьных массивов мало чем отличается от обработки числовых. Строчные и символьные переменные символы(char), множества(set of), строки(string).
Задача №37 Сосчитать количество гласных букв в строке
слово задано как массив символов, получить новое слово, состоящее из символов исходного массива, записанных в обратном порядке Задача №38
Задача №39 Дана строка, заканчивающаяся точкой. Подсчитать, сколько в ней слов.
Дан текст. Слова отделяются друг от друга «;», в конце предложения стоит «:». Найти количество слов, оканчивающихся буквой а. Задача №40
Найти количество слов в тексте, начинающихся на букву b Задача №41
Для строковых величин определены следующие четыре стандартные функции: 1. Функция соединения - concat(sl,s2,...,sk). Значение функции - результат соединения строк sl ,s2,...sk, если он содержит не более 256 символов. 2. Функция выделения - copy(s,i,k). Из строки s выделяется k символов, начиная с i-того символа: а:=сору('крокодил',4,3); (в результате а='код’). 3. Функция определения длины строки - length(s). Вычисляется количество символов, составляющих текущее значение строки s: b:=length('каникулы'); (b=8). 4. Функция определения позиции - pos(s,t). Вычисляется номер позиции, начиная с которого строка s входит первый раз в строку t; результат равен 0, если строка s не входит в t: с:=роs('ом','компьютер'); (с=2). В Паскале определены также четыре стандартные процедуры для обработки строковых величин: 1. Процедура удаления delete(s,i,k). Из строки s удаляется k символов, начиная с i-того символа: s:='таракан'; delete(s,5,2); (в результате S='таран'). 2. Процедура вставки - insert(s,t,i). Строка s вставляется в строку t, начиная с позиции i: t:='таран'; insert ('ka',t,5); (t='таракан'). 3. Процедура преобразования числа в строку символов - str(k,s): str(564,s); (s='564'). 4. Процедура преобразования строки из цифр в число - val(s,k,i): val('780',k,i); (k=780; i=0). Операции над строками
Тип «множество» задаёт интервал значений, который является множеством всех подмножеств базового типа. Множество описывается в разделе var с помощью зарезервированного слова set. Базовым типом множества может быть любой тип, состоящий не более чем из 256 элементов. Константы множественного типа записываются с помощью квадратных скобок и списка элементов в них: abc = [‘a’, ’b’, ’c’]. Отсутствие списка элементов означает пустое множество: abc = [ ]. Множества языка Паскаль обладают свойствами мате- математических множеств. Над ними можно выполнять те же операции. Если S1 и S2 – константы или переменные множественного типа, то S1+ S2 будет их объединением, S1*S2 - пере- сечением, S1-S2 – разностью. Операции отношений = (равенство), <> (неравенство), <= (является подмножеством), >= (является надмножеством) к множествам применяются, а отношения строго включения < и > - не применяются. Чтобы добавить в множество какой-либо элемент, можно добавить множество, состоящее из единственного элемента. Либо использовать процедуру include(S,a) , где S – множество, в которое добавляем, a – добавляемый элемент. Имеется и об- ратная процедура – exclude(S , a) - для исключения элемента из множества. Здесь параметры S и a имеют тот же смысл. Множества
Найти сумму 1 и последней цифр заданного числа и разделить её на 2. Задача №42
В заданном числе заменить все цифры 2 на 5 и разделить новое число на 5. Задача №43
Определить количество чётных цифр в числе. Задача №44
Найти разность первой и последней цифр заданного числа. Задача №45
В заданном числе заменить все цифры 0 на 9, а цифры 1 на 8. К полученному числу прибавить 999. Задача №46
Разделить произведение цифр заданного числа на из сумму. Задача №47
Дана строка символов. Вывести символы, из которых она состоит, по диагонали. Задача №48
Написать программу, которая считает среднее арифметическое всех натуральных двузначных чисел, кратных 8. Задача №48
Задайте символьный массив. Найдите и выведите на экран те слова, которые имеют длину слова меньше пяти. Задача №48
Задайте символьный массив из 12 элементов,содержащий фамилии учителей.Найдите фамилию с наименьшей длиной.Выведите на экран массив и найденный элемент. Задача №48
Задайте символьный массив. Найдите и выведите на экран те слова, которые имеют длину слова меньше пяти. Задача №49
Решение олимпиадных задач. Язык программирования Pascal Пассажиры Условие Решение Наибольшее отношение. Условие Решение Ёжик Условие Решение Чёрно – белая графика Условие Решение Газон Условие Решение Abracadabra Условие Решение Курьеры Условие Решение Треугольник Условие Решение
План прямоугольного сада размером mxn состоит из квадратных зон. В каждой зоне растёт по дереву. С каждого дерева любой зоны могут упасть несколько яблок. В левом верхнем квадратике находится ёжик, который должен дойти до правого нижнего квадратика. В саду существуют ограничения относительно способа передвижения: ёжик может двигаться из текущего квадратика только в один из двух соседних правый либо нижний. Составьте программу, которая вычисляет максимальное количество яблок, которое может собрать ёжик, передвигаясь к нужному квадратику. Технические условия: План сада задан таблицей apples содержащей m строк и n столбиков. Элемент apples[i,j] таблицы указывает количество яблок, упавших с дерева в зону с координатами i,j. Текстовый файл "input.txt" содержит в первой строке числа m,n разделённые пробелом. В каждой из следующих m строк содержится по n чисел apples[i,j] разделённых пробелами. Файл "output.txt" должен содержать одно натуральное число. Примеры входных и выходных файлов: Input.txt 3 3 1 2 3 1 2 3 1 2 3 Output.txt 12
Имя входного файла: lawn.in Имя выходного файла: lawn.out Максимальное время работы на одном тесте: 2 секунды Максимальный объем используемой памяти: 64 мегабайта Фермер Иван с юности следит за своим газоном. Газон можно считать плоскостью, на которой в каждой точке с целыми координатами растет один пучок травы. В одно из воскресений Иван воспользовался газонокосилкой и постриг некоторый прямоугольный участок газона. Стороны этого участка параллельны осям координат, а две противоположные вершины расположены в точках (x1, y1) и (x2, y2). Следует отметить, что пучки травы, находящиеся на границе этого прямоугольника, также были пострижены. Довольный результатом Иван купил и установил на газоне дождевальную установку. Она была размещена в точке с координатами (x3, y3) и имела радиус действия струи r. Таким образом, установка начала поливать все пучки, расстояние от которых до точки (x3, y3) не превышало r. Все было хорошо, но Ивана заинтересовал следующий вопрос: сколько пучков травы оказалось и пострижено, и полито в это воскресенье? Требуется написать программу, которая позволит дать ответ на вопрос Ивана. Формат входных данных В первой строке входного файла содержатся четыре целых числа x1, y1, x2, y2 (−100 000 ≤ x1 < x2 ≤ 100 000; −100 000 ≤ y1 < y2 ≤ 100 000). Во второй строке входного файла содержатся три целых числа x3, y3, r (−100 000 ≤ x3, y3 ≤ 100 000; 1 ≤ r ≤ 100 000) Формат выходных данных В выходной файл необходимо вывести одно целое число — число пучков травы, которые были и пострижены, и политы. Пример входных и выходных данных
Найдите наибольшее значение отношения трехзначного числа к сумме его цифр. Например, число 361, отношение числа к сумме цифр равна 361 :10=36,1
Как мы видим, наибольшее отношение – число 100. 100:1=100
На конференцию приехало N человек. Для их перевоза выделили автомобили вместимостью K и M человек (без водителя). К гостинице автомобили подаются в таком порядке: сначала вместимостью K человек, потом - M человек, после этого опять - K человек, потом M человек и так далее. В автомобиле можно перевозить не более максимально допустимого количества пассажиров. Определить, сколько необходимо автомобилей для перевозки всех делегатов конференции. Технические условия: Программа должна читать исходные данные из файла input.txt, первая строка которого содержит количество делегатов, а вторая и третья - числа K и M. В файл output.txt должно выводиться количество машин, необходимых для перевозки всех делегатов. Примеры входного и выходного файлов: Input.txt Output.txt 20 3 4 6 12 2 2 6 25 5 5 5 100 2 1 67
Условие: Хлестакова приглашали управлять департаментом. В первый день ему прислали 1000 курьеров, а в каждый следующий - в 2 раза больше, чем в предыдущий. Хлестаков согласился, когда прислали 30000 курьеров. На какой день это произошло? (Учесть, что Хлестаков слаб в умножении и делении).
Условие: Вычислите, в какой координатной четверти расположен треугольник, образованный прямой, заданной уравнением y=ax+b, и осями координат. Решение: Если в уравнении прямой первый коэффициент положительный, то прямая лежит либо во второй, либо в четвертой четверти, при этом если свободный член положительный, то во второй, а если отрицательный- то в четвертой. Значит там же находится и весь треугольник, так как он образован этой прямой и осями координат. Аналогично рассуждаем и для отрицательного углового коэффициента: при положительном свободном члене - первая четверть, а при отрицательном - третья.
27848-pascal_abc_ma_10b.ppt
- Количество слайдов: 90

