- •Курс лекций
- •Лекция 1. Технология программирования - основа разработки качественных программных средств
- •1.1. Программа как формализованное описание процесса обработки данных. Понятие «программное средство».
- •Определение требований к программному средству.
- •1.3. Спецификация качества программного средства.
- •Технология программирования как технология разработки качественных программных средств.
- •. Этапы развития технологии программирования.
- •2.1. Специфика разработки программных средств.
- •Виды программных продуктов и специализация программистов
- •Лекция 2. Общие принципы разработки программных средств
- •2.2. Основные этапы решения задач на эвм и их характеристика.
- •Основные этапы решения задач на эвм и их характеристика
- •Постановка задачи.
- •Формализация задачи.
- •Построения алгоритма
- •Составление программы на языке программирования.
- •Отладка и тестирование программы
- •Разработка документации.
- •Сопровождение опытной эксплуатации.
- •2.3. .Источники ошибок в программных средствах
- •2.3.1. Интеллектуальные возможности человека
- •2.3.2. Неправильный перевод как причина ошибок в программных средствах.
- •Модель перевода.
- •Основные пути борьбы с ошибками.
- •Лекция 3. Разработка структуры программы и модульное программирование.
- •3.1. Основные классы архитектур программных средств.
- •Структура программы. Методы разработки структуры программы. Блок - схема программы
- •Модульное программирование. Основные характеристики модуля.
- •Основные характеристики программного модуля.
- •Спецификация программного модуля содержит,
- •Порядок разработки программного модуля.
- •Контроль структуры программы.
- •Лекция 5. Представление основных структур программы в языках высокого уровня
- •Основные языки программирования и их характеристика.
- •Структура данных в языках программирования высокого уровня
- •Типы данных
- •6. Лекция 6. Стандартные типы данных в языках программирования Visual Basic.
- •Простые целые и вещественные типы переменных. И операции с ними
- •Логические типы данных и операции с ними.
- •7. Лекция 7. Представление строковых типов данных, типы данных Date и Variant.
- •Строковые типы данных и функции работы сними.
- •7.1.1. Операции со строковым типом данных.
- •Переменные типа Data и стандартные функции работы с ними.
- •Лекция 8. Структуры ветвления (операторы условного перехода) и повторения ( циклы) и особенности их использования в программах.
- •Операторы ветвления
- •8.2. Структуры повторения (Циклы).
- •Лекция 9. Структурированные типы данных. Массивы и пользовательские типы данных, их использование в программах
- •Типы данных, определяемые пользователем.
- •9.1. Массивы. Статические массивы.
- •9.2. Динамические массивы
- •9.3. Функции, предназначенные для работы с массивами.
- •9.4. Типы данных, определяемые пользователем.
- •Лекция 10. Основные строительные блоки программы, процедуры и функции.
- •Процедуры, назначение, написание, размещение.
- •10.2. Процедуры обработки событий.
- •Процедуры общего назначения.
- •Вызов процедуры.
- •Выход из процедуры до ее завершения.
- •Лекция 11. Функции . Области видимости переменных, функций и процедур
- •Функции. Стандартные функции
- •Функции, создаваемые пользователем
- •Модульная конструкция программы. Модули, формы. Стандартные модули, модули класса.
- •Области видимости переменных, процедур и функций
- •Лекция 12. Хранение информации в файлах.
- •12.1. Файлы с последовательным доступом.
- •12.1. Открытие файла с последовательным доступом.
- •12.3. Чтение данных из файла с последовательным доступом.
- •12.3. Запись информации в файл с последовательным доступом.
- •12.4. Работа с файлами произвольного доступа.
- •12.5. Ввод и вывод информации записями
- •Лекция 13. Операции с файлами.
- •13.1. Операции работы с файлами
- •13.2. Установка атрибутов файлов
- •Стандартные объекты для работы с файлами.
- •13.4. Вывод информации на печать
- •Лекция 14. Методы структурного программирования. Методы доказательства и отладки программ. Вопросы:
- •Методы структурного программирования
- •14.2. Пошаговая детализация и понятие о псевдокоде.
- •Пример пошагового составления программы
- •Доказательство свойств программы.
- •14.3.1. Обоснования программ. Формализация свойств программ.
- •Свойства простых операторов.
- •Свойства основных конструкций структурного программирования.
- •14.4.4. Завершимость выполнения программы.
- •Пример доказательства свойства программы.
- •Лекция 15 Отладка программы
- •15.1. Типы ошибок в программе
- •15.2. Программные средства для обнаружения ошибок.
- •Ошибки в структуре программы.
- •Перехват и устранение ошибок
- •15.5. Инструменты отладки
- •6. Отображение значений переменных и функций.
- •Лекция 16. Обьекто - ориентированное программирование.
- •16.1. Основные понятия объекто – ориентированного программирования.
- •16.2. Стандартные объекты управления, свойства, методы, события
- •16.3. . Пользовательские элементы управления
- •Лекция 17. Применение технологии ole в программировании и завершение проекта.
- •17.1.. Применение технологии ole в программировании на языках высокого уровня
- •Объект управления ole Container
- •Технология ole Automation.
- •17.4. Состав проекта
- •Создание дистрибутива программного средства
- •Документирование программных средств
- •Аттестация программного средства.
Контроль структуры программы.
Для контроля структуры программы можно использовать три метода:
статический контроль,
смежный контроль,
сквозной контроль.
Статический контроль состоит в оценке структуры программы сточки зрения хорошо ли программа разбита на модули с учетом значений рассмотренных выше основных характеристик модуля.
Смежный контроль сверху - это контроль со стороны разработчиков архитектуры и внешнего описания ПС. Смежный контроль снизу - это контроль спецификации модулей со стороны разработчиков этих модулей.
Сквозной контроль - это мысленное прокручивание (проверка) структуры программы при выполнении заранее разработанных тестов. Является видом динамического контроля так же, как и ручная имитация функциональной спецификации или архитектуры ПС.
Следует заметить, что характер осуществления этих методов контроля зависит от выбранного метода разработки структуры программы: при классическом подходе они применяются до начала программирования модулей, а при конструктивном и архитектурном подходах - в процессе программирования модулей (в подходящие моменты времени).
Лекция 5. Представление основных структур программы в языках высокого уровня
Вопросы :
1. Основные языки программирования и их характеристика
2. Структура данных в языках программирования высокого уровня
Основные языки программирования и их характеристика.
Языки программирования являются искусственными языками, в них синтаксис и семантика строго определены. Поэтому языки программирования, в отличие от естественных языков, не допускают многозначных и произвольных толкований.
Синтаксис – это набор правил, которые определяют основные внутренние структуры и последовательности символов, допустимых в языке программирования. Семантика – значения языковых единиц: слов, словосочетаний предложений.
Основными характеристиками свойств языков программирования. Позволяющими сравнивать языки программирования и выбирать наилучшие для решения той или иной задачи, являются: мощность, уровень и концептуальная целостность.
Мощность языка характеризуется количеством и разнообразием задач, алгоритмы решения которых можно записать используя этот язык. Очевидно, самым мощным является машинный язык. Любую задачу, запрограммированную на каком – либо языке можно запрограммировать и на машинном языке.
Уровень языка характеризуется сложностью решения задач с помощью этого языка. Чем проще записывается решение задач, чем более непосредственно реализуются сложные операции и понятия, чем меньше объем получаемых программ, тем выше уровень языка.
Концептуальная целостность языка характеризуется свойствами совокупности понятий, служащих для описания языка и включают три взаимосвязанных характеристики: экономию, ортогональность и единообразие понятий. Экономия понятий предполагает достижение максимальной мощности языка с помощью минимального числа понятий. Ортогональность понятий означает, что между понятиями не должно быть взаимного влияния. Так, если одно и то же понятие используется в разных контекстах, то правила использования должны быть одни и те же. Единообразие понятий требует согласованного, единого подхода к описанию и использованию всех понятий.
Обычно, чем меньше мощность языка, ( т.е. чем уже область его применения), тем выше его уровень. По этой причине наряду с универсальными языками разрабатываются и специализированные в некоторой конкретной предметной области языки программирования. Конечно, чем мощнее язык, тем труднее обеспечить концептуальную целостность; в то же время высокий уровень языка обладает высокой концептуальной целостностью.
Перечисленные характеристики языков программирования определяют наличие или отсутствие надежности, удобочитаемости, полноты, гибкости, простоты языков. Эти свойства позволяют более детально сравнивать языки.
Надежность языков обеспечивает минимум ошибок при написании программы. Для этого язык должен быть таким . чтобы трудно было сделать ошибку. Язык должен защищать программиста от него самого., сделать трудным или даже невозможным появление некоторых ошибок. Например, благодаря наличию в языке требования чтобы все переменные были объявлены до использования , ошибки, связанные с неправильным написанием имен, выявляются при компиляции. Так, плохо, если одно и тоже можно сделать более, чем одним способом; возможность выбора может привести к ошибке.
Удобочитаемость языка – это свойство, обеспечивающее легкость восприятия программ человеком. Высокая степень удобочитаемости полезна с различных точек зрения.
Во – первых, уменьшается сложность документирования, во- вторых удобочитаемость позволяет легче понимать программу и, следовательно, легче находить ошибки, в третьих - удобочитаемость позволяет легче сопровождать программу и ее дорабатывать и модифицировать. Очевидно, что реализация требований удобочитаемости зависит от самого программиста, который должен постараться четче структурировать программу и так расположить её текст, чтобы подчеркнуть эту структуру. Тем не менее важную роль играет и используемый язык. Программист не должен прибегать к искусственным построениям, вводя в язык такие ограничения, как длина идентификатора, или определённые фиксированные типы данных. Алгоритмические структуры должны выражаться в терминах легко понимаемых структур.
Полнота языка обеспечивает описание на языке решение задач в определенной предметной области , а также процесс отладки программы.
Простота языка обеспечивает легкость понимания семантики языковых конструкций и запоминание их синтаксиса. Это уменьшает вероятность совершения ошибок, возникающих в результате неправильной интерпретации спецификаций языка. Например, язык должен быть таким, чтобы конструкции, означающие близкие по смыслу понятия, и выглядели одинаково, и, что еще более важно, конструкции, означающие совершенно различные понятия, должны выглядеть по – разному.
При сравнении и выборе языков программирования следует учитывать еще два свойства языка – мобильность и эффективность. Мобильность языка обеспечивает независимость его от аппаратных средств, позволяет переносить программы с машины на машину. Эффективность языка обеспечивает эффективную реализацию языка включая эффективную реализацию компилятора и эффективные программы, генерируемые компилятором. В настоящее время в связи со все снижающейся стоимостью аппаратных средств и все возрастающей стоимостью программного обеспечения необходимость эффективности отходит на второй план по сравнению с надежностью.
Пути развития и классификация языков программирования
Первый язык высокого уровня создан в 1959 году фирмой IBM . Это язык Фортран (FOFmula TRANslation - Преобразование формул). Язык является компилирующим языком. Он не только просуществовал до наших дней но и удерживает одно из первых мест в мире по распространенности. Среди причин такого долголетия можно отметить простую структуру конструкций языка, наличие большой, накопленной за долгие годы, библиотеки программ, простота транслятора. Фортран используется в сфере научных и инженерных расчетов.
В 1960 г. фирмой Internetional был разработан язык Algol-60. Он впервые предоставил для описания алгоритмов согласованное и единообразное множество конструкций, включающее явные операторы управления для представления последовательного выполнения операторов, выбора и итерации, а также мощный и удобный механизм подпрограмм, стало возможным разрабатывать программы сверху вниз с помощью последовательного уточнения абстрактных действий. Язык КОБОЛ ( 1959-1961г.) заслуживает внимания за развитие такой важной части языков программирования как средства описания и обработки файлов. Однако ни Фортран, ни Алгол , ни Кобол не были универсальными языками, первые два в основном были предназначены для решения расчетных задач , а Кобол – для экономических.
Первым действительно универсальным языком программирования был язык ПЛ/1 (1964-1966г.- фирма IBM), объединивший многие возможности и средства языков Фортран , Алгол и Кобол. Он представляет практически все необходимые средства описания алгоритмов, хотя и не столь сильно развитые, средства описания и обработки таких сложных типов данных как массивы и структуры.
Параллельно с развитием универсальных языков создавались и специализированные языки, в которых за счет сужения области их использования удавалось построить отдельные высокоуровневые механизмы для описания и данных и действий. Так в языке Лисп (1956 –1960 г.- автор John McCarthy ) допускается лишь один тип данных – список и один базовый механизм выполнения – рекурсивные функции. Программа на ЛИСП представляет собой вычисление функции аргументами, которой являются другие функции и т.д. Лисп является Функциональным языком программирования в отличие от большинства других языков, которые являются императивными, программы на них строятся в виде последовательности команд выполнения требуемых операций. Целью создания Лиспа было использование его в системах автоматического доказательства теорем. Поэтому его называют языком искусственного интеллекта. В 1964-1965г. на базе языка Фортран фирмой Dartmouth College был создан язык Бейсик - многоцелевой язык символических команд для начинающих. Первые версии языка являлись интерпретаторами, впоследствии стали использоваться оба вида трансляции: и компилятор и транслятор. Что позволяет в диалоговом режиме отлаживать программы и компилировать конечную программу. Современные версии языка позволяют решать сложные задачи на профессиональном уровне. Современный язык Visual Basic (1991г.) близок к объекто -ориентированным языкам, но по прежнему остается процедурным. Языком. Этот язык широко распространен, он интегрирован в пакеты Microsoft Office, СУБД MS Access, электронные таблицы MS Excel, текстовый редактор MS Word.
Первым из значительных этапов в дальнейшем развитии средств описания данных был язык Паскаль. В Паскале проводятся идеи структурного программирования, что позволяет над разработкой сложных проектов работать нескольким программистам одновременно. Самым главным в Паскале является принцип, согласно которому данные должны представляться в программе непосредственно в той абстрактной форме, в которой работает программист ; программиста не нужно заставлять отображать абстрактные значения на небольшое число примитивных типов данных. Паскаль предоставляет возможность пользователю придумывать собственные типы данных с помощью богатого набора базовых форм, таких как перечисляемые типы: записи, массивы, множества. Хотя в Паскале введены новые мощные механизмы построения типов данных, в нем не решена проблема, как специфицировать множество операций, которые можно применить к этим типам.
Язык Си (С и С++) – достаточно полно отражает возможности современных компьютеров, позволяя писать весьма эффективные программ, не прибегая к сложным языкам Ассемблера. Этот язык может использоваться при системном программировании. На нем разработана операционная система Unix.
Delphi – разработан фирмой Borland на базе языка Турбо- Паскаля, Чаще всего этот язык используется для работы с базами данных по технологии клиент – сервер. Основной упор в Дельфи делается на максимальное использование имеющихся программ. Это позволяет пользователям строить приложения из уже существующих объектов. А также дает им возможность разрабатывать собственные объекты.
Из других языков следует отметить язык гипертекстовой разметки HTML (и его развитие DHTML) используются в качестве основного компонента технологии системы Интернет. Язык Java, предназначен для составления программ, которые работают в сетях. Программы, написанные на Ява, часто используются для создания динамической рекламы в глобальной сети ( анимация, телетайпные ленты мерцающие надписи).
В таблице 5.1. приводятся наиболее распространенные языки программирования.
Таблица 5.1.
Язык |
Годы разработки |
Фирма разработчик |
Тип и область применения |
1 |
2 |
3 |
4 |
Ada Ада |
1979 – 1980 |
Cii – Honeywell Bull (Франция) |
Процедурно ориентированный язык, используется для разработки программ, выполняющихся одновременно на нескольких машинах |
Algol Алгол |
1960 |
International committee |
Процедурно – ориентированный язык, используется для экономических расчетов |
Apl Апл |
1961 – 1962 |
IBM |
Процедурно – ориентированный язык |
Delphi Дельфи |
1995 |
Borland |
Объектно – ориентированный язык |
Basic Бейсик |
1964 – 1965 |
Dartmouth College |
Процедурно – ориентированный язык. |
Visual Basic Визуальный Бейсик |
1971 –1995 |
Dartmouth College |
Объектно – ориентированный язык |
C Си |
1972 - 1973 |
Bell Laboratories
|
Процедурно – ориентированный язык, используется для системного программирования. |
C++ Си + + |
1980 |
Bell Laboratories
|
Объектно – ориентированный язык |
Cobol Кабол |
1959 – 1961 |
|
Процедурно - ориентированный язык |
Fort Форт |
1971 |
|
Процедурно - ориентированный язык |
Fortran Фортран |
1950 –1958 |
IBM |
Процедурно – ориентированный язык. используется для технических расчетов |
HTML ХТМЛ |
1989 |
CERN (Женева) |
Язык гипертекстовой ссылки, используется для создания сайтов в Интернет |
Lisp Лисп |
1956 – 1960 |
|
Функционально – ориентированный язык, используется для решения задач, относящихся к искусственному интелекту |
Logo Лого |
1968 – 1970 |
Massachusetts Institute of Technology
|
Язык логического программирования. |
Pascal Паскаль |
1967 – 1971 |
Federal Institute of Technology |
Структурно – ориентированный язык |
Perl Пёрл |
1986 |
|
Расширение языка HTML, для создания динамических и движущихся объектов |
PL/1 ПЛ/1 |
1964 – 1966 |
IBM |
Структурно – ориентированный язык |
Prolog Пролог |
1978 |
|
Функционально – ориентированный язык, используется для решения задач, относящихся к искусственному интелекту |
SIMULA Симула |
1967 |
Норвежский ВЦ |
Первый объектно – ориентированный язык |
SmallTalk |
1980 |
|
Чистый объектно – ориентированный язык |
Java Джава |
1995 |
Sun Microsystems |
объектно – ориентированный язык, для разработки программ, работающих в сетях |
