Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
информатика 1-20.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
399.36 Кб
Скачать

7. Алгоритмизация и программирование. Языки программирования высокого и низкого уровня

Задачей предмета «Основы алгоритмизации и программирование» является развитие алгоритмического мышления, формирование знаний о свойствах алгоритмов и приобретение практических навыков разработки программ с использованием языка программирования Паскаль.

Под алгоритмизацией понимают процесс разработки алгоритма решения какой-либо задачи. (Например, разработка алгоритма нахождения наибольшего общего делителя).

Д ля того чтобы алгоритм был выполнен на ЭВМ, он, прежде всего, должен быть записан с помощью специального языка - языка программирования. Язык программирования используется для записи алгоритма и последующего перевода этой записи на язык машинных команд. Процесс записи алгоритма на выбранном языке в форме доступной для обработки на ЭВМ называется программированием, а результат записи алгоритма на этом языке, называется программой.

Языки программирования

низкого уровня высокого уровня

Как известно, ЭВМ способна выполнять программу, написанную на машинном языке, который представляет собой последовательность нулей и единиц. Такие программы пишутся на языках программирования низкого уровня.

Язык программирования низкого уровня - это язык программирования, структура команд которого определяется форматом команд и данных машинного языка, а также архитектурой ЭВМ (примером языка программирования низкого уровня является язык Ассемблер (Assembler), который был разработан в 50-е годы XX века).

Однако составлять программы на таком языке - дело очень хлопотное и неблагодарное. Поэтому были созданы языки программирования высокого уровня

Язык программирования высокого уровня - это язык программирования, средства которого допускают описание задачи в наглядном, легко воспринимаемом виде.

Каждый язык высокого уровня определяется системой записи и набором правил, определяющих синтаксис языка.

К языкам программирования высокого уровня, например, относятся:

  • Basic;

  • С;

  • FORTRAN;

  • Java;

  • Pascal.

Первые языки программирования были языками низкого уровня. Среди них Short Code, разработанный в 1949 году Джоном Мочли для компьютера BINAC.

Первым языком высокого уровня стал FORTRAN, родителями которого являются корпорация IBM и группа разработчиков во главе с Джоном Бэкусом. Языки высокого уровня были встречены с недоверием. Считалось, что они не позволят добиться той эффективности выполнения программ, которые давали машинные коды. FORTRAN показал, что это не так. Впоследствии Бэкус принял активное участие в разработке другого языка – ALGOL. Этот язык оказался излишне громоздким и не очень удобным.

«Наследником» Turbo Pascal стали Delphi – система быстрой разработки приложений для Microsoft Windows – и Kylix – система быстрой разработки приложений для X Windows System и операционной системы Unix.

Почти одновременно с языком Pascal появился язык C. Он используется как язык системного программирования и как язык программирования вычислений. На основе языка С был создан объектно-ориентированный язык C++, который в свою очередь дал жизнь популярному в настоящее время языку Java.

В настоящее время существует большое количество языков программирования. Это связано с тем, что каждый из языков программирования предназначен для решения определённого круга задач. Нет универсального языка, который бы одинаково подходил для решения всех возможных задач.

Никлаус Вирт создал Паскаль в 1969 году именно для целей обучения. Поначалу никто и не предполагал, что на нём будут писать реальные программы, но язык получился настолько удачным и ясным, что и теперь, спустя десятки лет, и он, и его потомки используются очень широко.

Паскаль обладает рядом несомненных достоинств. Он прост – следовательно, ему легко обучаться и обучать, но при этом он содержит все типы данных и реализует все основные конструкции структурного и объектно-ориентированного программирования, присущие современным языкам высокого уровня. Строгий синтаксис обеспечивает широкую диагностику ошибок, что очень важно для начинающих

Определение: Алгоритм - точный набор инструкций или команд, описывающих порядок действий исполнителя для решения поставленной задачи за конечное время. Некоторые действия алгоритма должны быть выполнены последовательно, некоторые могут быть и независимыми и выполняться одновременно (параллельно). Свойства алгоритмов, требования к алгоритмам: Дискретность - процесс решения задачи является последовательным выполнением простых шагов за конечный отрезок времени.

  • Детерминированность - в каждый момент времени следующий шаг однозначно определяется состоянием системы. Т.е. алгоритм выдаёт один и тот же результат для одних и тех же исходных данных. Понятность - алгоритм содержит команды, понятные исполнителю (которые входят в его систему команд). Конечность – для корректных исходных данных алгоритм должен успешно завершать работу за конечное число шагов. Массовость - алгоритм должен быть применим к разным наборам исходных данных. Результативность – работа алгоритма должна завершаться определёнными результатами. Алгоритмизация – процесс построения алгоритма. Программирование - процесс создания программного обеспечения с помощью языков программирования. Программирование сочетает в себе элементы искусства, фундаментальных наук (это прежде всего информатика и математика), инженерии, спорта и ремесла. Программирование следует отличать от ремесла кодирования программы

