Скачать презентацию Лекция 5 Алгоритмизация и программирование Языки программирования высокого Скачать презентацию Лекция 5 Алгоритмизация и программирование Языки программирования высокого

Лекция 5 Языки программирования.pptx

  • Количество слайдов: 38

Лекция 5. Алгоритмизация и программирование. Языки программирования высокого уровня Алгоритмизация Чтение блок-схемы алгоритмов Программирование Лекция 5. Алгоритмизация и программирование. Языки программирования высокого уровня Алгоритмизация Чтение блок-схемы алгоритмов Программирование Эволюция языков программирования 1

Алгоритмизация Постановка задачи связана с конкретизацией основных параметров ее реализации, определением источников и структурой Алгоритмизация Постановка задачи связана с конкретизацией основных параметров ее реализации, определением источников и структурой входной и выходной информации, востребуемой пользователем. Алгоритмизация – это процесс создания алгоритма решения задачи. Алгоритм – точное предписание, определяющее вычислительный процесс, ведущий от варьируемых исходных данных к искомому результату. В алгоритме обязательно должны быть предусмотрены все ситуации, которые могут возникнуть в процессе решения комплекса задач. Само слово алгоритм происходит от имени арабского математика аль Хорезми. Его полное имя было Абу Абдуллах (или Абу Джафар) Мухаммад ибн Муса аль Хорезми. Он использовал индийскую позиционную систему счисления с нулем и в своих трудах сформулировал правила четырех арифметических действий над многозначными числами. Эти действия и стали впоследствии называть алгоритмами. 2

Составляя алгоритм для какого-нибудь автоматического устройства, мы должны принимать во внимание следующее: n Первое Составляя алгоритм для какого-нибудь автоматического устройства, мы должны принимать во внимание следующее: n Первое - это кто исполнитель, тот, кто будет работать по нашему алгоритму. Какие действия он может выполнять, какие команды и в каком виде мы можем ему отдавать. Исполнителем, в принципе, может быть кто или что угодно: человек, компьютер, станок с ЧПУ, автоматический луноход и т. д. n Второе - это как скомбинировать команды, чтобы исполнитель сделал то, что от него требуется. Это самый трудный этап в составлении алгоритма, использовать набор команд, понятных исполнителю, какие действия и в каком порядке выполнять. n Третье - это форма записи алгоритма. Человек понимает смысл сказанной фразы по множеству неуловимых оттенков и интонаций. Одну и ту же мысль мы можем выразить различными словами. Компьютер же понимает алгоритм буквально (Хозяин, тебе дрова не нужны? ), для него каждая конкретная команда всегда имеет один и тот же смысл. Поэтому алгоритмы для компьютеров записываются по строгим, заранее определенным правилам, чтобы их нельзя было истолковать по-разному. 3

Основные свойства алгоритма n Дискретность – возможность разбиения алгоритма на отдельные элементарные действия, которые Основные свойства алгоритма n Дискретность – возможность разбиения алгоритма на отдельные элементарные действия, которые можно реализовать на ЭВМ и результат их выполнения определен и понятен. n Детерминированность (определенность) - каждая команда алгоритма (предписание, выдаваемое на каждом шагу) должна быть понятна исполнителю, не оставлять места для ее неоднозначного толкования и неопределенного исполнения. n Результативность алгоритма означает, что для любого допустимого набора исходных данных он должен через определенное число шагов завершить работу. n Массовость алгоритма предполагает возможность изменения исходных данных в определенных пределах. Свойство определяет пригодность алгоритма для решения множества задач данного класса. 4

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

