Изучение истории возникновения программирования и основных принципов и подходов при создании языка программирования
PAGE \* MERGEFORMAT 3
СОДЕРЖАНИЕ
ВВЕДЕНИЕ 3
1 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 4
1.1 Понятие и классификация языков программирования 4
1.2 История появления языков программирования 6
1.3 Языки процедурного программирования 11
1.4 Языки искусственного интеллекта 17
1.5 Объектно-ориентированный подход к программированию 21
1.6 Компонентное программирование 22
1.7 Применение структурных и объектно-ориентированных методов
программирования 24
2 ПРАКТИЧЕСКАЯ ЧАСТЬ 27
2.1 Обоснование программного обеспечения 27
2.2 Создание базы данных
2.3 Запуск программы
ЗАКЛЮЧЕНИЕ
СПИСОК ЛИТЕРАТУРЫ
Приложение А Код формы заставка
ВВЕДЕНИЕ
Программирование сравнительно молодая и быстро развивающаяся отрасль науки и техники. Опыт ведения реальных разработок и совершенствования, имеющихся программных и технических средств постоянно переосмысливается, в результате чего появляются новые методы, методологии и технологии, которые, в свою очередь, служат основой более современных средств разработки программного обеспечения. Исследовать процессы создания новых технологий и определять их основные тенденции целесообразно, сопоставляя эти технологии с уровнем развития программирования и особенностями имеющихся в распоряжении программистов программных и аппаратных средств.
Объектом исследования являются технологии программирования.
Предметом исследования является история развития технологий программирования.
Целью данной курсовой работы является изучение истории возникновения программирования и основных принципов и подходов при создании языка программирования.
Для достижения поставленной цели необходимо решить следующие задачи:
- Проанализировать информационные источники по технологиям программирования;
- Рассмотреть историю развития технологий программирования;
- Выявить этапы развития технологий программирования.
- Создать базу данных для хранения информации о сотрудниках.
- Спроектировать приложение.
1 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
- Понятие и классификация языков программирования
Функционирование ЭВМ осуществляется на основе принципа программного управления. Программа, представляющая собой последовательность команд, реализующих алгоритм решения задачи, вводится в память ЭВМ, после чего начинается ее автоматическое выполнение с первой команды. После каждой выполненной команды машина автоматически переходит к выполнению следующей команды, и так до тех пор, пока не встретится команда, предписывающая закончить вычисления.
Структура команды ЭВМ в простейшем случае включает в себя две части: операционную и адресную. Операционная часть содержит код операции (сложить, вычесть и т. д.). Адресная часть содержит адреса ячеек памяти; в них хранятся значения операндов, с которыми надо выполнить заданную операцию. В зависимости от числа адресов, указанных в команде, различают одно-, двух-, трехадресные команды.
Физические принципы работы электронных устройств ЭВМ таковы, что компьютер может воспринимать команды, состоящие только из единиц и нулей, т.е. машинный код. На начальной стадии развития ЭВМ человеку было необходимо составлять программы на языке, понятном компьютеру, в машинных кодах. Каждая команда состояла из кода операций и адресов операндов, выраженных в виде различных сочетаний единиц и нулей.
Как показала в дальнейшем практика общения с компьютером, такой язык громоздок и неудобен. При пользовании им легко допустить ошибку, записав не в той последовательности 1 или 0. Программу очень трудно контролировать. Кроме того, при программировании в машинных кодах надо хорошо знать внутреннюю структуру ЭВМ, принцип работы каждого блока. И самое плохое в таком языке, что программирование в машинных кодах требует от программиста много времени, труда, повышенного внимания.
Это привело к необходимости найти такое средство, которое позволит более просто наладить общение человека и компьютера. И такое средство было найдено: различные символические языки и соответствующие им трансляторы (системы программирования).
Язык программирования формализованный язык для описания алгоритма решения задачи на компьютере.
Для автоматизации программирования разрабатывался для каждой ЭВМ свой автокод (или Ассемблер). Этот язык в полной мере повторяет набор команд машинного языка и появился лишь для упрощения программирования на машинном коде.
Дальнейшее развитие языковых средств шло по пути создания машинно-независимых языков, позволяющих писать программы на любой доступной ЭВМ с предусмотренной возможностью переноса на более совершенную архитектуру.
В мире насчитывается несколько сотен символических языков программирования различных структур и возможностей, которые могут быть классифицированы по различным признакам.
Если в качестве признака классификации взять синтаксис образования конструкций языков программирования, то их можно условно разделить на следующие классы:
- машинные языки (computer language) языки программирования, воспринимаемые аппаратной частью компьютера (машинные коды);
- машинно-ориентированные языки (computer oriented language) языки программирования, которые отражают структуру конкретного типа компьютера (Ассемблеры);
- алгоритмические языки (algorithmic language) не зависящие от архитектуры компьютера языки программирования для отражения структуры алгоритма (Паскаль, Фортран, Бейсик и др.);
- процедурно-ориентированные языки (procedure oriented language) языки программирования, где имеется возможность описания программы как совокупности процедур (подпрограмм);
- проблемно-ориентированные языки (universal programming language) языки программирования, предназначенные для решения задач определенного класса (Лисп, РПГ, Симула и др.);
- интегрированные системы программирования.
Если в качестве признака классификации взять принадлежность к одному из оформившихся к настоящему времени стилей программирования, каждому из которых соответствует своя собственная модель вычислений, то языки программирования можно условно разделить на следующие классы:
- процедурные;
- функциональные;
- логические;
- объектно-ориентированные.
Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих те или иные действия. Одним из важнейших квалификационных признаков процедурных языков является их уровень, характеризующий степень близости языка программирования и машинного языка. За начало отсчета уровней принимается машинный язык, уровень которого равен нулю. Язык человека рассматривается как язык наивысшего уровня.
- История появления языков программирования
С глубокой древности известны попытки создать устройства, ускоряющие и облегчающие процесс вычислений. Еще древние греки и римляне применяли приспособление, подобное счетам, абак. Такие устройства были известны и в странах Древнего Востока. В XV в. немецкие ученые В. Шиккард (1623), Г.Лейбниц (1673) и французский ученый Б. Паскаль (1642) создали механические вычислительные устройства - предшественники всем известного арифмометра. Вычислительные машины совершенствовались в течение нескольких веков. Но при этом не применялось понятие «программа и программирование».
В начале XIX в. (1830) английский ученый, профессор математики Кэмбриджского университета Чарльз Бэббидж, анализируя результаты обработки переписи населения во Франции, теоретически исследовал процесс выполнения вычислений и обосновал основы архитектуры вычислительной машины. Работая над проектом аналитической машины -- «Машины для исчисления разностей», Ч. Бэббидж предсказал многие идеи и принципы организации и работы современных ЭВМ, в частности принцип программного управления и запоминаемой программы. Общая увлеченность наукой дала ученому и Аде Лавлейс (1815--1852) долгие годы плодотворного сотрудничества. В 1843 г. она перевела статью Менабреа по лекциям Ч. Бэббиджа, где в виде подробных комментариев (по объему они превосходили основной текст) сформулировала главные принципы программирования аналитической машины. Она разработала первую программу (1843) для машины Бэббиджа, убедила его в необходимости использования в изобретении двоичной системы счисления вместо десятичной, разработала принципы программирования, предусматривающие повторение одной и той же последовательности команд при определенных условиях. Именно она предложила термины «рабочая ячейка» и «цикл».
А. Лавлейс составила первые программы для решения системы двух уравнений и вычисления чисел Бернулли по довольно сложному алгоритму и предположила, что со временем аналитическая машина будет сочинять музыкальные произведения, рисовать картины и использоваться в практической и научной деятельности. Время подтвердило ее правоту и точность прогнозов. Своими работами А. Лавлейс заложила теоретические основы программирования и по праву считается первым в мире программистом и основоположником научного программирования.
В 1854 г. английский математик Джордж Буль опубликовал книгу «Законы мышления», в которой развил алгебру высказываний - Булеву алгебру. На ее основе в начале 80-х гг. XIX в. построена теория релейно-контактных схем и конструирования сложных дискретных автоматов. Алгебра логики оказала многогранное влияние на развитие вычислительной техники, являясь инструментом разработки и анализа сложных схем, инструментом оптимизации большого числа логических элементов, из многих тысяч которых состоит современная ЭВМ.
Идеи Ч. Бэббиджа реализовал американский ученый Г. Холлерит, который с помощью построенной счетно-аналитической машины и перфокарт за три года обработал результаты переписи населения в США по состоянию на 1890г. В машине впервые было использовано электричество. В 1896 г. Холлеритом была основана фирма по выпуску вычислительных перфорационных машин и перфокарт.
В 1936 г. английский математик А. Тьюринг ввел понятие машины Тьюринга, как формального уточнения интуитивного понятия алгоритма. Ученый показал, что любой алгоритм в некотором смысле может быть реализован на машине Тьюринга, а, следовательно, доказывал возможность построения универсальной ЭВМ. И та, и другая машины аналогично могут быть снабжены исходными данными решаемой задачи и программой ее решения. Машину Тьюринга можно считать, как бы идеализированной моделью универсальной ЭВМ.
В 40-х гг. XX в. механическая элементная база вычислительных машин стала заменяться электрическими и электронными устройствами. Первые электромеханические машины были созданы в Германии К. Цузе (Ц-3, 1941г.) и в США под руководством профессора Гарвардского университета Г. Айкена (МАРК-1, 1944 г.). Первая электронная машина создана в США группой инженеров под руководством доктора Пенсильванского университета Дж. Мочли и аспиранта Дж. Экксрта (ЭНИАК - электронный числовой интегратор и калькулятор, 1946 г.). В 1949 г. в Англии была построена EDSAC -- первая машина, обладающая автоматическим программным управлением, внутренним запоминающим устройством и другими необходимыми компонентами современных ЭВМ.
Логические схемы вычислительных машин были разработаны в конце 1940-х гг. Дж. фон Нейманом, Г. Гольдстайном и А. В. Берксом. Особый вклад в эту работу внес американский математик Джон фон Нейман, принимавший участие в создании ЭНИАК. Он предложил идею хранения команд управления и данных в машинной памяти и сформулировал основные принципы построения современных ЭВМ. ЭВМ с хранимой программой оказались более быстродействующими и гибкими, чем ранее созданные.
В 1951 г. в США было налажено первое серийное производство электронных машин УНИВАК (универсальная автоматическая вычислительная машина). В это же время фирма IBM начала серийный выпуск машины IBM/701.
В СССР первыми авторами ЭВМ, изобретенной в декабре 1948 г., являются И. С. Брук и Б. И. Рамеев. А первая советская ЭВМ с сохраняющейся программой создана в 1951 г. под руководством С. А Лебедева (МЭСМ - малая электронная счетная машина). В 1953 г. в Советском Союзе начался серийный выпуск машин, первыми их которых были БЭСМ-1, «Стрела».
С появлением цифровых программно-управляемых машин родилась новая область прикладной математики - программирование. Как область науки и профессия она возникла в 1950-х гг. Первоначально программы составлялись вручную на машинных языках (в машинных кодах). Программы были громоздки, их отладка - очень трудоемка. Для упрощения приемов и методов составления и отладки программ были созданы мнемокоды, по структуре близкие к машинному языку и использующие символьную адресацию. Ассемблеры переводили программу, записанную в мнемокоде, на машинный язык и, расширенные макрокомандами, используются и в настоящее время. Далее были созданы автокоды, которые можно применять на различных машинах, и позволившие обмениваться программами. Автокод - набор псевдокоманд для решения специализированных задач, например, научных или инженерных. Для таких задач имеется развитая библиотека стандартных программ.
До конца 1950-х гг. ЭВМ основным элементом конструкции были электронные лампы (1-е поколение). В этот период развитие идеологии и техники программирования шло за счет достижений американских ученых Дж. фон Неймана, сформулировавшего основные принципы построения ЭВМ, и Дж. Бэкуса, под руководством которого в 1954 г. был создан Fortran (Formula Translation) - первый язык программирования высокого уровня, используемый до настоящего времени в разных модификациях. Так, в 1965 г. в Дартмутском колледже Д. Кэмэни и Т. Куртцем была разработана упрощенная версия Фортрана -Basic. В 1966 г. комиссия при Американской ассоциации стандартов (ASA) разработала два стандарта языка: Фортран и Базисный Фортран. Используются также дальнейшие модификации языка (например, 1970, 1990 гг.).
Достижения в области электроники и микроэлектроники позволили заменить элементную базу ЭВМ на более совершенную. В конце 1950-х гг. громоздкие электронные лампы заменяют полупроводниками (миниатюрными транзисторами). Появляются ЭВМ II поколения; затем примерно через 10 лет - ЭВМ III поколения на интегральных схемах; еще через 10 лет - ЭВМ IV поколения на больших интегральных схемах (БИС). В Японии в 1990-х гг. реализованы проекты ЭВМ V поколения, в которых использованы достижения в области искусственного интеллекта и биоэлектроники. Если объем оперативного запоминающего устройства (ОЗУ) одной из лучших отечественных машин 1960-х гг. М-20, созданной под руководством С.А.Лебедева в 1958 г., имел 4096 слов (8 Кбайт) и быстродействие 20 тыс. операций в секунду, то современные персональные компьютеры характеризуются ОЗУ в десятки Мбайт и быстродействием в сотни миллионов операций в секунду, что позволяет решать сложнейшие задачи.
В 1953 г. А.А.Ляпуновым был предложен операторный метод программирования, который заключался в автоматизации программирования, а алгоритм решения задачи представлялся в виде совокупности операторов, образующих логическую схему задачи. Схемы позволяли расчленить громоздкий процесс составления программы, части которой составлялись по формальным правилам, а затем объединялись в целое. Для проверки идей операторного метода в СССР в 1954 г. была разработана первая программирующая программа ПП-1, а в 1955 г. более совершенная - ПП-2. В 1956 г. разработана ПП БЭСМ, в 1957 г. - ППСВ, в 1958 г. - для машины «Стрела».
В США в 1954 г. стал применяться алгебраический подход, совпадающий, по существу, с операторным методом. В 1956 г. корпорацией IBM разработана универсальная ПП Фортран для автоматического программирования на ЭВМ IBM/704.
В этот период по мере накопления опыта и теоретического осмысления совершенствовались языки программирования. В 1958 -1960 гг. в Европе был создан ALGOL, который породил целую серию алголоподобных языков: Algol W, (1967), Algol 68, Pascal (Н. Вирт, 1970 г.), С (Д. Ритчи и Б. Керниган, 1972 г.), Ada (под руководством Ж. Ишбиа, 1979 г.), C++ (1983).
В 1961-1962 гг. Дж. Маккарти в Массачусетском технологическом институте был создан язык функционального программирования Lisp, открывший в программировании одно из альтернативных направлений, предложенных Дж. фон Нейманом.
На начало 1970-х гг. существовало более 700 языков высокого уровня и около 300 трансляторов для автоматизации программирования.
- Языки процедурного программирования
Процедурное или императивное программирование есть отражение фон Неймановской архитектуры компьютера. Программа, написанная на этом языке, представляет собой последовательность команд, определяющих алгоритм решения задачи. Основной командой является команда присвоения, предназначенная для определения и изменения содержимого памяти компьютера. Фундаментальная идея процедурного программирования использование памяти компьютера для хранения данных. Функционирование программы сводится к последовательному выполнению команд с целью преобразования исходного состояния памяти, т.е. программа производит пошаговое преобразование содержимого памяти, изменяя его от исходного состояния к результирующему.
Одним из первых процедурных языков программирования высокого уровня стал Фортран, созданный в начале 50-х гг. в США фирмой IBM. Первая публикация о нем появилась в 1954 г. Основное назначение языка программирование научно-технических задач. Объектами языка являются целые и вещественные числа и числовые переменные. Выражения в нем формируются с помощью четырех арифметических действий: возведения в степень, логических операций И, ИЛИ, НЕ, операций отношения и круглых скобок. Основные операторы Фортрана ввод, вывод, присваивание, условный и безусловный переход, цикл, вызов подпрограмм.
Долгие годы он был одним из самых распространенных языков в мире. За это время накоплена огромная библиотека программ, написанных на Фортране. И сейчас ведутся работы над очередным стандартом Фортрана. В 2000 г. была реализована версия Фортран F2k, имеется стандартная версия HPF (HighPerformanceFortran) для параллельных суперкомпьютеров. Многие средства Фортрана использованы в языках PL-1 и Бейсик.
Кобол (O Ommon Zfusiness Oriented language общепринятый деловой язык) язык программирования, ориентированный на решение задач обработки данных. Широко используется для решения учетно-экономических и управленческих задач. Разработан в США в 19581960 гг. Программа на Коболе имеет вид ряда предложений на английском языке и напоминает обычный текст. Группы последовательно записанных операторов объединяются в предложения, предложения в параграфы, параграфы в секции. Программист присваивает параграфам и секциям имена (метки), что облегчает непосредственное обращение к нужному участку программы. В СССР был принят русский вариант языка. В Коболе были реализованы мощные средства работы с большими объемами данных, хранящимися на различных внешних носителях. На этом языке создано много приложений, некоторые из них активно эксплуатируются и сейчас.
Достаточно сказать, что одной из высокооплачиваемых категорией граждан в США являются программисты на Коболе.
Алгол разработан группой зарубежных специалистов в 1960 г., явился результатом международного сотрудничества конца 50-х гг. (Алгол-60). Алгол предназначался для записи алгоритмов, построенных в виде последовательности процедур, применяемых при решении поставленных задач. Специалисты-практики воспринимали этот язык неоднозначно, но тем не менее он как признанный международный язык сыграл большую роль в становлении основных понятий программирования и для обучения программистов. В нем впервые введены понятия «блочная структура программы», «динамическое распределение памяти». Внутри блока в Алголе можно вводить локальные обозначения, которые не зависят от остальной части программы. Несмотря на свое интернациональное происхождение, Алгол-60 получил меньшее распространение, чем
Фортран. Например, не на всех зарубежных ЭВМ имелись трансляторы с Алгола-60. В 1968 г. в результате дальнейшего развития и усовершенствования Алгола-60 была создана версия Алгол-68. Это многоцелевой универсальный расширенный язык программирования.
Последнее свойство позволяло с помощью одной и той же программы транслятора осуществлять трансляцию с различных расширенных версий языка без дополнительных затрат на приспособление этого языка к различным категориям пользователей, на получение проблемно-ориентированных диалектов языка. По своим возможностям Алгол-68 и сегодня опережает многие языки программирования, однако из-за отсутствия эффективных компьютеров для него не удалось своевременно создать хорошие компиляторы. В нашей стране в те годы под руководством академика Андрея Петровича Ершова был создан транслятор Альфа, который представлял достаточно удачную русифицированную версию Алгола.
В середине 60-х гг. сотрудники математического факультета Дартмутского колледжа Томас Курц и Джон Кемени создали специализированный язык программирования, который состоял из простых английских слов. Новый язык назвали универсальным символическим кодом для начинающих или сокращенно BASIC (Бейсик). 1964 г. считают годом рождения этого языка. Он получил самое широкое распространение при работе на персональных компьютерах в режиме интерактивного диалога. Популярность Бейсика объясняется как простотой его освоения, так и наличием достаточно мощных универсальных средств, пригодных для решения научных, технических и экономических задач, а также задач бытового характера, игровых и т.д. Согласно концепциям, заложенным в Бейсике, в нем широко распространены различные правила умолчания, что считается плохим тоном в большинстве языков программирования подобного типа. Возникло множество версий языка, зачастую мало совместимых друг с другом. Однако, зная одну из версий, можно без особого труда освоить любую другую. Бейсик активно поглощает многие концепции и новинки из других языков.
Первоначально интерактивный режим осуществлялся с использованием интерпретатора, в настоящее время для этого языка имеются также и компиляторы.
В начале 60-х гг. каждый из существующих языков программирования был ориентирован на разные классы задач, но в той или иной мере привязан к конкретной архитектуре ЭВМ. Были предприняты попытки преодолеть этот недостаток путем создания универсального языка программирования. ПЛ /1 (PL /1 Programming language One) первый многоцелевой универсальный язык, разработан в США фирмой IBM в 19631966 гг. Это один из наиболее распространенных универсальных языков, он хорошо приспособлен для решения задач в области вычислительной техники: исследования и планирования вычислительных процессов, моделирования, решения логических задач и исследования логических схем, разработки систем математического обеспечения. При разработке PL/1 были широко использованы основные понятия и средства языков Фортран, Алгол-60, Кобол. PL/1 богатый и гибкий язык, дает возможность производить вставки, исправлять текст программы в процессе ее отладки. Язык получил широкое распространение, трансляторы с него имеются для многих типов компьютеров. Компания IBM и сегодня продолжает поддерживать этот язык.
Паскаль (Pascal) является одним из наиболее популярных процедурных языков программирования, особенно для персональных компьютеров. Созданный как учебный язык программирования в 19681971 гг. Никлаусом Виртом в Высшей технической школе (ЕТН) в Цюрихе (Швейцария), он был назван в честь французского математика и философа Блеза Паскаля (16231662). Задачей Н. Вирта было создание языка, базирующегося на простом синтаксисе и небольшом количестве базовых конструкций, переводимого в машинный код простым компилятором.
В основе языковой концепции Паскаля лежит системный подход, предполагающий переход от общей задачи к частным (более простым и меньшим по объему). К основным принципам Паскаля следует отнести:
- Структурное программирование. Его методология основана на использовании подпрограмм и независимых структур данных, объединяющих связанные между собой совокупности данных. Подпрограммы позволяют заменять в тексте программ упорядоченные блоки команд, отчего программный код становится более компактным. Структурный подход обеспечивает создание более понятных и легко читаемых программ, упрощает их тестирование и отладку.
- Программирование сверху вниз, когда задача делится на простые, самостоятельно решаемые подзадачи. Затем на основе решенных подзадач выстраивается решение исходной задачи полностью сверху вниз.
В основу разработки языка Паскаль был положен Алгол-60, но в нем ужесточен ряд требований к структуре программы и имеются возможности, позволяющие успешно применять его для создания крупных проектов, например, программ-трансляторов. Паскаль реализован для всех типов компьютеров, в настоящее время используется во многих учебных заведениях для обучения программированию, а также для создания больших реальных проектов.
Период с конца 60-х до начала 80-х гг. характеризуется бурным ростом числа различных языков программирования, сопровождавшим, как это ни парадоксально, кризис программного обеспечения. Этот кризис особенно остро переживало военное ведомство США. В январе 1975 г. Пентагон решил навести порядок среди бесчисленного множества трансляторов и создал комитет для разработки одного универсального языка. На конкурсной основе комитет рассмотрел сотни проектов и выяснил, что ни один из существующих языков не может удовлетворить их требованиям, для окончательного рассмотрения было оставлено два проекта. В мае 1979 г. был объявлен победитель группа ученых во главе с Жаном Ихбиа. Победивший язык назвали АДА, в честь Ады Лавлейс, дочери великого поэта Байрона. Она в юности была увлечена идеями Чарльза Бэббиджа и помогала ему составлять описание машины, а в начале 40-х гг. XIX в. разработала первую в мире программу для вычислительной машины. Язык АДА прямой наследник Паскаля. Он предназначен для создания и длительного сопровождения больших программных систем, управления процессами в реальном масштабе времени. В языке четко выражена модульность его конструкций, причем обеспечивается удобство организации разнообразных связей между модулями. Важным его достоинством является возможность параллельного программирования ветвей программы, которые затем могут реализоваться на многопроцессорных компьютерах. Язык АДА сложен для изучения.
Язык программирования С (Си) был разработан в лаборатории Bell для реализации операционной системы UNIX в начале 70-х гг. и не рассматривался как массовый. Он планировался для замены Ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы, и в то же время не зависеть от конкретного типа процессора. По набору управляющих конструкций и структур данных С имеет возможности, присущие высокоуровневым языкам, и вместе с тем он располагает средствами прямого обращения к функциональным узлам компьютера. Синтаксис языка С позволяет создавать лаконичный программный код. Одна из существенных особенностей С, приближающая его к функциональным языкам, состоит в том, что различия между выражениями и операторами сглаживаются. Например, выражения, являющиеся операторами программы, могут выполнять дополнительно операции присваивания. Использование подпрограмм основано на понятии функции, которая может также сочетать в себе возможности процедуры. Понятие процедуры в языке С отсутствует. Синтаксис языка затрудняет читаемость программы. Отсутствие строгой типизации данных, возможность в одном выражении сочетать несколько действий делает этот язык привлекательным для программистов, предоставляя им дополнительные возможности, но не способствует надежности создаваемых программ. Язык С популярен и широко используется профессиональными программистами. В настоящее время он реализован для большинства
компьютерных платформ.
- Языки искусственного интеллекта
Само понятие "искусственный интеллект" возникло на заре вычислительной техники. Несмотря на почтенный возраст, термин этот не имеет точного определения и всегда понимался в интуитивном смысле. Обычно говорят, что к области искусственного интеллекта относятся те задачи, которые до сих пор человек решает лучше, чем компьютер. Таким образом, круг решаемых в рамках искусственного интеллекта проблем постоянно динамически изменяется. Например, еще несколько лет назад обучение ЭВМ игре в шахматы являлось прерогативой AI (от английского Artifical Intelligence - искусственный интеллект), но сегодня все больше специалистов считает, что игра в шахматы уже не является проблемой искусственного интеллекта. Сегодня главными проблемами, решаемыми в рамках AI, являются примерно следующие: построение экспертных систем, решение задач поиска, в которых полный перебор вариантов теоретически невозможен (в том числе - программирование игр), моделирование биологических форм, распознавание образов. Фундаментальные принципы решения всех этих задач были заложены еще в начале семидесятых, но, в связи с тем, что задачи AI очень ресурсоемки, настоящее развитие они получили только в наши дни.
Для решения задач AI еще в начале семидесятых годов были созданы два специфических языка программирования - Пролог (Prolog) и Лисп (LISP). Современный разработчик искусственного интеллекта должен свободно владеть каждым из них. Далее остановимся на самых характерных их особенностях.
Исторически Лисп более старый язык. Концепция, которую он представляет, называется функциональным программированием, она является прямым продолжением обычного алгоритмического подхода. Лисп-программа представляет собой функцию, результат вычисления которой - это результат работы программы, а аргументы, чаще всего - другие вызовы функций. В связи с объективными причинами в Лиспе принята бесскобочная запись при вызове функций, вызов любой функции осуществляется при помощи списка, первым элементом которого является название функции, а все остальные элементы представляют аргументы. Например, сложение двух чисел A и B может выглядеть так: (add A B), сложение трех чисел - так: (add A (add B C)). Самой важной особенностью Лиспа является то, что запись вида (add A B) может представлять из себя не только список, как вызов функции, но и список, как элемент данных, содержащий в себе три компоненты - add, A и B. Решение о том, следует ли использовать список как данные, или его необходимо интерпретировать, в рамках Лиспа может приниматься самой программой. Таким образом, программа получает возможность модифицировать собственный код, что чрезвычайно важно для приложений AI.
Пролог использует подход к программированию, принципиально отличный от алгоритмического и называемый целевым или декларативным программированием. При алгоритмическом программировании мы задаем последовательность действий, которые должна выполнять программа, т.е. описываем, как она должна работать. При декларативном программировании мы описываем, что программа должна делать, а то, как будут осуществлены эти действия - дело Пролог-системы.
Правила логического вывода, теория ориентированных графов и математическая логика были изобретены задолго до появления такой области исследований, как искусственный интеллект. Но именно исследования в этой области позволили адаптировать формальный аппарат этих теорий к задачам представления знаний и отыскать высокоэффективные средства их реализации. Развитие современных продукционных, объектно-ориентированных систем и систем процедурной дедукции в значительной мере определяется такими приложениями искусственного интеллекта, как проблемы классификации и конструирования, описанные в ряде глав данной книги.
Хотя в ходе исследований искусственного интеллекта появилось множество самых различных языков представления, все они обладают рядом сходных свойств.
Во-первых, все такие языки являются декларативными в том смысле, что позволяют описывать знания, имеющие отношение к решению конкретной задачи, а не способ ее решения. В большинстве экспертных систем используется архитектура, в которой знания отделены от машины логического вывода. Это позволяет проводить эксперименты с использованием одних и тех же знаний в разных режимах обработки. Некоторые новые архитектурные решения, например, использующие доску объявлений, позволяют представлять управляющие знания декларативно и обрабатывать их так же, как и другие виды знаний.
Во-вторых, все такие языки организованы по модульному принципу. Подобно тому, как сам язык скрывает от пользователя детали механизма реализации, отдельные модули знаний скрывают детали своей реализации друг от друга, общаясь через глобальную структуру данных (в продукционных системах и системах на основе доски объявлений) или посредством определенных протоколов (в объектно-ориентированных системах). Это позволяет наращивать объем базы знаний и использовать методику отработки проектируемой системы на прототипах.
В-третьих, механизм вызова процедур в таких языках основан на сопоставлении образцов в той или иной форме. Активизация правил в продукционных системах, включение источников знаний в системах с доской объявлений, и резолюция фраз в дедуктивных системах в той или иной форме используют такое сопоставление. Это очень мощный и достаточно общий механизм, который способствует модульной организации компонентов системы, хотя и требует определенных вычислительных ресурсов.
Языки представления знаний обычно реализуются в виде системы логического вывода, управляемой сопоставлением образцов. Программа на любом из языков такого рода состоит из множества относительно независимых модулей (правил, структур или фраз), которые сопоставляются со входными данными и манипулируют имеющимися в памяти данными. В любой такой системе имеются три существенных компонента.
- Набор модулей, каждый из которых может быть активизирован данными, поступающими на вход системы, если эти данные соответствуют образцу, определенному для этого модуля.
- Одна или несколько динамических структур данных, которые могут анализироваться и модифицироваться активизированным модулем.
- Интерпретатор, который циклически управляет выбором и активизацией модулей.
Исследования в этой области в последние годы концентрируются вокруг следующих задач:
- поиск эффективных методов реализации интерпретаторов;
- создание на основе "чистых формализмов" программных средств, пригодных для практического применения;
- проведение экспериментов со "смешанными" формализмами, объединяющими разные парадигмы.
На сегодняшний день такие языки, как CLIPS, предоставляют в распоряжение пользователя множество разнообразных средств представления знаний и манипулирования ими, которые в руках специалистов позволяют создавать программы для решения широкого круга практических проблем.
1.5 Объектно-ориентированный подход к программированию
На смену структурному программированию в начале 1990-х гг. пришло объектно-ориентированное программирование - ООП. Его можно рассматривать как модульное программирование нового уровня, когда вместо во многом случайного, механического объединения процедур и данных главным становится их смысловая связь. Объект рассматривается как логическая единица, которая содержит данные и правила (методы) их обработки. Объектно-ориентированный язык создает «программное окружение» в виде множества независимых объектов, каждый из которых отличается своими свойствами и способами взаимодействия с другими объектами. Программист задает совокупность операций, описывая структуру обмена сообщениями между объектами. Как правило, он «не заглядывает» внутрь объектов, но при необходимости может изменять элементы внутри объектов или формировать новые.
ООП основано на трех важнейших принципах (инкапсуляция, наследование, полиморфизм), придающих объектам новые свойства.
- Инкапсуляция - объединение в единое целое данных и алгоритмов их обработки. Данные здесь - поля объекта, а алгоритмы - объектные методы.
- Наследование - свойство объектов порождать своих потомков. Объект-потомок автоматически наследует все поля и методы, может дополнять объекты новыми полями, заменять и дополнять методы.
- Полиморфизм - свойство родственных объектов решать схожие по смыслу проблемы разными способами.
Идея использования программных объектов исследовалась в течение ряда лет разными учеными. Одним из первых языков этого типа считают Simula-67.А в 1972 г. появился язык Smoltalk, разработанный Аланом Кеем, утвердивший статус ООП.
На современном этапе развиваются инструментальные среды и системы визуального программирования для создания программ на языках высокого уровня: (Turbo Pascal, Delphi, VisualBasic, C++Builder и др.).
1.6 Компонентное программирование
Развитие основных принципов объектно-ориентированного программирования получило с появлением компонентного программирования (КП). КП - динамический процесс без жестких правил, выполняющийся в основном для распределенной разработки (программирования) распределенных систем. Суть КП в том, что независимые проектировщики, программисты разрабатывают независимые компоненты (отдельные части) единой системы, распределенные по множеству узлов большой сети. Эти части могут принадлежать разным собственникам и управляться организационно независимыми администраторами.
В КП компонент рассматривается как хранилище (в виде DLL-или ЕХЕ файлов) для одного или нескольких классов. Классы распространяются в бинарном виде, а не в виде исходного кода. Предоставление доступа к методам класса осуществляется через строго определенные интерфейсы по протоколу. Это снимает проблему несовместимости компиляторов, обеспечивая без перекомпиляции смену версий классов в разных приложениях. Интерфейсы задают содержание сервиса и являются посредником между клиентом и сервером.
Фирма Microsoft создала технологии для распределенной разработки распределенных систем, такие как COM (Component Object Model), COM+, .NET. Разработаны и другие технологии: CORBA (консорциума OMG), JAVA (компании Sun Microsystem) и др. Идея переложить на ЭВМ функции составителей алгоритмов и программистов дала новые возможности развитию сферы искусственного интеллекта, которая должна была создавать методы автоматического решения интеллектуальных задач. Формализация знаний, которые есть у профессионалов в разных областях, накопление их в базах знаний, реализованных на ЭВМ, стали основанием для создания экспертных систем. На основе баз знаний работают и ЭВМ V поколения, и интеллектуальные роботы, и экспертные системы. Эти системы могут не только найти решение той или иной задачи, но и объяснить, как оно получено.
Независимость языков высокого уровня от ЭВМ вовлекла в сферу алгоритмизации задач специалистов различных отраслей знаний, позволила использовать многочисленные стандартные типовые программы, а программистам - устранять дублирование в написании программ для различных типов ЭВМ и значительно повысить производительность труда.
В конце 1980-х гг. в Японии и США появились проекты ЭВМ V поколения, реализованные в конце 1990-х гг. Прогресс в программировании связан с прогрессом в архитектуре вычислительных систем, отходом от фон-неймановской концепции, с достижениями в области искусственного интеллекта. Революционные изменения в элементной базе ЭВМ связываются с исследованиями по биоэлектронике.
На современном этапе программирование включает комплекс вопросов, связанных с написанием спецификаций (условий задач), проектированием, кодированием, тестированием и функционированием программ для ЭВМ. Современное ПО для ЭВМ имеет сложную структуру и включает, как правило, ОС, трансляторы с различных языков, текстовые программы контроля и диагностики, набор обслуживающих программ. Например, японские ученые для проектирования систем ПО разрабатывают идею «кольцевой структуры» шести уровней:
- (внутренний) программы для аппаратуры;
- ядро ОС;
- программы сопряжения;
- часть ОС, ориентированная на пользователя;
- системы программирования;
- (внешний) программы пользователя.
Согласно этим проектам научных исследований планируется упростить процесс создания программных средств путем автоматизации синтеза по спецификациям исходных требований на естественных языках. В последнее время в Японии удалось создать робота-переводчика, переводящего английскую речь на японский язык и наоборот, осуществляя это голосом человека. Во всех развитых странах работают над комплексами программ для создания роботов. Для многих сфер человеческой деятельности.
1.7 Применение структурных и объектно-ориентированных методов программирования
Широкое применение структурных и объектно-ориентированных методов программирования с использованием графических моделей объединялось отсутствием инструментальных средств. Это породило потребность в программно-технологических средствах специального класса -CASE (Computer Aided Software Engineering), реализующих технологию создания и сопровождения ПО различных систем. Предпосылки для появления CASE-технологий возникли к концу 1980-х гг. Первоначально термин «CASE» применялся только к вопросам автоматизации разработки ПО, теперь программная инженерия имеет более широкое значение для разработки систем в целом. В CASE-технологии входит разработка и внедрение языков высокого уровня, методов структурного и модульного программирования, языков проектирования и средств их поддержки, формальных и неформальных языков описания системных требований.
В начале XX в. с созданием пишущей механической машинки появилась возможность общедоступного создания печатного текста, хотя внесение изменений в такой текст (исправление ошибок) было достаточно трудоемкой работой. Затем появились электрические пишущие машинки. С появлением персональных компьютеров подготовка печатного текста стала гораздо совершеннее. В последние два десятилетия прошлого века уже разрабатывается множество комплексов программ для обработки текстов, которые сначала получили название текстовых редакторов, а по мере расширения их функциональных возможностей - текстовых процессоров.
В начале этого столетия текстовые процессоры стали более совершенными. Наряду с более простыми (например, Professional Write и др.) появились такие мощные, как MS WinWord, Word Perfect Word Star 2000 и др. Из отечественных широкое распространение получил текстовый процессор Лексикон.
С начала 1980-х гг. для подготовки и обработки числовой информации стали использоваться табличные процессоры. В 1979 г. Д. Брикклин предложил первую программу для работы с электронными таблицами VisiCalc. В 1981 г. была разработана система Super Calc фирмы «Computer Associates», в 1982 г. -- Multiplan фирмы «Microsoft», далее - пакет для IBM PC Lotus -2-3 фирмы «Lotus Development», русифицированные пакеты АБАК, ДРАКОН и др. В 1985 г. появился табличный процессор Excel фирмы «Microsoft» первоначально для персонального компьютера Macintosh, а затем для совместимых с IBM PC. Этот процессор разрабатывался параллельно с ОС Windows, его версии вобрали в себя все черты графического интерфейса, вплоть до версий Excel 5.0 как приложения Windows 3.1, Excel 7.0 как приложения Windows 95 и т. д. В последние годы создано достаточно много систем подготовки табличных документов, т. е. электронных таблиц, табличных процессоров (например, Corel Quattro 6.0 фирмы «Corel Co», Lotus 5.0 фирмы «Lotus Development Co», Office Proftessional for Windows фирмы «Microsoft») - но наиболее широко используют электронные таблицы Excel.
Разработано большое количество стандартных реляционных систем управления базами данных - СУБД (например, MS Access, paradox и др.), на основе которых строят реляционные базы данных в различных предметных областях.
Для многих организаций (особенно управленческих) разработаны так называемые офисные пакеты, в которых на основе единой ОС функционируют приложения, включающие в себя системы для работы с различными видами информации. Например, созданы пакеты приложений к ОС Windows (MS Office, Word Perfect Office фирмы «Corel», Star Office фирмы «Sun Microsystems» и др.), которые включают программные средства для выполнения функций обработки всех видов информации. Например, MS Office включает совершенствующиеся год от года (в зависимости от последней версии ОС Windows) средства обработки текста (MS Word), графики (PhotoDraw) и презентаций (PowerPoint), таблиц (Excel), баз данных (Access), электронной почты (Outlook), работы во Всемирной паутине (FrontPage), создания звуковых клипов (MS Sound Recorder).
2 ПРАКТИЧЕСКАЯ ЧАСТЬ
2.1 Обоснование программного обеспечения
Delphi
Delphi это среда разработки программ, ориентированных на работу в операционных системах семейства Windows. Программы в Delphi создаются на основе современной технологии визуального проектирования которая, в свою очередь, базируется на идеях объектно-ориентированного программирования. Программы в Delphi пишутся на языке ObjectPascal, который является преемникоми развитием языка TurboPascal. Как следует из его названия, этот язык также воплотил концепцию объектно-ориентированного программирования.
С помощью Delphi можно создавать различные типы программ и консольные приложения, и оконные приложения, и приложения для работы с базами данных и Internet. В консольных приложениях для ввода и вывода данных используются процедурыRead, Readln,Write, Writeln. Для выполнения консольного приложения эмулируется режим операционной системы MS DOS.
Оконные приложения основной вид приложений, используемых в операционных системах семейства Windows. Оконными приложениями является подавляющее большинство прикладных программ, созданных для работы в Windows, например, такие программы , как Проводник, текстовый процессорWord, табличный процессор Excel, графические редакторы и многие другие. Delphi использует для создания оконных приложений специальные компоненты. С их помощью производится ввод и отображение текстовой информации, создание графического интерфейса пользователя и т.п.
Ms Acces
Microsoft Office Access или просто Microsoft Access реляционная система управления базами данных (СУБД) корпорацииMicrosoft. Имеет широкий спектр функций, включая связанные запросы, связь с внешними таблицами и базами данных. Благодаря встроенному языку VBA, в самом Access можно писать приложения, работающие с базами данных.
Основные компоненты MS Access:
- построитель таблиц;
- построитель экранных форм;
- построитель SQL-запросов (язык SQL в MS Access не соответствует стандарту ANSI);
- построитель отчётов, выводимых на печать.
Они могут вызывать скрипты на языке VBA, поэтому MS Access позволяет разрабатывать приложения и БД практически «с нуля» или написать оболочку для внешней БД.
Microsoft Jet Database Engine (англ.), которая используется в качестве движка базы данных MS Access является файл-серверной СУБД и потому применима лишь к приложениям, работающим с небольшими объёмами данных и при небольшом числе пользователей, одновременно работающих с этим данными. Непосредственно в Access отсутствует ряд механизмов, необходимых в многопользовательских базах данных, таких, например, как триггеры.
Access, при работе с базой данных, иначе взаимодействует с жёстким (или гибким) диском, нежели другие программы.
В других программах, файл-документ, при открытии, полностью загружается в оперативную память, и новая редакция этого файла (изменённый файл) целиком записывается надиск только при нажатии кнопки «сохранить».
В Access новая редакция содержимого изменённой ячейки таблицы записывается на диск (сохраняется) сразу, как только курсор клавиатуры будет помещён в другую ячейку (или новая редакция изменённой записи записывается на диск сразу, как только курсор клавиатуры будет поставлен в другую запись (строку)). Таким образом, если внезапно отключат электричество, то пропадёт только изменение той записи, которую не успели покинуть.
Целостность данных в Access обеспечивается также за счёт механизма транзакций.
Кнопка «Сохранить» в Access тоже есть, но в Access в режиме просмотра данных она нужна, в первую очередь, для сохранения изменённого режима показа таблицы или другого объекта то есть, для сохранения таких изменений, как:
- изменение ширины столбцов и высоты строк,
- перестановка столбцов в режиме просмотра данных, «закрепление» столбцов и освобождение закреплённых столбцов,
- изменение сортировки,
- применение нового фильтра,
- изменение шрифта; цвета текста, сетки и фона,
- и т. п.
Кроме того, в Access эта кнопка нужна в режиме «Конструктор» для сохранения изменений структуры объекта базы данных, сделанных в этом режиме.
Даже если в процессе работы с файлом базы данных не применялся режим «Конструктор» и новые данные в базу данных не добавлялись (то есть если база данных только просматривалась), то всё равно файл базы данных имеет тенденцию со временем, в процессе работы с ним, всё больше и больше увеличиваться в размере. Очень способствует увеличению размера файла применение новых сортировок и фильтров (особенно если было применено несколько разных, сильно отличающихся друг от друга сортировок/фильтров).
Это приращение размера файла является, фактически, пустотой, но эта пустота лежит внутри файла, увеличивая его объём.
Чтоб вернуть файлу базы данных нормальный (минимальный) объём (то есть чтоб убрать из файла пустоту), в Access есть кнопка «Сжать и восстановить базу данных» эту кнопку нужно время от времени нажимать (при нажатии этой кнопки никакая информация, никакие данные из файла базы данных не удаляются). Так же базу данных можно запустить с параметром compact, что выполнит сжатие автоматически и закроет базу по окончании процесса.
2.2 Создание базы данных
В базе данных было создано четыре таблицы: Адрес, Личные данные, Должность, Телефоны.
В таблице «Адрес» храниться информация о месте проживания сотрудников. В ней были созданы следующие поля: Сотрудник, Страна, Город, Дом_Адрес.
На рисунке 1 представлена таблица Адрес в режиме конструктора.
Рисунок 1 Таблица «Адрес»
В таблице «Должность» храниться информация о занимаемой сотрудником должности. В ней были созданы следующие поля: Сотрудник, Отдел, Должность.
Рисунок 2 Таблица «Должность»
В таблице «Личные данные» храниться информация о сотрудниках. В ней были созданы следующие поля: Ключ, Фамилия, Имя, Отчество, Пол, Семейное положение, Дети, Дата рождения, Дата поступления, Стаж, Образование, Военнообязанность(муж).
Рисунок 3 Таблица «Личные данные»
В таблице «Телефоны» храниться информация о средствах связи с сотрудником. В ней были созданы следующие поля: Сотрудник, Телефон, Примечание.
Рисунок 4 Таблица «Телефоны»
2.3 Запуск приложения
При запуске программы вас приветствует форма заставка.
Данная форма содержит в себе компоненты Timer, Label и Image
Рисунок 5 Форма заставка.
- Компонент Timer имеет всего четыре свойства и одно событие, и работать с компонентом Delphi Timer очень просто.
- Компонент Label предназначен для отображения статического текста, то есть надписей и меток на Форме, которые не меняются в течение всего времени работы программы. Конечно, текст надписи, отображаемый компонентом Label можно изменить, но не непосредственно, а только программно.
- Компонент Delphi Image предназначен для отображения на форме графических изображения.
При завершении работы формы заставка запускается главная форма содержащая в себе информацию о сотрудниках, поиск по сотрудникам, добавление новых сотрудников. Форма содержит в себе компоненты: RadioButton, Edit, Button, Label, Bevel, Panel, Spilter, DB Grid.
Рисунок 6 Главная форма.
- Компонент Delphi RadioButton состоит из круглого окошка и текстовой строки. В окошке появляется отметка выбора данного компонента, текстовая строка поясняет его смысл. За изменение текстовой строки отвечает свойство Caption. Основное же свойство компонента Delphi RadioButton - Checked (т.е. "выбрано") типаBoolean, доступное как для чтения, так и для записи. У выбранного компонента свойство Checked равно True.
- Компонент Delphi Edit представляет собой однострочное текстовое поле, служащее для ввода данных пользователем. Основным свойством компонента Delphi Edit, передающим введённую информацию, является свойство Edit1.Text типа String.
- Компонент Delphi Button это простая командная кнопка. Командная кнопка Delphi Button используется для реализации в программе команд с помощью обработчика события OnClick этого компонента.
- Компонент Delphi Bevel (фаска) располагается на вкладке "Additional" Палитры Инструментов. Его назначение в приложении чисто декоративное. Внешний вид полученной фигуры будет зависеть от свойства Shape
- Компонент Delphi Panel располагается на странице Standard Палитры Компонентов (значок на рисунке обведен красным). Выбрав компонент Panel и кликнув на форме мы увидим прямоугольник в центре которого будет надпись Panel1. Цифра 1 означает номер панели на форме, т.е. если нам необходимо поместить на форму еще 3 панели то их имена будут Panel2, Panel3, Panel4.
Свойство Name задает имя панели. Caption - заголовок, первоначально он совпадает с Name и равен Panel1, но во многих случаях его оставляют пустым. Довольно часто панель используют как контейнер для других компонентов.
- Компонент Delphi Spilter используется как передвижная разделительная черта.
- Компонент Delphi DbGrid представляет собой таблицу связанную с базой данных.
Также существует невидимая форма DataModule предназаначенная для связи базы данных Acces и таблиц Delphi.
Содержит в себе компоненты: ADOConnection, ADOTabel, DataSource.
- С помощью компонента ADOConnection можно указывать местоположение базы данных и работать с транзакциями.
- Компонент ADO Tabel его назначение получение набора данных из одной или нескольких таблиц базы данных. Кроме того, он также позволяет работать с возвращенным набором данных визуальным компонентам, предназначенным для отображения данных.
- Компонент Dat Source свзяывает между собой данные находящиеся в компоненте ADOTable и таблицу DBGrid.
Рисунок 7 DataModule.
Форма редактор предназначена для редактирования сотрудников и внесения новых сотрудников. Содержит в себе компоненты: Label, Edit, DBGrid, DBNavigator, GroupBox, CheckBox, ComboBox, DBEdit, Button.
- Компонент DBNavigator предназначен для перемещения по базе данных
ЗАКЛЮЧЕНИЕ
В процессе написания данной курсовой работы была изучена история возникновения самого программирования. Также была проведена систематизация знаний о подходах и принципах создании новых языков программирования. В заключении следует отметить, что рассмотренная тема, позволяет просмотреть путь становления технологий и языков программирования и является интересной с точки зрения специалиста в области информационных технологий.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- Немнюгин С.А. Turbo Pascal (практикум): СПб. «Питер», 2003. 475с.
- Кирнос В.Н. Информатика 10 11 класс: Кокшетау: «Кешелек»,2005. 208с.
- Фаронов В.В. Turbo Pascal 7.0. Начальный курс. - Нолидж, 1998. -620 с.
- Грызлов В.И., Грызлова Т.П. Турбо Паскаль 7.0. - М.: "ДМК", 2000. - 416 с.
- Зуев Е.А. Turbo Pascal. Практическое программирование. - Приор,1997. - 336с.
- Пильщиков В.Н. Сборник упражнений по языку Паскаль. М.: Наука, 1989. 160 с.
- Йенсен К., Вирт Н. Руководство для пользователя и описание языка. М.,1982. 151 с.
- Абрамов С.А., Зима Е.В. Начала программирования на языке Паскаль. М.:Наука, 1987. 112 с.
- Павловская Т.А. Паскаль. Программирование на языке высокого уровня. - СПб: Питер,2003. -393с.
- Эллиот Б.К. Turbo Pascal = Turbo Pascal Web Update. М.: Вильямс, 2005. 896с.
- Лукин С.Н. TURBO PASCAL 7.0. Самоучитель для начинающих. -Диалог-МИФИ, 2005. -400с.
- Епанешников А. М., Епанешников В. А. Программирование в среде TurboPascal7.0. -1995. -278с.
- Немнюгин С., Перколаб Л. Изучаем Turbo Pascal. - Питер, 2007. -320с.
- Технология программирования. Основные понятия и подходы [Электронный ресурс] / http://www.arctic-cooler.com/programming/1/comptechnology0.htm
- Якунин, Ю. Ю. Технологии разработки программного обеспечения. Версия 1.0 [Текст] : / Ю. Ю. Якунин.- Красноярск , 2008. 225 с.
- Лекции по информационным технологиям [Электронный ресурс]/ http://www.studfiles.ru/dir/cat32/subj1177/file9554/view96799/page20.html
- Лекции по технологии программирования (Гвоздев) [Электронный ресурс] / http://gendocs.ru/v28091/?cc=10
Приложение А
Код формы заставка
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, jpeg, ComCtrls;
type
TForm2 = class(TForm)
Timer1: TTimer;
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := false;
end;
end.
Приложение B
Код главной формы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, ExtCtrls;
type
TfName = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Splitter1: TSplitter;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
Bevel1: TBevel;
Label1: TLabel;
Edit1: TEdit;
Bevel2: TBevel;
Button2: TButton;
Button3: TButton;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure DBGrid1DblClick(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fName: TfName;
implementation
uses Unit3, Unit4;
{$R *.dfm}
procedure TfName.Button3Click(Sender: TObject);
begin
fDM.TLichData.Append;
fDM.TDoljnost.Append;
FDM.TAdres.Append;
fDM.TTelephones.Append;
fEditor.ShowModal;
end;
procedure TfName.Button2Click(Sender: TObject);
begin
fEditor.ShowModal;
end;
procedure TfName.DBGrid1DblClick(Sender: TObject);
begin
fEditor.ShowModal;
end;
procedure TfName.RadioButton1Click(Sender: TObject);
begin
if RadioButton1.Checked then
DBGrid2.DataSource:= fDM.DSAdres;
end;
procedure TfName.RadioButton2Click(Sender: TObject);
begin
if RadioButton2.Checked then
DBGrid2.DataSource:= fDM.DSTelephones;
end;
procedure TfName.RadioButton3Click(Sender: TObject);
begin
if RadioButton3.Checked then
DBGrid2.DataSource:= fDM.DSDoljnost;
end;
procedure TfName.Edit1Change(Sender: TObject);
begin
fDM.MyLocate(Edit1.Text);
end;
end.
Приложение C
Код модуля данных
unit Unit3;
interface
uses
SysUtils, Classes, DB, ADODB;
type
TfDM = class(TDataModule)
ADOConnection1: TADOConnection;
TLichData: TADOTable;
TDoljnost: TADOTable;
TTelephones: TADOTable;
TAdres: TADOTable;
DSLichData: TDataSource;
DSDoljnost: TDataSource;
DSTelephones: TDataSource;
DSAdres: TDataSource;
TLichDataDSDesigner: TAutoIncField;
TLichDataDSDesigner2: TWideStringField;
TLichDataDSDesigner3: TWideStringField;
TLichDataDSDesigner4: TWideStringField;
TLichDataDSDesigner5: TWideStringField;
TLichData_: TBooleanField;
TLichDataDSDesigner6: TWordField;
TLichData_2: TDateTimeField;
TLichData_3: TDateTimeField;
TLichDataDSDesigner7: TWordField;
TLichDataDSDesigner8: TWideStringField;
TLichDataDSDesigner9: TBooleanField;
TDoljnostDSDesigner: TIntegerField;
TDoljnostDSDesigner2: TWideStringField;
TDoljnostDSDesigner3: TWideStringField;
TTelephonesDSDesigner: TIntegerField;
TTelephonesDSDesigner2: TWideStringField;
TTelephonesDSDesigner3: TWideStringField;
TAdresDSDesigner: TIntegerField;
TAdresDSDesigner2: TWideStringField;
TAdresDSDesigner3: TWideStringField;
TAdres_: TWideStringField;
private
{ Private declarations }
public
{ Public declarations }
procedure MyLocate(s: String);
end;
var
fDM: TfDM;
implementation
{$R *.dfm}
{ TfDM }
procedure TfDM.MyLocate(s: String);
begin
TLichData.Locate('фамилия', s, [loPartialKey]);
end;
end.
Приложение D
Код формы редактора
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls, Mask;
type
TfEditor = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
DBEdit8: TDBEdit;
DBCheckBox1: TDBCheckBox;
DBCheckBox2: TDBCheckBox;
DBComboBox1: TDBComboBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
DBEdit9: TDBEdit;
DBEdit10: TDBEdit;
Label10: TLabel;
Label11: TLabel;
DBEdit11: TDBEdit;
DBEdit12: TDBEdit;
DBEdit13: TDBEdit;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
DBEdit14: TDBEdit;
DBComboBox2: TDBComboBox;
Label15: TLabel;
Label16: TLabel;
Button1: TButton;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
Label17: TLabel;
Button2: TButton;
Button3: TButton;
procedure GroupBox1Exit(Sender: TObject);
procedure GroupBox2Exit(Sender: TObject);
procedure GroupBox3Exit(Sender: TObject);
procedure GroupBox4Exit(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fEditor: TfEditor;
implementation
uses Unit3;
{$R *.dfm}
procedure TfEditor.GroupBox1Exit(Sender: TObject);
begin
if fDM.TLichData.Modified then
fDM.TLichData.Post;
end;
procedure TfEditor.GroupBox2Exit(Sender: TObject);
begin
if fDM.TDoljnost.Modified then
fDM.TDoljnost.Post;
end;
procedure TfEditor.GroupBox3Exit(Sender: TObject);
begin
if fDM.TAdres.Modified then
fDM.TAdres.Post;
end;
procedure TfEditor.GroupBox4Exit(Sender: TObject);
begin
if fDM.TTelephones.Modified then
fDM.TTelephones.Post;
end;
procedure TfEditor.Button1Click(Sender: TObject);
begin
if fDM.TTelephones.Modified then
fDM.TTelephones.Post;
fDM.TTelephones.Append;
DBEdit14.SetFocus;
end;
procedure TfEditor.Button2Click(Sender: TObject);
begin
if fDM.TLichData.Modified then
fDM.TLichData.Post;
if fDM.TDoljnost.Modified then
fDM.TDoljnost.Post;
if fDM.TAdres.Modified then
fDM.TAdres.Post;
if fDM.TTelephones.Modified then
fDM.TTelephones.Post;
Close;
end;
procedure TfEditor.Button3Click(Sender: TObject);
begin
fDM.TLichData.Append;
fDM.TDoljnost.Append;
FDM.TAdres.Append;
fDM.TTelephones.Append;
DBEdit1.SetFocus;
end;
end.
Изучение истории возникновения программирования и основных принципов и подходов при создании языка программирования