Программирование включает в себя:

Анализ поставленной задачи.

Проектирование/разработку комплекса алгоритмов.

Кодирование – реализация алгоритмов - написание исходного текста программы на языке программирования (исходников).

Компиляцию - преобразование исходников в исполнимый код с помощью компилятора. Тестирование и отладку - выявление и устранение ошибок в программах. Испытания и сдачу программ. Сопровождение программ.

Язык программирования - система, предназначенная для записи компьютерных программ. Язык программирования определяет набор правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под ее управлением. На сегодняшний день известно более 8500 языков программирования. Языки программирования делятся на: компилируемые

интерпретируемые низкоуровневые

высокоуровневые

  • Компилятор это специальная программа, которая переводит исходный текст программы с языка программирования высокого уровня в двоичные коды инструкций процессора, которые записываются в отдельный исполнимый файл (например exe-файл). Этот файл может быть запущен как отдельная программа. Интерпретатор выполняет исходный текст программы без предварительной компиляции. При этом программа остаётся на исходном языке и не может быть запущена без интерпретатора. Компилируемые программы работают значительно быстрей интерпретируемых. Интерпретируемые программы обладают большей гибкостью в процессе разработки и допускают запуск на разных компьютерных платформах и операционных системах. Язык программирования низкого уровня – это язык, близкий к программированию в машинных кодах используемого процессора. Общеизвестный пример языка низкого уровня - язык ассемблера. Высокоуровневый язык программирования - язык программирования, разработанный для быстроты и удобства использования программистом. Основная черта высокоуровневых языков - это абстракция, то есть введение конструкций, кратко описывающих такие структуры данных и операции над ними, описания которых на низкоуровневом языке программирования очень длинны и сложны для понимания и реализации. Примеры языков высокого уровня: C, C++, Visual Basic, Java, PHP, Delphi, Pascal, Fortran.

Основные модели (парадигмы) программирования:

  • Императивное программирование

  • Структурное программирование

  • Функциональное программирование

  • Логическое программирование

  • Объектно-ориентированное программирование

Императивное (процедурное) программирование - это парадигма программирования, которая описывает процесс вычисления в виде последовательности инструкций, которые должен выполнить компьютер. Примеры процедурных языков программирования: Fortran, Basic, Pascal, C.  Структурное программирование - методология разработки ПО, в основе которой лежит представление программы в виде иерархической структуры блоков. Каждый блок должен представлять собой одну из трех структур: последовательное выполнение, ветвление и повторение. ^ Функциональное программирование - раздел дискретной математики, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних (в отличие от функций как подпрограмм в процедурном программировании). Примеры функциональных языков программирования: LISP, Haskell, ML. ^ Логическое программирование – парадигма, основанная на автоматическом доказательстве теорем, а также раздел дискретной математики, изучающий принципы логического вывода информации на основе заданных фактов и правил вывода. Логическое программирование основано на теории и аппарате математической логики с использованием математических принципов резолюций. Самым известным языком логического программирования является Prolog. ^ Объектно-ориентированное программирование (ООП) - парадигма программирования, в которой основными концепциями являются понятия объектов и классов. Класс - это описание устройства объектов (как бы теоретическая модель).  Объект - это экземпляр класса (как бы физическая реализация). Класс можно сравнить с чертежом, согласно которому создаются объекты. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области. ООП есть по сути императивное программирование, дополненное принципом инкапсуляции данных и методов в объект и наследованием. Технология программирования - дисциплина, изучающая технологические процессы программирования и порядок их прохождения. Основные технологии программирования: восходящее программирование

  • нисходящее программирование

Восходящее программирование (программирование «снизу вверх») - методика разработки программ, при которой крупные блоки собираются из ранее созданных мелких блоков. Восходящее программирование начинается с разработки ключевых процедур и подпрограмм, которые затем постоянно модифицируются. Нисходящее программирование (программирование «сверху вниз») - методика разработки программ, при которой разработка начинается с определения целей решения проблемы, после чего идет последовательная детализация, заканчивающаяся детальной программой. При нисходящем программировании низкоуровневые блоки первоначально реализуются в виде «заглушек», которые с течением времени обретают свою функциональность.