Скачать презентацию Введение в программирование 1 2 3 4 5 Скачать презентацию Введение в программирование 1 2 3 4 5

Лекция 1 _ Введение в программирование.pptx

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

Введение в программирование 1. 2. 3. 4. 5. 6. История программирование Жизненный цикл ПО Введение в программирование 1. 2. 3. 4. 5. 6. История программирование Жизненный цикл ПО Основы алгоритмизации Технологии программирования Критерии качества ПО Языки программирования

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

ИСТОРИЯ ПРОГРАММИРОВАНИЯ ИСТОРИЯ ПРОГРАММИРОВАНИЯ

История программирования В 20 -х годах XIX века Ч. Бэббидж высказал мысль о предварительной История программирования В 20 -х годах XIX века Ч. Бэббидж высказал мысль о предварительной записи порядка действий машины для последующей автоматической реализации вычислений. Это привело к созданию автоматических цифровых вычислительных машин. С появлением в 1950 -хх ЭВМ родилась новая область прикладной математики – программирование.

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

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

История программирования Настоящим прорывом в программировании стало создание первого языка программирования высокого уровня – История программирования Настоящим прорывом в программировании стало создание первого языка программирования высокого уровня – Фортран (Fortran – Formula Translation) в 1954 году. В это время сформировался операциональный подход к программированию: все шаги алгоритма имеют адрес (метку), естественный порядок нарушается переходами на команды с определёнными адресами. Переходы бывают условными и безусловными.

История программирования Дано: Найти разницу большего и меньшего 1) Ввести числа а и b История программирования Дано: Найти разницу большего и меньшего 1) Ввести числа а и b 2) Сравнить а и b, если а > b перейти к метки 3, иначе перейти к метке 5 3) d присвоить a-b 4) Перейти к метке 6 5) d присвоить b-а 6) Вывести d 7) Стоп

История программирования Однако использование такого подхода привело к тому, что код больших программ становился История программирования Однако использование такого подхода привело к тому, что код больших программ становился практически нечитаемым, а зачастую даже неуправляемым. В начале 60 -х годов появились такие языки структурного программирования как Algol (1958 – 1960), Pascal (1970, Вирт), С (1972, Ритчи и Керниган).

История программирования На смену структурному программированию в начале 1990 -хх пришла технология объектноориентированного программирования История программирования На смену структурному программированию в начале 1990 -хх пришла технология объектноориентированного программирования (ООП). Объектно-ориентированный подход позволяет создавать программное окружение в виде множества независимых объектов, каждый из которых отличается своими свойствами и способами взаимодействия с другими объектами. Программист задает совокупность операций, описывая структуру обмена сообщениями между объектами. Одним из первых языков ООП был Simula-67. К таким языкам относятся –Object Pascal, Visual Basic, C++.