Способы записи алгоритма n С помощью рисунка, (например, процесс подключения монитора), n На естественном Способы записи алгоритма n С помощью рисунка, (например, процесс подключения монитора), n На естественном языке - построчно, каждая команда - с новой строки (последовательность проявления фотопленки, последовательность склеивания поверхностей на тюбике с клеем и т. д. n Использование псевдокода – некоторую систему обозначений и правил. Псевдокод занимает промежуточное место между естественным и формальным языками. Единого или формального определения псевдокода не существует, поэтому возможны различные псевдокоды, отличающиеся набором служебных слов и основных (базовых) конструкций (например школьный АЯ). n Графическое представление – блоксхема 6

Основные функциональные элементы блок-схем алгоритмов в соответствии с ГОСТ 19002 -89 ЕСПД Графические обозначения Основные функциональные элементы блок-схем алгоритмов в соответствии с ГОСТ 19002 -89 ЕСПД Графические обозначения блоков стандартизованы 7

ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ КОНСТРУКЦИИ Алгоритм любой сложности может быть представлен комбинацией трех базовых структур: n ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ КОНСТРУКЦИИ Алгоритм любой сложности может быть представлен комбинацией трех базовых структур: n следование; n ветвление (в полной и сокращенной форме); n цикл (с предусловием или постусловием). Основные типы алгоритмов: n Линейные, n Разветвляющиеся, n Циклические. 8

Линейные алгоритмы, в которых все действия совершаются одно за другим, независимо от исходных данных Линейные алгоритмы, в которых все действия совершаются одно за другим, независимо от исходных данных и результатов промежуточных вычислений. Характерная форма для линейного алгоритма - последовательное выполнение команд. Начало А, В, С D=A+B+C D Конец 9

Разветвляющиеся Разветвляющимся называют алгоритм, в котором в зависимости от исходных данных и результатов промежуточных Разветвляющиеся Разветвляющимся называют алгоритм, в котором в зависимости от исходных данных и результатов промежуточных вычислений осуществляется выбор по одному из возможных вариантов. Варианты (направления вычислений), по которым может реализоваться вычислительный процесс, называют ветвями. Выбор ветви зависит от результатов проверки некоторого условия. Если условие выполняется, то выбирается одна ветвь, если не выполняется, то другая ветвь. В конце ветви должен быть специальный указатель, показывающий Да последнее действие. Можно, Проверка условия например, употребить слова условия "Конец ветвления". Нет Процесс 1 Процесс 2 10

Циклические Циклическим называют алгоритм, в котором получение результата обеспечивается многократным выполнением одних и тех Циклические Циклическим называют алгоритм, в котором получение результата обеспечивается многократным выполнением одних и тех же операций. Цикл - многократно повторяющийся участок вычислительного процесса. В цикле всегда имеется четыре действия: n подготовка – задание начального значения параметру цикла, n основные действия (тело цикла) – реализация необходимых вычислений, n подготовка к следующему циклу (модификация) – изменение параметра цикла, n проверка условия – проверка условия окончания цикла. Способ организации цикла зависит от условия задачи. Иногда указывается количество повторений цикла. Это так называемые 11 циклы со счетчиками (или арифметические алгоритмы).

Типы циклических алгоритмов Цикл с предусловием. Перед выполнением цикла проверяется условие выполнения цикла. Если Типы циклических алгоритмов Цикл с предусловием. Перед выполнением цикла проверяется условие выполнения цикла. Если условие истинно, то цикл выполняется. При ложности условия цикл заканчивается. n Цикл с постусловием. Условие продолжения цикла проверяется уже после того, как выполнено тело цикла. n Основное различие: во втором случае цикл выполняется, по крайней мере, один раз, а в первом - может получиться, что цикл вообще не выполняется. n Цикл с заданным числом повторений, когда указывается количество повторений цикла. Это так называемые циклы со счетчиками (или арифметические циклы). n Итерационный цикл используется, когда задана точность вычисления результата. В таком цикла на каждом шаге (итерации) происходит постепенное уточнение результата. В большинстве задач вычислительный процесс, реализующий алгоритм, является комбинированным, т. е. он содержит разветвления, является циклическим, или итерационным. n 12

Программирование n Алгоритм – это точно определенное описание способа решения задачи в виде конечной Программирование n Алгоритм – это точно определенное описание способа решения задачи в виде конечной последовательности действий. Это описание называется формальным. n Программа – это логически упорядоченная последовательность команд необходимая для управления компьютером. n Программа, с которой работает процессор, представляет собой последовательность чисел, называемую машинным кодом. n Программирование – теоретическая и практическая деятельность, связанная с созданием программы 13

Языки программирования - это искусственные языки, специально созданные для общения человека с компьютером. Каждый Языки программирования - это искусственные языки, специально созданные для общения человека с компьютером. Каждый язык программирования имеет: Алфавит - фиксированный для данного языка набор основных сим-волов, допускаемых для составления текста программы на этом языке. Синтаксис - система правил, определяющих допустимые конструкции языка программирования. Семантика - система правил однозначного толкования отдельных языковых конструкций, позволяющих воспроизвести процесс обработки данных. Взаимодействие синтаксических и семантических правил определяет те или иные понятия языка, например, операторы, идентификаторы, переменные, функции и процедуры, модули и т. д. 14

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

Уровни языков программирования n Язык программирования, ориентированный на конкретный тип процессора и учитывающий его Уровни языков программирования n Язык программирования, ориентированный на конкретный тип процессора и учитывающий его особенности, называется языком программирования низкого уровня. n “Низкий уровень” – это значит, что операторы близки к машинному коду и ориентированы на конкретный тип процессора. n Языком самого низкого уровня является язык Ассемблера, который представляет каждую машинную команду в виде символьных условных обозначений, называемых символьными мнемониками. 16

Уровни языков программирования n Перевод программы на языке Ассемблера в машинный язык называется транслитерацией. Уровни языков программирования n Перевод программы на языке Ассемблера в машинный язык называется транслитерацией. n Программа, написанная на языке низкого уровня, может быть использована только в такой среде, в которой она была создана. n С помощью языков низкого уровня создаются очень эффективные и компактные программы, так как разработчик получает доступ ко всем возможностям процессора. 17

ЯЗЫКИ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ (high-level programming language). Языки программирования, имитирующие естественные языки, обладающие укрупненными ЯЗЫКИ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ (high-level programming language). Языки программирования, имитирующие естественные языки, обладающие укрупненными командами, ориентированными на решение прикладных содержательных задач, называются языками высокого уровня. В Я. в. у. введены элементы, допускающие описание задачи в наглядном, легко воспринимаемом виде, упрощающие и автоматизирующие процесс программирования, управляющие конструкции и структуры данных. 18

Достоинства Я. п. в. у n Алфавит языка значительно шире машинного, что делает его Достоинства Я. п. в. у n Алфавит языка значительно шире машинного, что делает его n n гораздо более выразительным и существенно повышает наглядность и понятность текста; набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса; конструкции команд (операторов) отражают содержательные виды обработки данных и задаются в удобном для человека виде; используется аппарат переменных и действий с ними; поддерживается широкий набор типов данных. 19

ЯЗЫК ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ (high-level programming language). Я. п. в. у. отражают естественные для ЯЗЫК ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ (high-level programming language). Я. п. в. у. отражают естественные для человека понятия, а не архитектуру вычислительной системы. Поэтому программа, составленная на Я. п. в. у. , сначала транслируется самой ЭВМ на машинный язык (низкого уровня), а затем выполняется. Языки программирования высокого уровня являются машиннонезависимыми и требуют использования соответствующих программ-переводчиков (трансляторов) для представления программы на языке машины, на которой она будет исполняться. В алфавит Я. п. в. у. могут входить буквы, цифры, математические символы и даже так называемые ключевые слова, например, if (если), then (тогда), else (иначе) и т. п. Из исходных символов по правилам синтаксиса строятся предложения, обычно называемые операторами, например, if x 1 следует воспользоваться формулой у = х - 1. 20

Эволюция языков программирования 20 -е годы XIX века. Предварительная запись порядка действий машины на Эволюция языков программирования 20 -е годы XIX века. Предварительная запись порядка действий машины на перфокарте для последующей автоматической реализации вычислений – программе (предложена Ч. Бэббиджем). Ада Лавлейс теоретически разработала некоторые приемы управления последовательностью вычислений, которые используются до сих пор. 40 -е годы XX века. Создание программ на основе кодирования машинных команд (Грейс Мюрей Хоппер). В течение многих лет программное обеспечение строилось на основе операциональных и процедурных языков (Ассемблеры, Фортран, Бейсик, Паскаль, Ада, Си). По мере эволюции языков программирования широкое распространение получили и другие принципиально новые подходы к созданию программ непроцедурное программирование: объектноориентированное программирование, (языки Си++, Delphi, Visual Basic) и декларативное программирование. Декларативные языки делятся на логические (Пролог) и функциональные (Лисп). В настоящее время разработаны языки работающие в управляемом окружении, обеспечивающие высокую надежность и 21 защищенность создаваемых программ (Java, C#, VB. net).

Классификация языков программирования Программирование Процедурное Операциональное Непроцедурное Структурное Объектное Декларатитвное Ассемблер Паскаль Смолток Логическое Классификация языков программирования Программирование Процедурное Операциональное Непроцедурное Структурное Объектное Декларатитвное Ассемблер Паскаль Смолток Логическое Фортран Модула Си++ Пролог Делфи Функциональное Бейсик Си Лисп 22

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

Языки процедурного программирования: Язык Фортран создан в начале 50 -х годов 20 -го века Языки процедурного программирования: Язык Фортран создан в начале 50 -х годов 20 -го века для программирования научно-технических задач Кобол – создан в конце 60 -х годов 20 -го века для решения задач обработки больших объемов данных, хранящихся на различных носителях данных Алгол (1960 год) – это многоцелевой расширенный язык программирования. В нем впервые введены понятия «блочная структура программы» и «динамическое распределение памяти В середине 60 -х годов 20 -го века был создан специализированный язык программирования для начинающих – BASIC. Характеризуется простотой освоения и наличием универсальных средств для решения научных, технических и экономических задач, а также задач, например, игровых. Все перечисленные выше языки были ориентированы на различные классы задач, но они в той или иной мере были привязаны к конкретной архитектуре ЭВМ. 24

Языки процедурного программирования: В 1963 -1966 гг был создан многоцелевой универсальный язык PL-1. Этот Языки процедурного программирования: В 1963 -1966 гг был создан многоцелевой универсальный язык PL-1. Этот язык хорошо приспособлен для исследования и планирования вычислительных процессов, моделирования, решения логических задач, разработки систем математического обеспечения. Язык Паскаль (PASCAL) (1968 -1971 гг)- язык процедурного программирования наиболее популярный для ПК, который и в настоящее время успешно применяется. В основу языка Pascal положен подход от общей задачи к частным (более простым и меньшим по объему). К основным принципам, которыми обладает Паскаль, можно отнести: а) Структурное программирование, которое основано на использовании подпрограмм и независимых структур данных; б) Программирование «сверху-вниз» , когда задача делится на простые, самостоятельно решаемые задачи. Затем выстраивается решение исходной задачи полностью сверху вниз. 25

