Тема 6. Алгоритмизация и программирование Лекция 12. Алгоритмы. Свойства алгоритмов. Языки программирования.
План лекции:
Алгоритм, численные и логические алгоритмы. Свойства алгоритмов, дискретность, определенность, понятность, результативность. Формы записи алгоритма, блок-схемы, основные элементы блок схем. Базовые структуры алгоритмов, линейные, разветвляющиеся, циклические алгоритмы. Данные и их типы. Логические основы алгоритмизации. Языки программирования, эволюция, классификация. Языки программирования высокого и низкого уровня. Компилируемые языки. Интерпретируемые языки. Объектно-ориентированные языки. Модульный принцип программирования. Принципы проектирования программ сверху-вниз и снизу-вверх. Системы программирования, схема разработки прикладных программ в среде системы программирования, трансляция (компиляция), исполнимый код.
Краткий конспект лекции
Программированию предшествует важнейший этап - постановка задачи. Далее следует формализация, разработка математических и физических моделей, вывод расчетных формул. |
Программист должен четко представлять явление или формулы, которые он алгоритмизирует. Составление алгоритма заключается в логическом описании процесса решения задачи и требует знания элементов математической логики.
Программа (исходный код) - набор пошаговых команд, написанных на языке программирования (в текстовом редакторе), соответствующих алгоритму решения задачи и реализуемых микропроцессором.
Язык программирования - язык, используемый для написания компьютерных программ и состоящий из словаря и совокупности правил (синтаксиса), которые применяются при написании команд, выполняемых процессором. Языки программирования по стилю написания исходного кода классифицируются на процедурные (составляются процедуры, содержащие набор команд) и декларативные (определяется совокупность фактов и взаимосвязей, позволяющих запрашивать результаты). Языки программирования по уровню исходного кода классифицируются на языки высокого и языки низкого уровня.
Языки программирования низкого уровня: Машинный язык и ассемблер
Языки программирования высокого уровня представляют специальный набор инструкций, использующих ключевые слова и синтаксис, похожий на английский:. Visual Basic, Visual Fortran, Cobol, Delphi, С++.
Текст программы на языке программирования называется исходным кодом, а конечная программа в машинных кодах - объектным кодом. Для получения объектного кода используются трансляторы.
Трансляторы делятся на два типа: интерпретаторы и компиляторы.
Интерпретатор переводит в машинный код и выполняет очередной оператор программы, используется для языка программирования Basic.
Компилятор переводит в машинный код исходный текст программы целиком, используется для языков программирования Pascal, С и др.
Достоинство компиляторов — быстродействие и автономность получаемых программ. Достоинство интерпретаторов — их компактность, возможность остановить в любой момент выполнение программы, выполнить различные преобразования данных и продолжить работу программы.
Компилятор - программа, которая считывает исходный код, проверяет его синтаксис, преобразует в машинный код (транслирует) и устанавливает связи с используемыми подпрограммами (компилирует). В процессе компиляции выполняются лексический, синтаксический, семантический анализ, генерация и оптимизация промежуточного кода, генерация внутреннего представления.
Лексический анализ – выявляются отдельные составляющие текста программы и определяется их тип. Например, названия операторов, имена переменных, разделители (скобки, знаки препинания и т.д.). Лексемы заменяются кодом их типа. Контролируется использование недопустимых символов.
Синтаксический анализ – определяется синтаксическая правильность лексем, например, парность скобок.
Семантический анализ – выявляются нарушения правил написания программы, например, описание типов имен перед их использованием, дублирование описания имен, согласование типов формальных и фактических параметров и т.д.
Генерация и оптимизация промежуточного кода – перевод текста программы в язык ассемблера и устранение "лишнего" кода.
Генерация внутреннего представления – создание объектного (машинного) кода с использованием относительных адресов памяти (начиная с 1h).
В результате работы компилятора получается исполняемый файл – приложение.
Интерпретатор - программа, которая считывает исходный код по операторам, сразу транслирует их выполняет. Таким образом, в результате работы интерпретатора исполняемый файл не формируется.
Исполняемый файл - программа, готовая к запуску на компьютере (обычно файл с расширением .exe).
Программирование – процесс, включающий стадии проектирования, кодирования, отладки, тестирования и документирования программы.
Проектирование программы – определение входных данных, процедур обработки данных и выходных данных.
Кодирование программы – запись программы на языке программирования в соответствии с алгоритмом задачи.
Тестирование программы – проверка результатов выполнения программы для различных вариантов исходных данных, включающих крайние значения диапазона данных, экспериментально апробированные данные, расчеты по аналитическим, либо упрощенным зависимостям и расчеты с использованием других программ.
Отладка программы - выявление и исправление синтаксических ошибок, ошибок на этапе выполнения (переполнение разрядной сетки, деление на ноль, извлечение корня из отрицательного числа и т.д.) и логических ошибок в программе.
Процесс отладки программы начинается с выявления:
синтаксических ошибок в тексте (неверно записанных операторов),
ошибок при выполнении программы (недопустимые математические действия, операции с числами, превосходящими предельные значения),
алгоритмических ошибок (неверно составлен или запрограммирован алгоритм).
Документирование программы - создание подробного руководства по программе: описание вводимых и выводимых данных, тестовые примеры расчета.
Алгоpитм - заранее заданное понятное и точное предписание возможному исполнителю совершить определенную последовательность действий для получения решения задачи за конечное число шагов
Слово «алгоритм» происходит от латинской формы написания имени арабского математика Аль Хорезми. Известно, что он родился до 800 г., а умер после 847 г., жил и работал в Багдаде - крупном научном центре и влиятельной столице Древнего Востока. Аль Хорезми использовал индийскую позиционную систему счисления с нулём и сформировал правила четырёх арифметических действий над многозначными числами.
Формы записи алгоритмов: графическая запись (блок-схемы); словесная запись (псевдокоды); язык программирования.
Свойства алгоритмов
Дискретность - разбиение алгоритма на ряд отдельных законченных действий – шагов
Определенность (детерминированность) - однозначные указания, применение алгоритма к одним и тем же исходным данным должно приводить к одному и тому же результату
Понятность - однозначное понимание и исполнение каждого шага алгоритма его исполнителем
Результативность - обязательное получение результата за конечное число шагов
Массовость - означает, что алгоритм решения задачи pазpабатывается в общем виде, т.е. он должен быть применим для некоторого класса однотипных задач, различающихся лишь исходными данными
Алгоритмы можно представлять как некоторые структуры, состоящие из отдельных базовых (т.е. основных) элементов.
Графическая запись алгоритма представляется в виде блок-схемы. Конфигурация и размеры блоков, а также порядок графического оформления блок-схем регламентированы ГОСТ 19002-80 и ГОСТ 19003-80 "Схемы алгоритмов и программ". Пример блок-схемы: |
Логическая структура любого алгоритма может быть представлена комбинацией трех базовых структур: следование, ветвление, цикл. Характерной особенностью базовых структур является наличие в них одного входа и одного выхода
Теорема Дейкстра. Алгоритм любой сложности можно реализовать, используя только три конструкции: следования (линейные), выбора (ветвления) и повторения (циклические).
Модульное программирование — это организация программы как совокупности независимых блоков, называемых модулями, структура и поведение которых подчиняются определенным правилам.
Концепцию модульного программирования можно сформулировать в виде нескольких понятий и положений:
1) большие задачи разбиваются на ряд более мелких, функционально самостоятельных подзадач — модулей, которые связаны между собой только по входным и выходным данным;
2) модуль представляет собой «черный ящик» с одним входом и одним выходом. Это позволяет безболезненно производить модернизацию программы в процессе ее эксплуатации, облегчает ее сопровождение, а также позволяет разрабатывать части программодного проекта на разных языках программирования;
3) в каждом модуле должны осуществляться ясные задачи. Процесс декомпозиции нужно продолжать до тех пор, пока не будет ясного понимания назначения всех модулей и их оптимального сочетания;
4) исходный текст модуля должен иметь заголовок и интерфейсную часть, где отражаются назначение модуля и все его внешние связи;
5) в ходе разработки модулей программы следует предусматривать специальные блоки операций, учитывающие реакцию на возможные ошибки в данных или в действиях пользователя.
Большое значение в концепции модульного программирования придается организации управляющих и информационных связей между модулями программы, совместно решающими одну или несколько больших задач.
Нисходящий подход к разработке программных систем. В соответствии с этим методом создание программы начинается сверху, т.е. с разработки самого главного, генерального алгоритма. Так как на верхнем уровне обычно еще не ясны детали реализации той или иной части программы, то эти части следует заменить временными заглушками .
Восходящий подход к разработке программ. В этом случае осуществляется последовательное построение программы из уже имеющихся элементов, начиная с примитивов, предоставляемых выбранным языком программирования. Этот процесс заканчивается получением требуемой готовой программы. На каждом этапе из имеющихся элементов строятся более мощные элементы. Эти элементы будут использоваться на следующем этапе для построения еще более мощных элементов, и так далее до тех пор, пока не будут получены элементы, из которых можно непосредственно составить требуемую программу.
При конструировании новых алгоритмов обычно доминирует нисходящий метод. При адаптации программ к несколько измененным требованиям предпочтение зачастую отдается восходящему методу. Оба этих метода позволяют разрабатывать структурированные программы.
Вопросы по данной теме:
Что такое алгоритм?
Что такое блок-схема?
Перечислите правила построения алгоритмов на языке блок-схем.
Опишите базовые управляющие конструкции алгоритмов.
Перечислите основные методы современной технологии проектирования алгоритмов.
Литература по теме:
Информатика. Общий курс / Под ред. В.И. Колесникова. - 2-е изд. - М.: Дашков и К; Наука-Пресс, 2008. - 400 с.
Игошин В.И. Математическая логика и теория алгоритмов: Уч. пос. - М.: Академия, 2004. - 448с.
Микрюков В.Ю. Алгоритмизация и программирование: Учебн. пос.- Ростов н/Д: Феникс, 2007.
- Тема 1. Понятие информации, общая характеристика процессов сбора, передачи, обработки и накопления информации Лекция 1. Понятие данные и информация
- Свойства информации
- Качества информации
- Лекция 2. Представление информации в компьютере.
- Кодирование графических данных
- Кодирование звуковых данных
- Формула Шеннона
- Лекция 3. Информационно-логические основы построения пк
- Законы логических операций
- Логические элементы эвм
- Cумматор (p0 – перенос разряда из предыдущей операции суммирования)
- Тема 3. Технические средства реализации информационных процессов Лекция 4. Классификация эвм. Тенденции развития вычислительной техники. Архитектура эвм.
- Типы компьютеров:
- Типы компьютерных систем
- Многопроцессорные системы
- Архитектура пк
- Лекция 5. Состав и назначение основных узлов персонального компьютера. Их характеристики
- Микропроцессор
- Лекция 6. Устройства передачи данных в пк. Виды памяти пк. Устройства ввода/вывода информации в пк
- Виды памяти пк. Назначение и основные характеристики
- Внутренняя память пк
- Внешняя память пк
- Устройства ввода информации в компьютер
- Устройства вывода информации из компьютера
- Файловые системы
- Лекция 8. Текстовые редакторы и процессоры, интерфейс, типовые операции. Графические редакторы и демонстрационные программы
- Лекция 9. Электронные таблицы. Специализированные программные средства и системы программирования.
- Тема 4. Основы защиты информации и сведений, методы защиты информации Лекция 10. Защита информации. Компьютерные вирусы. Антивирусные программы. Архивация, методы сжатия. Методы шифрования.
- Основные источники вирусов:
- Основные ранние признаки заражения компьютера вирусом:
- Антивирусные программы
- Различают типы антивирусных программ:
- Алгоритмы сжатия информации без потерь (обратимые методы)
- Алгоритмы сжатия информации с потерями (необратимые методы)
- Тема 5. Базы данных Лекция 11. Методы шифрования базы данных и субд. Реляционные базы данных.
- Тема 6. Алгоритмизация и программирование Лекция 12. Алгоритмы. Свойства алгоритмов. Языки программирования.
- Лекция 13. Объектно-ориентированный подход к программированию.
- Тема 7. Программное обеспечение и технологии программирования Лекция 14. Технологии программирования и принципы разработки программного приложения
- Тема 8. Языки программирования высокого уровня Лекция 15. Эволюция и классификация языков программирования
- Языки программирования низкого уровня
- Машинный язык
- Assembler (Ассемблер)
- Языки программирования высокого уровня
- Basic (Бейсик)
- Fortran (Фортран)
- Cobol (Кобол)
- Pascal (Паскаль)
- Объектно-ориентированное и визуальное программирование
- Лекция 16. Программирование на языке visual basic
- Операции Visual Basic
- Вызов функций и процедур
- Область видимости переменной
- Время жизни переменной
- Лекция 17. Среда разработки приложений visual basic.
- Интегрированная среда разработки приложений Visual Basic
- Компоненты рабочей среды
- Панель элементов управления
- Лекция 18. Разработка программного приложения.
- Лекция 19. Компиляция и выполнение проекта План лекции:
- Тема 9. Модели решения функциональных и вычислительных задач Лекция 20. Моделирование объектов и систем
- Тема 10. Локальные и глобальные сети эвм Лекция 21. Локальные сети эвм
- Типы локальных сетей
- Архитектура (Топология) лвс
- Сетевой кабель
- Сравнение кабелей
- Назначение платы сетевого адаптера
- Администрирование сети
- Лекция 22. Глобальные сети эвм
- Расширение локальных сетей
- Передача данных по сети
- Беспроводные сети
- Семейство протоколов tcp/ip