История программирования На современном этапе программирование включает комплекс вопросов, связанных с написанием спецификации (условий История программирования На современном этапе программирование включает комплекс вопросов, связанных с написанием спецификации (условий задачи), проектированием, тестированием и функционированием программ для ЭВМ. Для упрощения и автоматизации процесса разработки программного обеспечения появились программнотехнологические средства специального класса – CASE (Computer Aided Software Engineering), реализующие технологию создания и сопровождения программного обеспечения.

ЖИЗНЕННЫЙ ЦИКЛ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ЖИЗНЕННЫЙ ЦИКЛ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Жизненный цикл программного обеспечения (ЖЦ ПО) ЖЦ ПО – это непрерывный процесс, который начинается Жизненный цикл программного обеспечения (ЖЦ ПО) ЖЦ ПО – это непрерывный процесс, который начинается с момента принятия решения о необходимости создания ПО и заканчивается в момент его полного изъятия из эксплуатации. Основным нормативным документом, регламентирующим ЖЦ ПО, является международный стандарт ISO/IEC 12207 (ISO – International Organization of Standardization – Международная организация по стандартизации, IEC – International Electrotechnical Commission – Международная комиссия по электротехнике). Он определяет структуру ЖЦ, содержащую процессы, действия и задачи, которые должны быть выполнены во время создания ПО.

Структура ЖЦ ПО по стандарту ISO/IEC 12207 базируется на трех группах процессов: 1. основные Структура ЖЦ ПО по стандарту ISO/IEC 12207 базируется на трех группах процессов: 1. основные процессы ЖЦ ПО (разработка, эксплуатация, сопровождение); 2. вспомогательные процессы, обеспечивающие выполнение основных процессов (документирование, управление конфигурацией, обеспечение качества, верификация, решение проблем); 3. организационные процессы (управление проектами, создание инфраструктуры проекта, определение, оценка и улучшение самого ЖЦ, обучение).

Модели ЖЦ ПО Моделью ЖЦ – структура, определяющая последовательность выполнения и взаимосвязи процессов, действий Модели ЖЦ ПО Моделью ЖЦ – структура, определяющая последовательность выполнения и взаимосвязи процессов, действий и задач, выполняемых на протяжении ЖЦ. К настоящему времени наибольшее распространение получили следующие две основные модели ЖЦ: – каскадная модель; – спиральная модель.

Каскадная модель ЖЦ ПО Основной характеристикой модели является разбиение всей разработки на этапы, причем Каскадная модель ЖЦ ПО Основной характеристикой модели является разбиение всей разработки на этапы, причем переход с одного этапа на следующий происходит только после того, как будет полностью завершена работа на текущем.

Каскадная модель ЖЦ ПО Каскадная модель ЖЦ ПО

Каскадная модель ЖЦ ПО Положительные стороны применения каскадного подхода заключаются в следующем: o на Каскадная модель ЖЦ ПО Положительные стороны применения каскадного подхода заключаются в следующем: o на каждом этапе формируется законченный набор проектной документации, отвечающий критериям полноты и согласованности; o выполняемые в логичной последовательности этапы работ позволяют планировать сроки завершения всех работ и соответствующие затраты.

Каскадная модель ЖЦ ПО Каскадный подход хорошо зарекомендовал себя при построении ПО, для которых Каскадная модель ЖЦ ПО Каскадный подход хорошо зарекомендовал себя при построении ПО, для которых в самом начале разработки можно достаточно и полно сформулировать все требования. Недостаток: o реальный процесс создания ПО никогда полностью не укладывался в такую жесткую схему. В процессе создания ПО постоянно возникает потребность в возврате к предыдущим этапам и уточнении или пересмотре ранее принятых решений. В результате реальный процесс создания ПО принимал следующий вид

Каскадная модель ЖЦ ПО Каскадная модель ЖЦ ПО

Каскадная модель ЖЦ ПО o существенное запаздывание с получением результатов: пользователи могут внести свои Каскадная модель ЖЦ ПО o существенное запаздывание с получением результатов: пользователи могут внести свои замечания только после того, как работа над системой будет полностью завершена.

Спиральная модель ЖЦ ПО Данная модель делает упор на начальные этапы ЖЦ: анализ и Спиральная модель ЖЦ ПО Данная модель делает упор на начальные этапы ЖЦ: анализ и проектирование. На этих этапах реализуемость технических решений проверяется путем создания прототипов. Каждый виток спирали соответствует созданию фрагмента или версии ПО, на нем уточняются цели и характеристики проекта, определяется его качество и планируются работы следующего витка спирали. Таким образом, углубляются и последовательно конкретизируются детали проекта и в результате выбирается обоснованный вариант, который доводится до реализации.

Спиральная модель ЖЦ ПО Спиральная модель ЖЦ ПО

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

ОСНОВЫ АЛГОРИТМИЗАЦИИ ОСНОВЫ АЛГОРИТМИЗАЦИИ

Определение алгоритма Слово «алгоритм» происходит от algorithmic – латинской формы написания имени великого математика Определение алгоритма Слово «алгоритм» происходит от algorithmic – латинской формы написания имени великого математика IX века Аль Хорезми, который сформулировал правила выполнения основных арифметических действий над многозначными числами. Алгоритм – конечное и точное предписание (указание) исполнителю совершить определенную последовательность действий, направленных на достижение определенных целей.

Исполнителем алгоритма может быть человек или автоматическое устройство, способное воспринять и выполнить предусмотренные в Исполнителем алгоритма может быть человек или автоматическое устройство, способное воспринять и выполнить предусмотренные в нем действия. Конечное множество команд, которые воспринимает исполнитель – это СКИ (система команд исполнителя)

Исходные данные Алгоритм Исполнитель (СКИ) Результат Исполнитель действует формально, т. е. он только строго Исходные данные Алгоритм Исполнитель (СКИ) Результат Исполнитель действует формально, т. е. он только строго выполняет команды алгоритма, не вникая в содержание поставленной задачи и только строго выполняет некоторые правила, инструкции.

Свойства алгоритмов 1. Массовость: в алгоритме должны присутствовать данные, которые, как правило, делятся на Свойства алгоритмов 1. Массовость: в алгоритме должны присутствовать данные, которые, как правило, делятся на входные, выходные и промежуточные; алгоритм должен решать не одну задачу, а целый класс задач, каждая представительница которого определяется своими входными данными. 2. Дискретность: алгоритм должен состоять из отдельных шагов. 3. Детерминированность (определенность): на каждом шаге мы должны знать, что делать и какой шаг будет выполняться следующим. 4. Результативность: на любые допустимые входные данные алгоритм должен либо выдать результат, либо сообщить, что результата нет, и все это должно быть выполнено за конечное число шагов.

Способы записи алгоритма o Естественный язык o Блок-схема алгоритма o Псевдокод (система обозначений и Способы записи алгоритма o Естественный язык o Блок-схема алгоритма o Псевдокод (система обозначений и правил) o Язык программирования

Этапы решения задач на ЭВМ 1. 2. 3. 4. Постановка задачи и ее анализ Этапы решения задач на ЭВМ 1. 2. 3. 4. Постановка задачи и ее анализ Формализация задачи Построение алгоритма Составление программы на языке программирования 5. Отладка и тестирование программы 6. Проведение расчетов и анализ полученных результатов.

ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ

Технологии программирования • • Процедурное программирование Структурное программирование Модульное программирование Объектно-ориентированное программирование Технологии программирования • • Процедурное программирование Структурное программирование Модульное программирование Объектно-ориентированное программирование

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

Процедурное программирование Таким образом, с точки зрения программиста имеются программа и память, причем первая Процедурное программирование Таким образом, с точки зрения программиста имеются программа и память, причем первая последовательно обновляет содержимое последней.

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

Структурное программирование • В основе которой лежит представление программы в виде иерархической структуры блоков. Структурное программирование • В основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 70 -х годах XX века Э. Дейкстрой, разработана и дополнена Н. Виртом.

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

Структурное программирование Достоинства: • сокращение числа вариантов построения программы по одной и той же Структурное программирование Достоинства: • сокращение числа вариантов построения программы по одной и той же спецификации, что значительно снижает сложность программы и, соответственно, облегчает понимание её другими разработчиками. • логически связанные операторы находятся визуально ближе, а слабо связанные — дальше, что позволяет обходиться без блок-схем и других графических форм изображения алгоритмов. • Упрощение процесса тестирования и отладки структурированных программ.

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

Объектно-ориентированное программирование (ООП) ООП – парадигма программирования, в которой основными концепциями являются понятия объектов Объектно-ориентированное программирование (ООП) ООП – парадигма программирования, в которой основными концепциями являются понятия объектов и классов.

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

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

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

КРИТЕРИИ КАЧЕСТВА ПО КРИТЕРИИ КАЧЕСТВА ПО

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

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

ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЯЗЫКИ ПРОГРАММИРОВАНИЯ

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

Классификация языков программирования 1. низкого уровня – машинные языки – языки кодов ЭВМ; – Классификация языков программирования 1. низкого уровня – машинные языки – языки кодов ЭВМ; – машинно-ориентированные языки – Ассемблер, мнемокоды; 2. высокого уровня

Классификация языков программирования 1. Императивные (процедурные): основными объектами в таких языках являются переменные, операторы Классификация языков программирования 1. Императивные (процедурные): основными объектами в таких языках являются переменные, операторы присваивания, стандартные алгоритмические конструкции (Pascal, Fortran, C и т. д. ). 2. Функциональные: программа описывает вычисление некоторой функции, значения которой определяются по заданным параметрам; предназначены для решения задач нечисленного характера (LISP – List Processing Language).

Классификация языков программирования 3. Логические: программы на таких языках не описывают действия, они задают Классификация языков программирования 3. Логические: программы на таких языках не описывают действия, они задают данные и отношения между ними, после этого можно задавать вопросы (Prolog – Programming in Logic). 4. Объектно-ориентированные: создаются объекты, каждый из которых отличается своими свойствами и способами взаимодействия с другими объектами. Программист задает совокупность операций, описывая структуру обмена сообщениями между объектами (Object Pascal, Visual Basic, C++Builder).

Системы программирования В настоящее время разработка большинства программного обеспечения осуществляется с помощью систем программирования. Системы программирования В настоящее время разработка большинства программного обеспечения осуществляется с помощью систем программирования. Система программирования включает в себя: 1) транслятор с языка программирования высокого уровня 2) средства редактирования, компоновки и загрузки программы 3) отладчик программ

