Учебное пособие Рекомендовано учебно-методическим советом угаэс уфа-2006
Вид материала | Учебное пособие |
- Учебное пособие Рекомендовано учебно-методическим советом угаэс уфа-2005 удк 330., 1365.17kb.
- Учебное пособие Часть 1 Рекомендовано учебно-методическим советом угаэс уфа 2006, 1359.55kb.
- Бизнес-планирование предприятия учебное пособие Рекомендовано учебно-методическим советом, 1729.98kb.
- Учебное пособие Рекомендовано учебно-методическим советом угаэс уфа-2009, 2459.47kb.
- Учебное пособие Рекомендовано учебно-методическим советом угаэс уфа-2008, 3188.71kb.
- Учебное пособие Часть 2 Производственная безопасность Рекомендовано учебно-методическим, 1618.75kb.
- Учебное пособие уфа-2007 удк 330. 01 (075. 8) Ббк 65. 02., 836.31kb.
- Учебное пособие Рекомендовано научно-методическим советом, 1565.87kb.
- Учебно методическое пособие Минск 2006 удк 616. 42-006. 441-053. 2(075., 1819.29kb.
- Учебное пособие рекомендовано умо по образованию в области сервиса угаэс, 1695.83kb.
2.1. Программирование и алгоритмизация
Программированию предшествует важнейший этап – постановка задачи. Постановка задачи может включать широкий спектр вопросов (разработка математических и физических моделей, вывод расчетных формул и т. п.). Программист должен четко представлять явление или формулу, которые он алгоритмизирует.
Процесс программирования начинается, как правило, с составления алгоритма. Составление алгоритма заключается в логическом описании процесса решения задачи и требует знания элементов математической логики. Таким образом, алгоритм – это последовательности операций, описывающих процесс решения задачи.
Графическая запись алгоритма представляется в виде блок-схемы. Такое представление алгоритма достаточно удобно и наглядно показывает последовательность выполнения операторов программы.
С появлением объектно-ориентированного программирования изменились и подходы к алгоритмизации, наряду с разработкой алгоритмов реализации численных методов программист при создании приложения сталкивается с необходимостью алгоритмизации пользовательского интерфейса приложения (команд меню, кнопок панелей инструментов), разработкой алгоритмов при создании классов, написании обработчиков событий для объектов, используемых в приложении.
Блок-схемы используется как при обучении программированию для графического представления выполнения операторов и логических переходов (детальные блок-схемы), так и при описании взаимодействия процедур в сложных программах (укрупненные блок-схемы). Приведем основные обозначения, применяемые в детальных блок-схемах.
Рис. 2.1. Обозначения в блок-схемах
В соответствии с используемыми в программе операторами различают следующие типы алгоритмов: линейный, ветвящийся, циклический, комбинированный.
Пример блок-схемы алгоритма расчета квадратного корня числа.
Рис. 2.2. Пример блок-схемы алгоритма
Программирование заключается в записи алгоритма на языке программирования и отладке программы. Текст программы записывается в текстовом редакторе, затем программа компилируется – переводится транслятором (переводчиком) в машинные коды и запускается на выполнение.
Процесс отладки программы начинается с выявления:
- синтаксических ошибок в тексте (неверно записанных операторов);
- ошибок при выполнении программы (недопустимые математические действия, операции с числами, превосходящими предельные значения);
- алгоритмических ошибок (неверно составлен или запрограммирован алгоритм).
2.2. Программы и языки программирования
Программа (исходный код) - набор пошаговых команд, написанных на языке программирования (в текстовом редакторе), соответствующих алгоритму решения задачи и реализуемых микропроцессором.
Язык программирования – язык, используемый для написания компьютерных программ и состоящий из словаря и совокупности правил (синтаксиса), которые применяются при написании команд, выполняемых микропроцессором.
Текст программы на языке программирования называется исходным кодом, а конечная программа в машинных кодах – объектным кодом. Для получения объектного кода используются компиляторы и интерпретаторы.
Компилятор – программа, которая считывает исходный код, проверяет его синтаксис, преобразует в машинный код (транслирует) и устанавливает связи с используемыми подпрограммами (компилирует). В результате работы компилятора получается исполняемый файл – приложение.
Интерпретатор – программа, которая считывает исходный код по операторам, сразу транслирует их выполняет. Таким образом, в результате работы интерпретатора исполняемый файл не формируется.
Исполняемый файл – программа, готовая к запуску на компьютере (обычно файл с расширением .exe).
Программирование – процесс, включающий стадии проектирования, кодирования, отладки, тестирования и документирования программы.
- Проектирование программы – определение входных данных, процедур обработки данных и выходных данных.
- Кодирование программы – запись программы на языке программирования в соответствии с алгоритмом задачи.
- Отладка программы – выявление и исправление синтаксических ошибок, ошибок на этапе выполнения (переполнение разрядной сетки, деление на ноль, извлечение корня из отрицательного числа и т.д.) и логических ошибок в программе.
- Тестирование программы – проверка результатов выполнения программы для различных вариантов исходных данных, включающих крайние значения диапазона данных, экспериментально апробированные данные, расчеты по аналитическим, либо упрощенным зависимостям и расчеты с использованием других программ.
- Документирование программы – создание подробного руководства по программе: описание вводимых и выводимых данных, тестовые примеры расчета.
2.2.1. Языки программирования
Языки программирования по стилю написания исходного кода классифицируются на процедурные (составляются процедуры, содержащие набор команд) и декларативные (определяется совокупность фактов и взаимосвязей, позволяющих запрашивать результаты).
Языки программирования по уровню исходного кода классифицируются на языки высокого уровня и языки низкого уровня.
2.2.1.1. Языки программирования низкого уровня
Языки программирования низкого уровня представляют специальный набор инструкций, набранных с использованием команд управления регистрами микропроцессора. Языки программирования низкого уровня позволяют программисту кодировать команды с максимально возможной эффективностью. Но использование языков низкого уровня требует досконального знания возможностей конкретной компьютерной системы и команд микропроцессора. Кроме того, программирование на языке низкого уровня занимает существенно больше времени, чем программирование на языке высокого уровня.
2.2.1.1.1. Машинный язык
Машинный язык содержит набор команд управления регистрами микропроцессора. Оперирует двоичными, восьмеричными или шестнадцатеричными числами. Зависит от типа микросхемы процессора компьютера.
2.2.1.1.2. ASSEMBLER (Ассемблер)
Язык ассемблера оперирует инструкциями и командами, которые может выполнить микропроцессор. Программирование в машинных кодах очень сложно и обычно это делается сериями мнемоник. Мнемоники – это коды операций, которые читабельны и понятны людям и могут быть легко преобразованы в машинный код, используя ассемблер.
2.2.1.2. Языки программирования высокого уровня
Языки программирования высокого уровня представляют специальный набор инструкций, использующих ключевые слова и синтаксис, похожий на английский. Эти языки освобождают программиста от необходимости знать, как именно компьютер выполняет команды. Каждый оператор языка высокого уровня соответствует нескольким командам машинного языка, что позволяет писать программы быстрее, чем на языках низкого уровня. Однако трансляция выполняется не самым эффективным образом, поэтому программы, написанные на языках высокого уровня, выполняются медленнее, чем написанные на языках низкого уровня.
2.2.1.2.1. BASIC (Бейсик)
Разработан сотрудниками Дартмутского колледжа (США) Джоном Кемени (John Kemeny) и Томасом Курцом (Tomas Kurtz)в 1964 году. Первый персональный компьютер IBM PC имел 16-разрядный BASIC, разработанный корпорацией IBM. Позже его сменил GW-BASIC и QUICK-BASIC, разработанный корпорацией Microsoft.
BASIC (Beginner's All-Purpose Symbolic Instruction Code) – универсальный код символьных команд для начинающих, является интерпретируемым процедурным языком, операторы которого выполняется компьютером шаг за шагом. BASIC легко изучить, но программы, написанные на нем, выполняются медленно, поэтому он плохо подходит для профессионального программирования. Разработаны компиляторы Бейсика, например, Turbo Basic (фирма Borland) и Visual Basic (фирма MicroSoft).
Для программирования в приложениях Microsoft Office корпорацией Microsoft был разработан язык VBA (Visual Basic for Application).
2.2.1.2.2. FORTRAN (Фортран)
Разработан в 1956 году Джоном Бэкусом (John Backus). FORTRAN (FORmula TRANslator) – переводчик формул, является компилируемым языком программирования. FORTRAN удобный язык для программирования научных и инженерных задач, создания математических прикладных программ, имеет большую библиотеку готовых подпрограмм.
2.2.1.2.3. PASCAL (Паскаль)
Разработан в 1971 году Никлаусом Виртом (Nicklaus Wirth), назван в честь Луи Блез Паскаля. Процедурный, структурированный язык программирования позволяет писать модульные программы. PASCAL получил широкое распространение как язык обучения программированию.
Turbo Pascal – усовершенствованный и расширенный (объектно-ориентированные версии - Object Pascal) язык программирования, разработанный фирмой Borland International. Имеет быстродействующий компилятор, оболочку с текстовым редактором и позволяет создавать исполняемые программы.
Delphi (Дельфи) – разработан фирмой Borland, 1995 г. Позволяет создавать проекты, используя средства визуального программирования, дополняемые исходным кодом, написанным на Object Pascal.
2.2.1.2.4. C(Си)
Разработан в 1972 году Денисом Ричи (Dennis Ritchi). Многоцелевой компилируемый процедурный язык сочетает образность языков программирования высокого уровня с эффективностью ассемблера. Используется для профессионального программирования, создания программного обеспечения. Большинство коммерческих (платных) программ, написаны на С или C++.
C++ - объектно-ориентированный язык программирования, разработанный Бьярни Страуструпом (Bjarne Stroustrup) в начале 1980-х.
Borland C++ Builder, Microsoft Visual C++ - объектно-ориентированные визуальные языки программирования.
2.2.2. Объектно-ориентированное и визуальное программирование
Современные языки программирования являются объектно-ориентированными, что означает использование объектов при написании программного кода. Объекты являются экземплярами классов. Таким образом, объектно-ориентированное программирование (ООП) предполагает использование готовых и создание новых классов в программах.
Класс представляет собой тип данных, содержащий набор свойств, методов и событий, в отличие от обычного типа данных, определяющего только внутреннее представление значений переменных. Например, некоторый класс Pen, предназначенный для рисования, может иметь такие свойства как цвет, толщину линии, начертание линии (сплошная, пунктирная и т.п.), методы создания и удаления экземпляров класса, присвоения свойств другим экземплярам данного класса. Набор событий некоторого класса позволяет программировать необходимые действия, выполняющиеся при наступлении событий, например, при изменении свойства цвет объекта класса Pen, можно запрограммировать изменение начертания линий, определив, таким образом, для некоторого набора цветов, определенные начертания линий.
Доступ к свойствам и методам класса реализуется через объекты данного класса по схеме: ИмяОбъекта.Свойство и ИмяОбъекта.Метод, таким образом, разные объекты могут иметь одинаковые свойства и использовать одни и те же методы.
Свойства могут быть объектами, которые, в свою очередь, имеют свои свойства. В этом случае доступ к свойствам имеет вид:
ИмяОбъекта.ИмяОбъекта_Свойства.Свойство
Например: Command1.Font.Name
Некоторые свойства являются свойствами по умолчанию. В этом случае их можно не указывать, например, следующие записи идентичны:
ИмяОбъекта.ИмяОбъекта_Свойства.Свойство_ПоУмолчанию
ИмяОбъекта.ИмяОбъекта_Свойства
Например: Command1.Font.Name то же, что и Command1.Font
Значения некоторых свойств могут задаваться как на этапе конструирования проекта, так и в программном коде, например, значения свойств шрифта (Font), другие только на этапе конструирования проекта, например, значения свойства начальная позиция формы Form1.StartUpPosition.
Если свойство доступно для чтения и записи, то оно может стоять как в левой, так и в правой части равенства, например:
List1.Font.Name = "Courier"
Fname = List1.Font.Name,
где Fname – переменная строкового типа.
Если свойство доступно только для чтения, то оно может стоять только в правой части равенства, например, количество элементов списка:
Cnt= List1.ListCount
Методы объектов используются при написании программного кода, например, добавление строки в список: List1. AddItem "Строка1".
Класс может содержать набор событий. Основная идея событийно-управляемого программирования (event-driven programming) заключается в том, что в программе необходимо указать, как реагировать на различные события (действия пользователя): выбор команды меню, щелчок или перемещение мыши, нажатие клавиш и др. Например, в событии щелчок мыши на кнопке, можно закрыть окно приложения
Private Sub Command1_Click()
Unload Me
End Sub
ООП основывается на трех принципах: инкапсуляция, наследование и полиморфизм.
Способность класса содержать в себе свойства, методы и события называется инкапсуляцией. Принцип инкапсуляции в ООП позволяет скрыть от пользователя программную реализацию свойств и методов, оставляя только возможность их использования в классах.
Следующим принципом ООП является наследование, т.е. создание новых классов на основе имеющихся. Это позволяет использовать готовые свойства, методы и события, написанные ранее для одних классов другими классами. Например, оператор
Type Pencil = class(Pen)
Позволяет создать класс Pencil, наследующий все атрибуты класса Pen и обладающий собственными, выполняющими специфические действия, например, свойство, позволяющее рисовать линии переменной толщины.
Классы могут иметь методы с одинаковым названием, но их программная реализация может быть различна. Этот принцип ООП называется полиморфизмом. Например, оба класса Pencil и Pen имеют метод Assign – присвоения свойств другим экземплярам, но поскольку набор свойств у данных классов может быть разным, то и процедуры присвоения свойств будут разными.
ООП позволяет программистам создавать приложения, используя готовые классы, и это хорошо. Но современные языки программирования еще и визуальные, например, Visual Basic. Визуальная среда разработки включает редактор программного кода, отладчик, конструктор форм и называется также интегрированной средой разработки IDE (Integrated Development Environment). Конструктор форм позволяет использовать готовые компоненты, например, форму, кнопку, надпись, поле, флажок, переключатель и т.п., что значительно упрощает и ускоряет создание приложения. Такие средства разработки приложений называют RAD (Rapid Application Development).