Языки процедурного программирования: К языкам процедурного программирования можно отнести язык АДА (1979 г) Язык Языки процедурного программирования: К языкам процедурного программирования можно отнести язык АДА (1979 г) Язык назван в честь первой программистки Ады Лавлейс- дочери Байрона. Его отличает модульность конструкций. Язык СИ (начало 70 -х годов) также относится к языкам процедурного программирования. Первоначальный его вариант планировался как язык для реализации операционной системы Unix вместо языка Ассемблера. Одной из особенностей языка СИ является то, что различия между выражениями и операторами сглаживаются, что приближает его к функциональным языкам программирования. Кроме того, в языке СИ отсутствует понятие процедуры, а использование подпрограмм основано на понятии функции, которая может сочетать в себе возможности процедуры. С одной стороны, по набору управляющих конструкций и структур данных его можно отнести к языкам высокого уровня, а с другой – он имеет набор средств прямого обращения к функциональным узлам компьютера, а это означает, что его можно использовать как операционный язык. 26

n Объектно-ориентированное программирование (ООП) — это метод программирования, при использовании которого главными элементами программ n Объектно-ориентированное программирование (ООП) — это метод программирования, при использовании которого главными элементами программ являются объекты. В языках программирования понятие объекта реализовано как совокупность n свойств (структур данных, характерных для данного объекта), n методов их обработки (подпрограмм изменения их свойств) и событий, на которые данный объект может реагировать и, которые приводят, как правило, к изменению свойств объекта. n Объединение данных и свойственных им процедур обработки в одном объекте, называется инкапсуляцией и является одним из важнейших принципов ООП. 27

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

