ш1-(л)-(Федоров)-Основы алгоритмизации и программирования.ppt
- Количество слайдов: 88
Основы алгоритмизации и программирования Введение Алгоритмы 2/16/2018 1
Введение § Актуальность § будущая специальность § интересная сфера «информационные технологии» § Формы деятельности § лекции § семинары § лабораторный практикум § Контроль § контрольная работа § задача § блок-схема алгоритма § программа на языке Pascal 2/16/2018 Федоров А. М. amfedorov@mail. ru 2
Описание курса § Курс «Основы алгоритмизации» предназначен для § учащихся старших классов школы и § начальных курсов университета § Слушатель курса должен § быть знаком с основами математики, алгебры, геометрии на уровне школьной программы § уметь работать с компьютером: файлы, текстовые редакторы … § Цель – овладеть и закрепить навыки работы с основными алгоритмическими конструкциями 2/16/2018 Федоров А. М. amfedorov@mail. ru 3
Структура курса § Рассматриваются вопросы построения алгоритмов на двух уровнях § теоретическом и § практическом § В качестве инструментов для написания алгоритмов используется § язык блок-схем, § алгоритмический язык программирования (Pascal). 2/16/2018 Федоров А. М. amfedorov@mail. ru 4
Структура курса § Темы лекционных занятий 1. Введение: обзор, цели, задачи, порядок работы 2. Язык блок-схем, Классификация алгоритмов 3. Алгоритмы на последовательностях: массивы, строки, (файлы) 4. Нахождение логических ошибок и тестирование алгоритма (таблица изменения переменных) 5. Элементы структурного программирования ( «без goto» , «сверху-вниз» , процедуры и функции) 6. Основы алгоритмического языка Pascal. Перевод блок-схем в программу на алгоритмическом языке 2/16/2018 Федоров А. М. amfedorov@mail. ru 5
Цели и задачи курса § Алгоритмы § Линейные, ветвление циклические § Блок-схемы, программы на ЯП § Структуры данных § Массивы, строки § Алгоритмы на последовательностях § Структурное программирование § Поиск и исправление ошибок § Построение программы из подпрограмм 2/16/2018 Федоров А. М. amfedorov@mail. ru 6
Результаты работы § Формы деятельности § лекции, семинары, лабораторный практ. § Контрольная работа § подготовка и разработка алгоритма решения несложной учебной задачи § условие § анализ предметной области § блок-схема алгоритма решения § программа на языке Pascal § демонстрация результатов работы 2/16/2018 Федоров А. М. amfedorov@mail. ru 7
Алгоритмизация – раздел современной информатики § Информатика – комплексная научно-техническая дисциплина, изучающая структуру и общие свойства информации, информационных процессов, занимающаяся разработкой информационной техники и технологий и т. д. § Связь информатики с другими науками: § § § 2/16/2018 философия и психология, математика, лингвистика, кибернетика, физика и химия, электроника и радиотехника Федоров А. М. amfedorov@mail. ru 8
Информатика – практическое применение § Информатика — это техническая наука, систематизирующая приемы создания, хранения, воспроизведения, обработки и передачи данных средствами вычислительной техники, а также принципы функционирования этих средств и методы управления ими. человек ПК 2/16/2018 Программ а § Алгоритмы (программы) – это ключевые элементы, используемые для работы средств вычислительной техники. Федоров А. М. amfedorov@mail. ru 9
Информация – философское понятие … сигналы данные – зарегистрированные информационный сигналы процесс методы обработки данных данные – результат Информация – продукт взаимодействия данных и адекватных им методов 10 2/16/2018 Федоров А. М. amfedorov@mail. ru
Информационное моделирование § Три принципа информационного моделирования, которые определяют условия для создания Информационных Моделей: § Все состоит из элементов; § Элементы имеют свойства; § Элементы связаны отношениями § Алгоритм – это один из способов информационного моделирования (автоматизация) 2/16/2018 Федоров А. М. amfedorov@mail. ru 11
Термин «Алгоритм» § «Алгоритм» ( «алгорифм» ) – от имени среднеазиатского ученого IX века аль-Хорезми, который разработал правила выполнения четырех арифм. действий § «Интуитивное» понятие алгоритма – конечная совокупность точно сформулированных правил, которые позволяют решать те или иные классы задач § Теория алгоритмов (30 -е годы XX в. ) – серьезный математический раздел: § алгоритм - это особое соответствие между словами в том или ином абстрактном алфавите 2/16/2018 Федоров А. М. amfedorov@mail. ru 12
Свойства «интуитивного» понятия алгоритма § § § Однозначность - Отсутствие неопределенности Дискретность – возможность разделения на элементарные части Понятность для исполнителя Детерминированность Результативность Массовость Алгоритм должен быть корректным. § тестовые наборы данных 2/16/2018 Федоров А. М. amfedorov@mail. ru 13
Исполнители алгоритма и их система команд § Исполнитель алгоритма § абстрактная или реальная (техническая, биологическая, …) система, способная выполнить действия, предписанные алгоритмом. § § Тот, для которого создан алгоритм Системой команд исполнителя (СКИ) Алгоритмически полная СКИ Алгоритмический язык и программа § исполнитель - ЭВМ 2/16/2018 Федоров А. М. amfedorov@mail. ru 14
Формы представления алгоритмов § Существуют различные формы представления алгоритмов, типовыми из них являются: § словесное описание алгоритма на естественном языке (вербальная форма); § построчная запись алгоритма; § блок-схема; § запись на к-л языке программирования. 2/16/2018 Федоров А. М. amfedorov@mail. ru 15
Построчная запись 1. 2. шаги (предписания) алгоритма нумеруются исполнение алгоритма происходит в порядке возрастания номеров, начиная с первого шага (если не встречается никаких специальных указаний) типичными шагами являются: 3. § § § § чтение (ввод) данных, - символами алфавита обозначаются данные: А, В, С, … - переменные. обработка данных, - вычисления по формулам: V = A+B. Знак «=» обозначает специальную операцию – присваивание. Обязательное условие – слева всегда стоит переменная (хранилище результата), которой присваивается значение переменной или выражения, стоящего справа от знака. сообщение, запись, проверка условия - вид условия «Если … то идти к N» , результат – переход на указанную строку алгоритма переход к шагу - безусловный переход останов – конец вычислений 2/16/2018 Федоров А. М. amfedorov@mail. ru 16
Начало Блок-схемы S: =0 i: =1 § Графическое представление последовательности действий действие условие Выбор элемента, стоящего на четном месте и добавление его к общей сумме i=i+1 Нет Элементарное действие из системы команд исполнителя Да Конец Блок проверки условия: ответ на вопрос – «Да» или «Нет» Направление последовательности действий 2/16/2018 i=k Федоров А. М. amfedorov@mail. ru 17
Типовые алгоритмические структуры (лек 2) §последовательность §ветвление §цикл 2/16/2018 18
Типовые алгоритмические структуры Начало § § § Последовательность Ветвление Цикл S: =0 i: =1 Конец Начало i: =1 нет i=i+1 Да i>k да i=k i=i-1 i=i+1 Конец 2/16/2018 Нет Конец Федоров А. М. amfedorov@mail. ru 19
Пример задачи В квартире живут тараканы. Сколько дней потребуется для того, чтобы популяция тараканов разрослась до N особей. Тараканы устроены так, что каждый день число тараканов удваивается начало ввод K, N K – кол-во тараканов. N – допустимый предел D = 1 D – кол-во дней эксперим A K <= N K = K*2 D = D+1 вывод прошло D дней стало K тараканов 10 CLS 20 INPUT “число K=”, K 30 INPUT “число N=”, N 40 D = 1 50 IF K >= N THEN GOTO 90 60 K = K*2 70 D = D +1 80 GOTO 50 90 PRINT “кол-во K=”, K 100 PRINT “D=”, D конец A 2/16/2018 Федоров А. М. amfedorov@mail. ru 20
Понятие памяти и переменных § Физическая память § Единицы измерения памяти § Биты, байты, кило-, мега- … § Адресация памяти § Переменные § Имя (идентификатор) § Место описания (локальные, глобальные) § Тип § § § 2/16/2018 Количество места и представление в памяти Количество значений Набор допустимых операций Федоров А. М. amfedorov@mail. ru 21
Язык программирования § Система записи текстов (программ) для выполнения на ЭВМ § Синтаксис § Семантика § Типология языков программирования § Высокого уровня § Pascal, Java, C++, Smaltalk, … § Низкого уровня § Ассемблер § Транслятор – переводчик текстов § Компилятор § Интерпретатор 2/16/2018 Федоров А. М. amfedorov@mail. ru 22
Оператор присваивания и операция сравнения § Оператор – действие, которое влияет на объекты программы и/или изменяет ход действия программы присваи вание С++ Pasca § Операции – это действия, l которые предназначаются для вычисления значения выражения, но не влияют на другие значения и не сказываются на ходе выполнения программы логич. сравнение = == : = = Ошибки использования переменных и операторов A+3 = B //синтаксическая ошибка – слева должна стоят переменная S=0; … S=”a” //синтаксическая ошибка – S – в начале алг. это число A=1; B=0; (нужно поменять значения местами): A=B; B=A – логическая ошибка –нужна 3 я перем 2/16/2018 Федоров А. М. amfedorov@mail. ru 23
Системы программирования § Компоненты системы программирования: § § § Текстовый редактор (editor) Программа компилятор (compiler) Программа редактор связей (linker) Программа отладчик (debugger) Справочная система (help) § Примеры систем программирования § Pascal, C++Builder, Delphi, MS Visual Studio 2/16/2018 Федоров А. М. amfedorov@mail. ru 24
Пример решения задачи § Математика: § «вычислить выражение» (обл. определ. ) § «корни квадратного уравнения» § «наибольший общий делитель» § «Из жизни» § «перейти через дорогу» § «сходить в магазин» § «сварить суп» 2/16/2018 Федоров А. М. amfedorov@mail. ru 25
Практика на Pascal § § Структура программы на Pascal Определение переменных Ввод и вывод значений Задача на вычисление значения арифметического выражения § арифметические операции в Pascal § математические функции § функция вычисления случайного знач. 2/16/2018 Федоров А. М. amfedorov@mail. ru 26
Последовательные структуры данных (лек 3) §массивы, строки, файлы §алгоритмы на последовательностях 2/16/2018 27
Роль последовательностей в жизни человека § Множество элементов упорядоченных по определенному признаку § § Цифры на циферблате часов Номера вагонов в составе поезда Этапы жизни: садик, школа, вуз, работа … (придумай свой пример) § Зачем и кому последовательности нужны? § Предсказуемость - последующий элемент логично вытекает из предыдущих § легко запомнить; несложно воспроизвести; просто использовать § Способ борьбы с хаосом § Порядок – хорошо и удобно для человека § Порядок – это закон, а перед законом все равны 2/16/2018 Федоров А. М. amfedorov@mail. ru 28
Примеры последовательностей § Счет – нумерация - индексация § 1, 2, 3, 4, 5, … – «вышел зайчик погулять» xi=xi-1+1 § «аргентина манит негра» - палиндром § Математические законы § числа Фибоначчи: § 1, 2, 3, 5, 8, 13, … xi=xi-1+xi-2 § различные закономерности числовых рядов: § 1, 2, 2, 4, 8, 32, … xi=xi-1*xi-2 § Замечательные последовательности § = 3, 1415926535897932384626433832795… § e = 2, 7182845905… 2/16/2018 Федоров А. М. amfedorov@mail. ru 29
Примеры последовательных структур данных в ЯП § Строка – последовательность символов § имя, начало, конец, длинна § S : = ‘мама мыла раму’ : 14 симв. § Массив – последовательность однотипных элементов § имя, начало, конец, кол-во элементов § Mas : = (2, 4, 6, 8, 1, 2, 3, 5) : 8 целых чисел § Файл – именованная последовательность байтов на внешнем носителе (диск, …) § § 2/16/2018 имя, начало, конец, размер файла в байтах D: readme. txt Федоров А. М. amfedorov@mail. ru 30
Строки в Pascal § § Строка – последовательность символов Символы из таблицы кодировки ASCII Pascal-cтрока содержит не более 255 символов Описание строки: § Var S 1: String; S 2: String[30]; § Особенности Pascal-cтроки: § S 2 : = “Миру мир!” S 2 М и р 1 2/16/2018 9 2 3 у … ? ? 29 30 Федоров А. М. amfedorov@mail. ru 31
Операции работы со строками § Работа с отдельными элементами строки (символы) § S 1[5] - пятый символ строки S § S 1[i] – i-й символ строки S. Если i: =3, - то 3 -й и т. д. § все действия над символом: ввод, присвоение, вывод на экран, участие в выражениях и т. д. § Работа с целой строкой § § Длинна строки: Length(S) - длина строковой переменной Ввод и вывод строки Объединение строк Сравнение строк • Объединение – конкатенация R: = 'kadabra'; H: = 'abra'; S: =H+R; 2/16/2018 Program Str 1; Var S : String; Begin Writeln('Введи пароль'); Readln(S); IF (S = ‘Дер Пароль') then Writeln (‘открыто') Else Writeln (‘закрыто'); Writeln(‘В строке ', Length(S), ' символов'); End. Федоров А. М. amfedorov@mail. ru 32
Функции работы с символами § Ord (символ) – ASCII-код символа § Номер элемента в упорядоченной последовательности § Chr (число) – символ по его ASCII-коду {программа выводит на экран кодовую таблицу ASCII } Program Str 3; Var I : Byte; Begin For I: =32 to 255 do Write(‘ ', I: 4, '-', Chr(I)) End. {программа выводит на экран символ с заданным ASCII-кодом} Program Str 3_1; Var Ch : char; Begin repeat write(‘введи символ’); readln(ch); Write(‘ASCII-код=', Ord(Ch)) until Ch=‘q’ End. Цель: из последовательностей чисел делать последовательности символов и наоборот 2/16/2018 Федоров А. М. amfedorov@mail. ru 33
Функции работы со строками {программа подсчитывает сумму цифр числа, заданного строкой} Program Str 5; Var § S - строка, содержащая число, S : String; I, X, A, C : Integer; § X - числовая переменная, (результат) Begin Writeln('Введите число'); § С - ошибка Readln(S); A: =0; Str(X, S) – перевод числа в строку For I: =1 To Length(S) Do Begin § X - число (либо арифм. выражение), Val(S[I], X, C); A: =A+X; § S - строковая переменная End; Writeln('Сумма цифр=', A) End. § Val(S, X, C) - перевод строкового представления числа в числовое § Цель: преобразование типов данных • Обеспечение совместимости с различными форматами • «Защита от дурака» - избежать ошибок на этапе ввода информации • др. 2/16/2018 Федоров А. М. amfedorov@mail. ru 34
Дополнительный функции для работы со строками оператор DELETE(S, I, C) из строковой переменной S удаляет C символов, начиная с I-того; оператор INSERT(SN, S, I) вставляет подстроку SN в строковую переменную S перед символом с номером I; функция COPY(S, I, C) возвращает подстроку строки S из C символов, начиная с символа с номером I; функция Pos(SN, S) возвращает номер символа, с которого в строке S начинается подстрока SN (позицию первого вхождения подстроки в строку). Если такой подстроки нет, то возвращается ноль. S: = ‘Здравствуйте, я Ваша тетя!’ S: = ‘Здравствуйте, я Ваша дядя!’ i: =Pos(‘тетя’, S); Delete(S, i, 4); Insert(‘дядя’, S, i); 2/16/2018 Федоров А. М. amfedorov@mail. ru 35
Массивы в Pascal § Пронумерованный набор однотипных элементов § § § В разных массивах элементы могут быть разных типов Количество элементов массива - любое Описание массива: § Var M 1: array [1. . 10] of integer; M 2: array [‘a’. . ’z’] of real; M 3: array [1. . 3, 1. . 3] of char M 3 § Особенности массивов в Pascal: § § M 1 невозможно присвоить все значения сразу только поэлементная обработка 4 8 15 1 2 3 2/16/2018 16 23 42 30 9 10 Федоров А. М. amfedorov@mail. ru 1 2 3 1 ф м к 2 е ш б 3 н к б 36
Операции работы с массивами § Работа с отдельными элементами § M 1[5] - пятый элемент массива М 1 § M 3[1, 3] – элемент первой строки и третьего столбца § M 3[ i, j ] - элемент i-й строки и j-го столбца § Доступны все действия над элементом: § ввод, присвоение, вывод на экран, участие в выражениях и т. д. § Все действия над массивом производятся поэлементно (возможно в цикле) § Необходимо сформировать последовательность индексов элементов, к которым происходит обращение 2/16/2018 Федоров А. М. amfedorov@mail. ru 37
Типовые алгоритмы обработки Массивов § § § § Ввод и вывод значений Подсчет минимума или максимума Суммирование элементов массива Поиск заданного элемента Замена заданного элемента Формирование нового массива из других заданных Сортировка и др. § Массивом могут быть представлены значения из «реальной задачи» § типовые алгоритмы позволяют решать типовые задачи 2/16/2018 Федоров А. М. amfedorov@mail. ru 38
Типовой шаблон задачи 1. Начало 2. Ввод N элементов массива M, начальное значение счетчика i: =1; 5. счетчик i=i+1 3. граничное условие i
Специфика алгоритмов на последовательностях § § § Обработка поэлементно Контроль граничных условий Однотипные операции § Просмотр от начала до конца (и наоборот) § Обращение к заданному элементу 2/16/2018 Федоров А. М. amfedorov@mail. ru 40
(сем) Приемы построения алгоритмов на последовательностях Типы задач: § Ввод-вывод § § вручную случайно «по формуле» из файла § Подсчет (все элем. ) § сумма, произвед. , … § количество § Поиск (некоторые) § Замена (некоторые) § Формирование нового массива Примеры задач: § Ввод массива § Подсчет суммы и произведения § Сумма элементов на четных местах § Произведение четных элементов § Подсчет количества нечетных § Вывод массива (смст. ) § Замена (элемента 0 на 1) § Если элемент 0 – то, а если 1 – то § из двух 2/16/2018 Федоров А. М. amfedorov@mail. ru 41
(лаб) Программная реализация алгоритмов на последовательностях § Запись и отладка на Pascal типовых алгоритмов работы с массивами § оператор for и его связь с блок-схемой § комментирование частей программы § форматирование частей программы § комментированный ввод и вывод 2/16/2018 Федоров А. М. amfedorov@mail. ru 42
Анализ и тестирование алгоритмов (лек 4) Практические способы проверки правильности работы алгоритма 2/16/2018 43
План § § Алгоритмы представляются в различном виде В любом случае требуется: § § Принцип работы § § § § нормальные данные критические точки неправильные данные таблица изменения переменных (пример) Среда программирования § § Выполнение роли исполнителя (процессора) – проход «по шагам» строгий учет и запись изменений всех значений подбор специальных наборов исходных данных Блок-схемы § § исправить ошибки проверить работу доказать правильность Отладчик § «по шагам» F 8 § «просмотр значений» Watches Способы эффективного задания тестовых наборов исходных данных § § Аналитические § § § анализ области определения математич. функций анализ граничных значений индексов массивов анализ всех возможных ответов пользователя (вводов) Практические 2/16/2018 § § § случайные значения константные значения в программе ввод значений из файла Федоров А. М. amfedorov@mail. ru 44
Общая проблема форм и способов создания алгоритмов § Алгоритм – однозначная последовательность действий, приводящая к получению результата, предназначенная для исполнителя § § § Текст (естественный язык) Блок-схема (графическое представление) Программа (язык программирования) § Создатели алгоритмов § человек (творческая личность) § компьютер (дисциплинированный исполнитель) Вариантов несколько – проблема одна : исключить возможные ошибки (доказать правильность) § ошибки в действиях (шагах) алгоритма и их последовательности § ошибки были, есть и будут, – их поиск и исправление – движение вперед 2/16/2018 Федоров А. М. amfedorov@mail. ru 45
Необходимость проверки правильности работы § Алгоритм – описание способа решения задачи § этапы: постановка задачи, исходные данные, рез-ты, … § реализация: программа, форматы данных, … § Вопросы «Как …» § § + написать алгоритм/программу? - проверить работу алгоритма/программы? - исправить найденные ошибки? • Разный уровень задач - - доказать правильность решения? разные последствия от § Любой алгоритм (как и любая работа) требует проверки возникновения ошибок • учебная задача, • запуск спутника, … § опытный создатель алгоритмов (эксперт)– § (само)уверенность § автоматизм в действиях § начинающий создатель алгоритмов – § нерешительность § 2/16/2018 осторожность, тщательность подхода (разумное действие) Федоров А. М. amfedorov@mail. ru 46
Принципы проверки § Математические § строгое доказательство (теория алгоритмов) § Основы ЦА, машина Тьюринга и Поста, алгебра логики, … § Опытно-практические § роль исполнителя (процессора) § проход алгоритма «по шагам» § строгий учет и запись изменений всех значений: § переменные § элементы массивов и строк § результаты проверки условий и т. д. § Итог применения практического подхода § оценка правильности порядка действий алгоритма § конечный результат, зафиксированный в виде значений всех переменных ( «дамп памяти» ) 2/16/2018 Федоров А. М. amfedorov@mail. ru 47
Тестовые наборы исходных данных § Результат прохода «по шагам» зависит от исходного набора данных § значений переменных § значений элементов массивов и строк § Работы генератора случайных чисел § Особенности составления тестов для алгоритмов § § § свойство алгоритма – «массовость» один тест – один вариант решения необходимо: либо много тестов либо один универсальный § Подготовка специальных наборов исходных данных (оценка области определения) Пример: § нормальные данные (внутри) § критические точки (границы) § неправильные данные (снаружи) 2/16/2018 y(х) = 1/(x-2) ОДЗ: x (-∞; 2) (2; +∞) 0 Федоров А. М. amfedorov@mail. ru 255 48
Блок-схема «по шагам» § Таблица изменения переменных § представляет собой модель памяти исполнителя § содержит все данные, с которыми работает алгоритм § имена и значения переменных § имена, значения, индексы(номера) массивов § логические выражения условий и результаты их проверок Задание: Поиск № i: =i + 1 M[5] i <= 5 i S 2 4 6 8 3 да 1 0 да 2 2 2 да 3 6 да 4 12 4 2/16/2018 M[4] 3 S: =S + M[i] M[3] 1 i <=5 M[2] 0 суммы элементов массива М из 5 -ти элементов M[1] да 5 20 5 Федоров А. М. amfedorov@mail. ru нет 49 6 23
Программа «по шагам» § Средства среды программирования Pascal § текстовый редактор § отладчик (спец. программа проверки) § режим работы «по шагам» - F 7/F 8 (Trace) § дамп памяти - «просмотр значений» - Watches § Контроль на программном уровне § вывод промежуточных данных на экран § запрет критических точек - «защита от дурака» 2/16/2018 Федоров А. М. amfedorov@mail. ru 50
Эффективное задание тестовых наборов исходных данных: Анализ § Аналитические приемы § анализ области определения математических функций и операций y(х) = 1/(x-2) § § ОДЗ: x (-∞; 2) (2; +∞) деление на ноль корень четной степени из отрицательного числа тригонометрические функции (tg, ctg, …) логарифм и т. п. § анализ граничных значений индексов массивов § если массив из 5 -элементов, то обращение к 6 -му - ошибка § анализ всех возможных ответов пользователя § если пользователь может что-то ввести – то он обязательно введет что-то неверное ( «защита от дурака» ) 2/16/2018 Федоров А. М. amfedorov@mail. ru 51
Эффективное задание тестовых наборов исходных данных: Способы § Практические приемы § ввод значений с клавиатуры § не эффективно и долго § тесты со случайными значениями § специальная функция Pascal – random § M[i] = -20+random*40 {случайные числа [-20; 20] } § множество различных значений § константные значения в программе § предопределенный тест § ввод значений из файла § несколько предопределенных тестов § Создание тестов вручную § Создание тестов с помощью спец. программы 2/16/2018 Федоров А. М. amfedorov@mail. ru 52
1. Начало Пример 1 2. Приглашение для ввода элементов M 9 3. Ввод элементов M 9 Задание: Найти сумму элементов с нечетными индексами одномерного массива M 9 размерности k. 4. Начальная установка: i: =1; S: =0 Проанализировать выполнение программы на примере: M 9 = { -3; 6; -4; 0; 2; -11; 8} № M 9[1] -3 M 9[2] 6 M 9[3] -4 M 9[4 ] M 9[5] 0 8. i = i + 1 i <=k i <= i 2 5. i/2 = int(i/2) Да Нет S 6. S = S + M 9[i] 0 0 да 1 -3 1 да 2 3 2 да 3 -1 3 да 4 -1 4 да 5 Нет 1 2/16/2018 Федоров А. М. amfedorov@mail. ru 7. i = k Да 9. Вывод суммы S 10. Конец 53
1. Начало Пример 2 2. Приглашение для ввода элементов A 3. Ввод элементов A Задание: Найти и напечатать индекс наибольшего из элементов одномерного массива A размерностью N. 2. Начальная установка: Index: =1; i: =1 Да 5. i=1 8. index = index + 1 Нет 6. i = N+1 Нет 7. i<=N And A[index]>=A[i] Да Да 9. i = i + 1 10. Вывод index 2/16/2018 11. Конец Федоров А. М. amfedorov@mail. ru 54
Элементы структурного программирования (лек 5 ч. 1) 2/16/2018 55
План § Универсальный способ записи алгоритма – блок-схема § § § наглядность представления (карта действий) понятность неподготовленному пользователю перевод на любой ЯП (формально) использование в современных средах проектирования сложных систем Проблемы алгоритма в виде блок-схемы § § множество переходов (логичных, но без структуры) сложности больших алгоритмов (при всей наглядности) дополнительный анализ при переводе на ЯП § понятность разработчику § понятность пользователю (исполнителю) Структурный подход – эффективно решает ряд проблем § § § Краткая историческая справка (развитие парадигм программирования) Цель – упростить процесс создания как алгоритмов, так и программ Правила ( «самоограничения» ) – которым надо следовать § Возможность использования метода разработки алгоритмов «Сверху-вниз» (последовательная детализация) § все состоит из структур трех типов: следование, ветвление и цикл § задача разбивается на подзадачи § каждая подзадача решается отдельно § связь решений подзадач происходи по одному из трех типов связей § Другие современные подходы § § § 2/16/2018 Функциональное программирование – все состоит из функций, решающих отдельные задачи Модульное программирование – все состоит из взаимосвязанных модулей функций и данных ООП – все состоит из взаимодействующих объектов Федоров А. М. amfedorov@mail. ru 56
Технология создания программ § Порядок действий программиста: § § § § понять задачу, которая перед ним стоит составить алгоритм проверить работоспособность перевести алгоритм на язык программирования проверить правильность работы программы передать программу пользователям поддерживать программу в работоспособном состоянии § Вопросы к программисту § как быстро и точно он решит стоящую перед ним проблему § план, сроки, условия заказчика § сколько будет стоить решение этой проблемы § затраты на программиста § затраты на оборудование § д. р. расходы 2/16/2018 Федоров А. М. amfedorov@mail. ru 57
Результат работы программа § Характеристики программы § решает поставленную задачу (класс задач) § не содержит ошибок § удобно использовать § § выполнена в срок минимальные финансовые затраты эффективно выполняется (быстро) не требует больших ресурсов (проц. , память) § Невозможно достигнуть выполнения всех условий одновременно 2/16/2018 Федоров А. М. amfedorov@mail. ru 58
Одно из решений проблемы § Использование специальных методов построения алгоритмов и программ § § набор правил и ограничений (парадигмы програм-ния) специальные среды программирования специальные языки программирования специальные среды проектирования § Решения основаны на опыте многих программистов § § § 2/16/2018 время разработки уменьшается (CASE, рабочие группы, . . ) стоимость проекта снижается (не высокая квалификация) эффективность систем повышается (шаблонны) Федоров А. М. amfedorov@mail. ru 59
Достоинства блок-схем § Первый этап разработки алгоритма § анализ задачи (предварительный) § посторенние блок-схемы (схемы решения) § Блок-схема - универсальный способ записи алгоритма § § § 2/16/2018 наглядность представления (карта действий) понятность неподготовленному пользователю перевод на любой язык прогр. (формально) Федоров А. М. amfedorov@mail. ru 60
Недостатки блок-схем § Определены только элементы и их способы связи § множество переходов (не всегда оптимальных) § сложности больших алгоритмов (при всей наглядности) § понятность при разработке § сложность в процессе работы § требуется дополнительный анализ при переводе алгоритма на язык программирования § способы перевода из блок-схем в операторы § оптимизация записи программы 2/16/2018 Федоров А. М. amfedorov@mail. ru 61
Структурный подход § Эффективное решение ряда проблем, возникающих перед программистом § развитие парадигм программирования – 60 -е годы прошлого столетия § Цель подхода – упростить процесс создания как алгоритмов, так и программ § Разработка специальных языков программирования и сред § Fortran, С, Pascal, др. 2/16/2018 Федоров А. М. amfedorov@mail. ru 62
Суть структурного подхода § Набор правил ( «самоограничений» ) – которым надо следовать § все алгоритмы представляются в виде элементов трех типов: § следование, ветвление и цикл § Использование метода разработки алгоритмов «Сверху-вниз» (последовательная детализация) § задача разбивается на более простые подзадачи § каждая подзадача решается отдельно от остальных § связь решений подзадач происходи по одному из трех типов связей –> следование, ветвление, цикл 2/16/2018 Федоров А. М. amfedorov@mail. ru 63
Пример: решение любой учебной задачи Начало S: =0 1. Начало решение i: =1 2. Вводн начальных значений 3. Расчет Выбор элемента, стоящего на четном месте и добавление его к общей сумме i=i+1 Конец 4. Вывод результата Нет i=k Да 11. Конец 2/16/2018 Конец Федоров А. М. amfedorov@mail. ru 64
Другие современные подходы к проектированию программ § Технологии программирования постоянно развиваются § Функциональное программирование § «все состоит из функций, решающих отдельные задачи» § Модульное программирование § «все состоит из взаимосвязанных модулей функций и данных» § ООП § «все состоит из взаимодействующих объектов» 2/16/2018 Федоров А. М. amfedorov@mail. ru 65
Основы алгоритмического языка Pascal (лек 5 ч. 2) § § Алгоритмические языки программирования История создания языка Pascal § § автор, цель, идеи Что такое программа § § данные продуманной структуры и алгоритмы их обрабатывающие структура программы на Pascal как выполняется программа целый, вещественный, символьный, строковый, логический, и др. Операторы § § среда программирования (редактор, отладчик) § компилятор § запуск Типы данных (строгая типизация) § § § разделы программы их назначение поддержка технологии «структурного программирования» выражение, условие, цикл Выражения § § § 2/16/2018 оператор присваивания арифметические операции вызов функции § математические § строковые § др. (в т. ч. пользовательские) Федоров А. М. amfedorov@mail. ru 66
Алгоритмические языки программирования § Язык Pascal § Автор - Николаус Вирт § Цель – язык программирования для начинающих (школьники, студенты) § Развитие § Pascal § Turbo Pascal, Borland Pascal 7. 0 § Object Pascal § Delphi § Borland Developer Studio 2/16/2018 Федоров А. М. amfedorov@mail. ru 67
Цель работы - программа § Что такое программа § данные продуманной структуры и алгоритмы их обрабатывающие § структура программы на Pascal § разделы программы их назначение § § Uses, var, const Begin … END. § Как выполняется программа § § § 2/16/2018 среда программирования (редактор, отладчик) компилятор запуск программы Федоров А. М. amfedorov@mail. ru 68
Строгая типизация § Типы данных § Целый – integer, byte, word § Вещественный - real, double § Символьный - char § Строковый - string § Логический - boolean § Типы, определяемые пользователем: § Тип Крокодил begin § § § цвет : byte; {1 – зеленый, 2 - синий, 3 - красный} кол-во зубов: word; { 1. . 65535} злой : boolean; {true – да, false - нет} § end; 2/16/2018 Федоров А. М. amfedorov@mail. ru 69
Действия в программе § Операторы – элементы программы (языка программирования) влияющие на изменение других элементов программы или изменяющие ход программы § поддержка технологии «структурного программирования» - программирование «без GOTO» § Выражения: арифметические, логические, символьные, строковые, … § Условие – IF … THEN … ELSE § Цикл – FOR … TO … DO 2/16/2018 Федоров А. М. amfedorov@mail. ru 70
Выражения § оператор присваивания § А: =5; B: =2*(A+10); X: =X+1 § арифметические операции § +, -, *, /, mod, … § вызов функции (библиотеки функций) § Математические: SIN, LN, SQRT, … § Строковые: VAL, STR, LENGTH, … § др. (в т. ч. пользовательские) § Обработка массивов, § Обработка файлов, … 2/16/2018 Федоров А. М. amfedorov@mail. ru 71
Решение задач, связанных с предметной областью (лек 6) 2/16/2018 72
План § Предметная область § отличие чисто-учебных задач от реально-практических § Порядок решения задачи § Анализ § § § понятность условия полнота исходных данных что должно быть результатом § Проектирование § перевод объектов задачи в объекты алгоритма § массив - «ряд» , «последовательность» , «набор» , «таблица» , … § переменная – «измерение» , «величина» , «кол-во» , … § выбор модели (схемы) решения § классическая задача – ввод/вывод, подсчет, поиск, замена § задача, которую уже решали § новая задача § построение блок-схемы § метод «сверху вниз» - (ввод, расчет, вывод) … § Разработка программы на ЯП (Pascal) § перевод объектов алгоритма в объекты программы § описание переменных, массивов, и т. д. § перевод блок-схемы в программу на ЯП § линейные участки программ § ветвления § циклы § дополнительные элементы программы § оформление ввода/вывода § «защита от дурака» 2/16/2018 Федоров А. М. amfedorov@mail. ru 73
Предметная область и ее модель § Чисто-учебные задачи § «Дан массив из 5 -ти элементов …» § Реально-практические задачи § «Известны результаты измерений глубины водоема в N местах озера …» § Модель предметной области § отображение реальной объектов на абстрактные объекты модели § «измерения» переменная, массив § «найти самый глубокий участок» найти минимум в массиве 2/16/2018 Федоров А. М. amfedorov@mail. ru 74
Решение задачи – технология или искусство § Способы решения задач § Необъяснимые силы и мотивы § § § творческий порыв интуиция предчувствие и т. п. § Системой подход в решении сложных задач § § § 2/16/2018 Анализ Проектирование Разработка программы Федоров А. М. amfedorov@mail. ru 75
Анализ предметной области и поставленной задачи § Вопросы, требующие решения § понятность условия § полнота исходных данных § что должно быть результатом § Результаты анализа § полное представление о том § что надо сделать, § из чего надо сделать и § и, возможно, как надо сделать 2/16/2018 Федоров А. М. amfedorov@mail. ru 76
Проектирование решения задачи § Создание проекта (модели, - моделирование) § перевод объектов задачи в объекты алгоритма § массив - «ряд» , «последовательность» , «набор» , «таблица» , … § переменная – «измерение» , «величина» , «кол-во» , … § выбор метода (схемы) решения § § § классическая задача – ввод/вывод, подсчет, поиск, замена задача, которую уже решали (предыдущий опыт) новая задача (требуется дополнительная подготовка) § построение блок-схемы алгоритма § метод «сверху вниз» - {ввод, расчет, вывод} § детальное рассмотрение каждой подзадачи как отдельной задачи 2/16/2018 Федоров А. М. amfedorov@mail. ru 77
Разработка программы на ЯП (Pascal) § Программирование == кодирование § перевод объектов алгоритма в объекты программы § описание переменных, массивов, и т. д. § определение типов § перевод блок-схемы в программу на ЯП § линейные участки программ (функции, процедуры, : =) § ветвления (оператор условия: IF) § циклы (операторы цикла: FOR, WHILE, UNTIL) § другие важные элементы программы § оформление удобного в обращении ввода/вывода § «защита от дурака» - безопасность работы с пользов. 2/16/2018 Федоров А. М. amfedorov@mail. ru 78
Использование полученных результатов § Кому это нужно? § автору решения § заказчику § «всему человечеству» и т. п. 2/16/2018 Федоров А. М. amfedorov@mail. ru 79
Выпускная работа – самостоятельная работа (план) § Выпускная работа § Формы работы § § § разбиение на группы самостоятельная работа помощь преподавателя § Задача § Из предложенного списка или самостоятельно придумать § Связь с предметной областью (с жизнью) § в решении используются массивы (таблицы) и § циклические операции § Что надо сделать § § выбрать задачу составить блок-схему алгоритма решения написать программу на языке Pascal прокомментировать решение § выбор переменных § разделы программы (ввод, расчет, вывод) § предложить свою задачу (условие) § Оформление § записать все части решения в документ Word § Защита § Рассказать об этапах решения задачи § Пояснить разработанные блок-схему и программу § Предложить свою задачу для решения своим сокурсникам 2/16/2018 Федоров А. М. amfedorov@mail. ru 80
Формы работы § разбиение на группы § если это оправдано § в группе есть замечательная идея, которую можно реализовать только группой § самостоятельная работа § каждый получает максимальный эффект от процесса самостоятельной работы § помощь преподавателя § направление деятельности § план работы 2/16/2018 Федоров А. М. amfedorov@mail. ru 81
Где взять задачу для самостоятельной работы § Выбрать из предложенного списка § список типовых задач у преподавателя § Самостоятельно выбрать § посмотреть список типовых задач § придумать задачу по аналогии § Связь задачи с предметной областью (с жизнью) § в решении используются массивы (таблицы) и § циклические операции 2/16/2018 Федоров А. М. amfedorov@mail. ru 82
Что надо сделать § § выбрать задачу составить блок-схему алгоритма решения (картинка в Word) § написать программу на языке Pascal (исходный код pas-файл и исполнимый exe-файл) § прокомментировать решение (в Word) § выбор переменных (что обозначают переменные) § разделы программы (ввод, расчет, вывод) § Дополнительно § предложить условие подобной задачи – «для товарища» 2/16/2018 Федоров А. М. amfedorov@mail. ru 83
И в конце концов § Оформление § записать все части решения в документ Word § Защита § Рассказать об этапах решения задачи § Пояснить разработанные блок-схему и программу § Предложить свою задачу для решения своим сокурсникам 2/16/2018 Федоров А. М. amfedorov@mail. ru 84
Пример: «трудный выбор» § Мальчик Петя задумал купить себе мобильный телефон. Вышел в Интернет и определил, что телефонов так много - аж глаза разбегаются. Однако для себя Петя отметил, что отличаются эти телефоны по 5 -ти важнейшим признакам : § Bluetooth ; GPRS; полифония; фотоаппарат; многоцветность экрана. § Решил, что купит самый дешевый телефон, в котором есть любые три из перечисленных признаков (неважно какие) § Учитывая, что модельный ряд телефонов изменяется очень быстро, Петя создал программу, которая делает за него этот трудный выбор. 2/16/2018 Федоров А. М. amfedorov@mail. ru 85
Термины § « 5 признаков» - массив данных № Назв цена BT GPRS WAP 1 Simens 2500 x 2 Моторола 2300 x 3 LG 2550 x 4 Samsung 1935 X 5 Voxtel 2505 X x x 6 Nokia 2600 X x x x Photo x X x x § «Самый дешевый» - минимальная цена 2/16/2018 Федоров А. М. amfedorov@mail. ru 86
Алгоритм (1) § Пусть минимальная цена у первого телеф. § Для каждой строки массива (телефона) § Если количество “x” не меньше 3(трех) то сравнить с минимальным § Если текущая цена меньше минимальной то Запомнить эту текущую § Перейти к следующей строке § Вывести последний полученный минимальный элемент 2/16/2018 Федоров А. М. amfedorov@mail. ru 87
Спасибо за внимание 2/16/2018 Федоров А. М. amfedorov@mail. ru 88