1) Транслятор Существуют два метода трансляции: компиляция и интерпретация. При компиляции (compile) в память 1) Транслятор Существуют два метода трансляции: компиляция и интерпретация. При компиляции (compile) в память ЭВМ загружается программа –компилятор. Компилятор производит синтаксический контроль программы и при обнаружении ошибок выводит соответствующее сообщение. Если ошибок нет, то результатом компиляции является программа на языке машинных команд. Затем компилятор удаляется из оперативной памяти. В памяти остается только программа на языке машинных команд, которая выполняется для получения необходимых результатов.

 • Интерпретатор в течении всего времени работы программы находится в оперативной памяти. В • Интерпретатор в течении всего времени работы программы находится в оперативной памяти. В память также помещается программа на языке программирования высокого уровня. Интерпретатор «читает» ее первый оператор, переводит его в машинные команды и тут же организует выполнение этих команд. Затем переходит к переводу и выполнению следующего оператора и так до конца программы. При этом результаты предыдущих переводов в памяти не сохраняются. Перед трансляцией каждого оператора производится его синтаксический анализ.

2) Средства редактирования, компоновки и загрузки программы • текстовый редактор (edit), осуществляющий функции записи 2) Средства редактирования, компоновки и загрузки программы • текстовый редактор (edit), осуществляющий функции записи и редактирования исходного текста программы. • загрузчик программы (load), позволяющий открыть нужный файл программы • запускатель программ (run), осуществляющий процесс выполнения программы и т. д.

3) Отладчик • Отладчик (Debugger) позволяет осуществить пошаговое выполнение программ (трассировку), идентификацию места и 3) Отладчик • Отладчик (Debugger) позволяет осуществить пошаговое выполнение программ (трассировку), идентификацию места и вида ошибок в программе, отслеживание значений переменных и т. д.

Язык программирования как объект изучения • Элементы языка (алфавит, лексемы, синтаксис) • Средства организации Язык программирования как объект изучения • Элементы языка (алфавит, лексемы, синтаксис) • Средства организации данных (типы и структуры данных) • Средства организации действий над данными