Наиболее современными языками программирования являются С++ и Java. n С середины 90 -х годов Наиболее современными языками программирования являются С++ и Java. n С середины 90 -х годов многие объектно–ориентированные языки реализуются как системы визуального проектирования, в которых интерфейсная часть программного продукта создается в диалоговом режиме, практически без написания программных операторов. К объектно – ориентированным системам визуального проектирования относятся Visual Basic, Delphi, C++ Builder, Visual C++. n Язык VBA (Visual Basic for Application) – язык приложений Microsoft Office (Excel, Word, Power Point и др). n VBA соблюдает основной синтаксис языка и правила программирования языков Basic – диалектов, позволяет создавать макросы для автоматизации выполнения некоторых операций и графический интерфейс пользователя, интеграцию между различными программными продуктами. n 29

n. Декларативные языки программирования К ним относятся функциональные и логические языки программирования. n Функциональное n. Декларативные языки программирования К ним относятся функциональные и логические языки программирования. n Функциональное программирование- это способ составления программ, в которых единственным действием является вызов функции. n В функциональном программировании не используется память, как место для хранения данных, а, следовательно, не используются промежуточные переменные, операторы присваивания и циклы. n Ключевым понятием в функциональных языках является выражение. n Программа, написанная на функциональном языке, представляет собой последовательность описания функций и выражений. n Первым языком стал язык Лисп (LISP, LIST Processing- обработка списков) создан в 1959 г. Этот язык позволяет обрабатывать большие объемы текстовой информации. n 30

Логическое программирование- это программирование в терминах логики. n В 1973 году был создан язык Логическое программирование- это программирование в терминах логики. n В 1973 году был создан язык искусственного интеллекта Пролог (PROLOG) (Programming in Logic). n Программа на языке Пролог строится из последовательности фактов и правил, затем формулируется утверждение, которое Пролог пытается доказать с помощью правил. n Язык сам ищет решение с помощью методов поиска и сопоставления, которые в нем заложены. n Логические программы не отличаются высоким быстродействием, так как процесс их выполнения сводится к построению прямых и обратных цепочек рассуждений разнообразными методами поиска. n 31

n. Языки программирования баз данных отличаются от алгоритмических языков прежде всего своим функциональным назначением. n. Языки программирования баз данных отличаются от алгоритмических языков прежде всего своим функциональным назначением. При работе с базами данных выполняются следующие операции: n создание, преобразование и удаление таблиц в БД; n поиск, отбор, сортировка по запросам пользователя; n добавление новых записей и модификация существующих, удаление записей и др. Для обработки больших массивов информации и выборки записей по определенным признакам был создан структурированный язык запросов SQL (Structured Query Language). Язык SQL – это стандартный язык работы с реляционными базами данных. Сегодня в мире ведущие производители СУБД: Microsoft (SQL Server), IBM (DB 2), Oracle, Software AG (Adabas), Informix и Sybase. Практически в каждой СУБД имеется свой встроенный язык работы с БД. Так, например, в Oracle имеется встроенный язык PL/SQL, в Informix – INFORMIX 4 GL, в Adabas – Natural и т. д. 32

n. Языки программирования для компьютерных сетей являются интерпретируемыми. Интерпретаторы для них распространяются бесплатно, а n. Языки программирования для компьютерных сетей являются интерпретируемыми. Интерпретаторы для них распространяются бесплатно, а сами программы – в исходных текстах. Такие языки называются скрипт – языками. n Язык HTML (Hyper Text Markup Language) – универсальный язык разметки гипертекста, используемый для подготовки Web документов для Internet. Язык позволяет форматировать текст, добавлять графические образы, работать с таблицами и организовывать связь одного документа с другим с помощью механизма гиперссылок. n Язык Perl (80 г) содержит многочисленные функции работы со строками, массивами, всевозможные средства преобразования данных. n Язык PHP (1995 -1997 гг) обладает средствами доступа к БД и используется создателями динамических сайтов во всем мире. n Язык Tcl/Tk (конец 80 -х годов) состоит из мощных команд, предназначенных для работы с абстрактными нетипизированными объектами и позволяет создавать программы с графическим интерфейсом. n Язык VRML (1994 г) создан для организации виртуальных трехмерных интерфейсов в Интернете. n Язык XML. С 1996 г идет работа над созданием универсального языка 33 структуры документов. Может стать заменой языка HTML. n

Функция SQRT(X) возвращает квадратный корень значения Х. В переменную Y помещается некоторое значение следующим Функция SQRT(X) возвращает квадратный корень значения Х. В переменную Y помещается некоторое значение следующим оператором присваивания: Y : = 1 / 2 * sqrt(A * B). Эквивалентной математической записью является … 34

В переменную Y помещается значение: Y : = A / B * C – В переменную Y помещается значение: Y : = A / B * C – С; Если А = 24, В = 3 и С = 4, то в переменной Y получится число … 35

В переменной К после выполнения будет значение … 36 В переменной К после выполнения будет значение … 36

Массив А из 5 целочисленных элементов заполнен значениями: После выполнения фрагмента программы значение переменной Массив А из 5 целочисленных элементов заполнен значениями: После выполнения фрагмента программы значение переменной B будет равно … 37

Функция SQR(X) возвращает квадрат значения Х. Если выражение в операторе присваивания Y : = Функция SQR(X) возвращает квадрат значения Х. Если выражение в операторе присваивания Y : = sqr(A + B) – C записать без использования функции SQR, то получится … Y : = (A + B) * (A + B) – C Y : = (A + B) * A + B – C Y : = A + B * A + B – C Y : = A * A + B * B – C 38