Similar presentations:
Введение в основы программирования. Алгоритм и структуры данных. Тема 1
1.
Кафедра: Цифровые технологии и прикладнаяинформатика
ПРЕДМЕТ: «ОСНОВЫ ПРОГРАММИРОВАНИЯ 1»
ТЕМА 1. Введение в основы программирования.
Алгоритм и Структуры данных
Преподаватель: доц. Аббасова Хатира
[email protected]
2.
Введение восновы
программирования
3.
ПЛАН ЛЕКЦИИ:1. История создание языков программирования.
2. Среды программирования
3. Области программирования
4. История алгоритма
5. Типы алгоритмов
6. Свойства алгоритма
4.
Языки программирования: определение иосновные понятия
Языки программирования – это формальные искусственные языки.
Языком программирования называется система обозначений для описания
алгоритмов и структур данных, т. е. определенная искусственная формальная
система, средствами которой можно выражать алгоритмы
Язык программирования определяет набор лексических, синтаксических и
семантических правил, задающих внешний вид программы и действия,
которые выполняет исполнитель (компьютер) под ее управлением. Они
отличаются от естественных:
ограниченным, достаточно малым числом слов (операторов), значение
которых понятно транслятору;
очень строгими правилами записи команд (предложений);
явной однозначной и четкой формулировкой правил грамматики и семантики.
5.
Языки программирования: определениеи основные понятия
С практической точки зрения, язык программирования – это средство
общения
между
человеком
(пользователем)
и
компьютером
(исполнителем). С помощью языка программирования формируются
сообщения для компьютера. Эти сообщения должны быть понятны
компьютеру.
Как и естественные языки, они имеют алфавит, словарный запас,
грамматику, синтаксис, а также семантику.
Алфавит – набор символов (разрешенных к использованию), с помощью
которого могут быть образованы слова и величины данного языка.
Синтаксис языка – система правил, определяющих допустимые
конструкции (слова, предложения) языка программирования, т.е. его
форму.
Семантика языка – система правил, однозначно определяющих толкование
и смысл каждой синтаксически корректной конструкции языка
программирования, т.е. его содержание.
6.
Языки программирования: определениеи основные понятия
Взаимодействие синтаксических и семантических правил определяет
основные понятия языка, такие как:
операторы;
идентификаторы;
константы;
переменные;
функции;
процедуры и т.д.
При написании программ с помощью языков программирования могут
возникнуть программные ошибки.
Программная ошибка - любая проблема, которая приводит к
неожиданной работе программы или системы и непредвиденному
результату
7.
Языки программирования: определениеи основные понятия
Ошибки программирования принято делить на три типа:
Синтаксические (орфография и грамматика) - нарушение формы записи
конструкций языка программирования (неправильное написание ключевого
слова, пропуск необходимого знака пунктуации, использование открывающей
фигурной скобки без соответствующей закрывающей фигурной скобки и т.п.)
Семантические (значение и контекст) - неправильное содержание действий и
использование недопустимых значений величин (могут проявляться при
исполнении программы в нарушениях процесса автоматических вычислений и
индицируется либо выдачей диагностических сообщений рабочей
программы, либо отсутствием печати результатов из-за бесконечного
повторения одной и той же части программы (зацикливания), либо
появлением непредусмотренной формы или содержания печати результатов)
Логические ( интеллектуальные) - нарушение последовательности
выполнения правильно записанных конструкций языка (логика основного
программирования приводит к тому, что программа работает правильно, но
выдает неправильный вывод)
8.
Языки программирования: определениеи основные понятия
• Синтаксические ошибки возникают при несоблюдении правил
синтаксиса в программировании. Семантические ошибки
возникают
из-за
неправильного
использования
операторов. Логические ошибки возникают при неправильной
реализации алгоритма (неправильном проектировании) решения
задачи.
• С точки зрения устранения, логические ошибки в программах
являются наиболее сложными. Они - результат неверных
предположений и планирования, а не просто неправильного
понимания синтаксиса.
9.
Свойства языков программированияСвойства языков программирования - это требования, которым
должны удовлетворять языки программирования (в той или иной
степени)
10.
Свойства языков программированияПонятность конструкций языка - легкость восприятия программ
человеком.
Зависит от выбора ключевых слов, структуры, обеспечивающей
доступность выделения основных понятий каждой части
программы, а также возможности построения модульных
программ. Чем выше степень понятности конструкций языка
программирования, тем проще находить ошибки. Понятный язык
программирования
должен
удовлетворять
интуитивному
требованию ясности, а именно, объективно обеспечивать
удобочитаемость программ, а также легкость и результативность
поиска ответов на вопросы, возникающие в процессе разработки
программных проектов.
11.
Свойства языков программированияНадежность - способность автоматического обнаружения ошибок,
которое может быть выполнено транслятором.
Надежность
языка
программирования
характеризуется
способностью написанной на нем программы выполнять
требуемые функции при заданных условиях в течение заданного
промежутка времени. Надежный язык – это язык, позволяющий
выявлять большинство ошибок во время трансляции программы, а
не во время ее выполнения, что позволяет минимизировать
стоимость ошибок. Основными способами проверки правильности
выполнения программой своих функций являются: использование
формальных методов верификации программ, проверка путем
чтения текста программы,
прогон программы с тестовыми
наборами данных.
12.
Свойства языков программированияГибкость - возможность запрограммировать все, что можно себе
представить.
Гибкость языка обеспечивает легкость выражения на языке
необходимых для решения задач действий, предоставляет
программисту достаточно возможностей для выражения всех
операций в программе. Гибкий язык программирования позволяет
описать синтаксис (и семантику) всех допустимых конструкций
языка без пропусков существенных аспектов.
13.
Свойства языков программированияПростота языка - легкость понимания семантики языковых конструкций
и запоминания их синтаксиса.
Простой язык предоставляет ясный, простой и единообразный набор
понятий. При этом желательно иметь минимальное количество
различных
понятий
с
как
можно
более
простыми
и
систематизированными правилами их комбинирования, т.е. язык
должен обладать свойством концептуальной целостности. Простой язык
позволяет минимизировать вероятность совершения ошибок,
возникающих в результате неправильной интерпретации спецификаций
языка. Например, язык должен быть таким, чтобы конструкции,
означающие близкие по смыслу понятия, и выглядели одинаково, и, что
еще более важно, конструкции, означающие различные понятия,
должны выглядеть по-разному.
14.
Свойства языков программированияЕстественность - интуитивная близость языка терминологии
разработчика, а также использование унифицированных, стандартных,
привычных обозначений.
Естественность языка программирования означает, что синтаксис языка
должен способствовать легкому и прозрачному отображению в
программах алгоритмических структур. Любой из типовых алгоритмов
(линейный, разветвляющийся, циклический) имеет естественную
структуру,
которая
должна
поддерживаться
программными
операторами реализующего языка. Язык должен предоставлять
структуры данных, операции и структуры управления, адекватные
решаемой задаче. Естественность – это одна из важнейших причин
популярности того или иного языка. Язык, ориентированный на
характерные черты предметной области, может сильно упростить
создание для нее программных приложений.
15.
Свойства языков программированияМобильность - независимость от платформы.
Мобильность языка позволяет обеспечивать независимость его от
аппаратных
средств.
Можно
переносить
программное
обеспечение с машины на машину с относительной легкостью. Чем
более распространен и технологичен язык, тем большей
мобильностью он характеризуется.
16.
Свойства языков программированияЭффективность - степень соответствия языка программирования
своему назначению.
Эффективность измеряется либо количеством затрат, необходимых
для получения определенного результата, либо результатом,
полученным при определенных затратах.
17.
Характеристики языковпрограммирования
Характеристики позволяют сравнивать языки программирования
18.
Характеристики языковпрограммирования
• Мощность определяется разнообразием задач, которые
программируются на данном языке. Самым мощным является
машинный язык, т. к. на нем можно запрограммировать любую
задачу.
• Уровень языка характеризуется сложностью решения задач с
использованием этого языка. Чем выше уровень языка, тем
ближе структуры данных и конструкции, использующиеся в
программе, к понятиям исходной задачи.
19.
Характеристики языковпрограммирования
Концептуальная целостность языка характеризуется свойствами
совокупности понятий, служащих для его описания, и включает три
взаимосвязанных аспекта:
экономию – достижение максимальной мощности языка
минимальным количеством понятий;
ортогональность – отсутствие взаимного влияния между
понятиями (понятие, используемое в различных контекстах,
должно быть описано единым правилом его использования);
единообразие понятий – требование согласованного единого
подхода к описанию и использованию всех понятий.
20.
Характеристики языковпрограммирования
Зачастую чем выше уровень языка программирования, тем
ограниченней область его применения, т. е. меньше мощность
языка. Чем мощнее язык, тем труднее обеспечить концептуальную
целостность. Концептуальная целостность непосредственно
связана с высоким уровнем языка. Часто наряду с универсальными
языками разрабатываются и специализированные языки для
определенной предметной области.
21.
Классификация языковпрограммирования
Все существующие языки
программирования
можно
классифицировать
различными способами.
Первый способ
классификации – по
поколениям (рис. 1):
22.
Классификация языковпрограммирования
первое поколение – машинные языки на уровне команд процессора
конкретной машины. Представляли собой набор машинных команд в
двоичном (бинарном) или восьмеричном формате. Каждый такой язык
программирования был пригоден только для конкретного типа ЭВМ,
определяемого архитектурой. От программиста требовалось хорошее знание
не только машинного языка, но и архитектуры ЭВМ;
второе
поколение
–
языки
ассемблерного типа (ассемблеры,
макроассемблеры). Представляли разработчику возможность вместо
машинных команд использовать их мнемонические символьные обозначения
(имена), но все еще оставались машинно-зависимыми, затруднительными для
чтения, трудоемкими при отладке, требующими больших усилий для переноса
на другие типы ЭВМ;
третье поколение – высокоуровневые языки программирования. Главной
отличительной чертой языков третьего поколения стала независимость от
аппаратного обеспечения, т. е. выражение алгоритма в форме, не зависящей
от конкретных характеристик машины, на которой он будет исполняться, что
сделало их мобильными, человеко-ориентированными, простыми в освоении;
23.
Классификация языковпрограммирования
четвертое поколение – среды разработки четвертого поколения
(непроцедурные,
объектно-ориентированные,
языки
запросов,
параллельные). Предназначены для реализации крупных проектов,
ориентированы на специализированные области применения,
используют не универсальные, а объектно-ориентированные языки,
оперирующие конкретными понятиями узкой предметной области,
значительно более пригодны для применения непрофессионалами в
области программирования;
пятое поколение – языки искусственного интеллекта, экспертных
систем, баз знаний, системы автоматического создания прикладных
программ с помощью визуальных средств разработки (без знания
программирования), а также естественные языки, не требующие
освоения какого-либо специального синтаксиса. Инструкции вводятся в
компьютер в максимально наглядном виде с помощью методов,
наиболее удобных для человека, не знакомого с программированием.
24.
Классификация языковпрограммирования
Второй способ классификации – по степени зависимости от
вычислительной машины (рис. 2):
25.
Классификация языковпрограммирования
• машинно-зависимые – языки, алфавит, синтаксис и семантика
которых зависят от системы команд процессора конкретно
используемой ЭВМ (ассемблеры, автокоды, отладчики машинных
программ, средства редактирования, компоновки и загрузки
программ). Они предназначены прежде всего для системных
программистов и используется при написании компонентов
операционных систем, для управления работой устройств компьютера;
• машинно-независимые – языки, на которых описание алгоритмов
решения задач, не требует от программиста знания особенностей
функционирования конкретной ЭВМ. Программы, составленные на
таких языках, представляют собой последовательности операторов,
структурированные в соответствии с определенными правилами,
которые должна выполнять система после трансляции программы на
машинный язык.
26.
Классификация языковпрограммирования
Третий способ классификации – по назначению, ориентации на ту
или иную сферу применения и решение определенного класса
задач (рис. 3):
27.
Классификация языковпрограммирования
• универсальные – языки общего назначения, ориентированные
на решение широкого круга задач из разных областей
(коммерческих, научных, моделирования и т. д.), объединяющие
на единой методической основе наиболее существенные
свойства и средства современных машинно- и проблемноориентированных языков программирования;
• проблемно-ориентированные – языки, предназначенные для
описания процессов обработки информации в более узкой,
специфической области. Построение такого языка, его структура
данных отражают специфику решаемых с его помощью задач.
28.
Классификация языковпрограммирования
Четвертый способ классификации – по возможности дополнения
новыми типами данных и операциями (рис. 4):
29.
Классификация языковпрограммирования
• нерасширяемые – традиционные языки, синтаксис и семантика
которых фиксированы. Простота синтаксиса уменьшает количество
возможных синтаксических ошибок, что облегчает чтение и
понимание исходных кодов и избавляет от проблемы выбора формы
выражения инструкций. Для таких языков проще писать различные
инструменты, утилиты, среды разработки с подсветкой синтаксиса,
автозавершением кода, контекстными подсказками, возможностью
автоматических преобразований программ;
• расширяемые – открытые языки с расширяемым синтаксисом, т. е.
синтаксис и семантика могут быть расширены или изменены для
облегчения написания программы. В расширяемые языки проще
добавлять новые возможности, с их помощью легче выполнять тонкую
настройку и оптимизацию программ, они больше подходят для
изучения новых моделей программирования, поскольку для этого
требуется изучить только расширения.
30.
Классификация языковпрограммирования
• Пятый тип классификации – по типу решаемых задач (рис. 5):
31.
Классификация языковпрограммирования
• языки системного программирования – языки системного
программирования, предназначенные для написания системного
программного обеспечения, требующего различных подходов к
разработке (по сравнению с прикладным программным
обеспечением);
• языки прикладного программирования – языки для написания
прикладных программ, предназначенных для реализации
конкретных
задач,
предполагающих
взаимообмен
с
пользователями.
32.
Классификация языковпрограммирования
• Шестой тип классификации – по уровню абстракции, т. е. по
степени близости языка программирования к архитектуре
компьютера (рис. 6):
33.
Классификация языковпрограммирования
• низкого уровня – базовые языки, ориентированные на команды
процессора и учитывающие его особенности. «Низкий» уровень
означает, что операторы этого языка близки к машинному коду и
ориентированы на конкретные команды процессора. При
помощи низкоуровневых языков пишут операционные системы,
прошивки для ядра, драйверы для периферийных устройств и и
др.;
34.
Классификация языковпрограммирования
• высокого уровня – языки, имитирующие естественные, обладающие
укрупненными командами, представляют собой формализованную
семантическую систему, максимально приближенную к человеческому
языку или иным привычным знаковым системам. Обеспечивают
описание задачи в наглядном, легко воспринимаемом виде, не
зависят от внутренних машинных кодов ЭВМ любого типа. Языком
высокого уровня программист задает процедуру (алгоритм) получения
результата на основе известных исходных данных, поэтому они
называются процедурными языками программирования. Программы,
написанные на языках высокого уровня, требуют перевода в
машинные коды программами транслятора либо интерпретатора;
35.
Классификация языковпрограммирования
сверхвысокого уровня – языки, с очень высоким уровнем
абстракции. На языке сверхвысокого уровня программист задает
отношение между объектами в программе и определяет, что
нужно найти, но не указывает как получить результат. Такие языки
называют также непроцедурными, поскольку процедура поиска
решения встроена в язык (в его интерпретатор). Повышение
уровня этих языков произошло за счет введения сверхмощных
операций и операторов.
36.
Классификация языковпрограммирования
• Седьмой тип классификации – по системе типов (рис. 7):
37.
Классификация языковпрограммирования
• типизированные – языки, определяющие типы данных, с
которыми работает любая операция;
• нетипизированные – языки, позволяющие производить любую
возможную операцию над любыми данными.
• Разделение языков программирования по системе типов на
типизированные и нетипизированные наиболее категоричное.
Типизированные языки, в свою очередь, могут быть
классифицированы по моменту проверки типов и по строгости
этой проверки.
38.
Классификация языковпрограммирования
• По моменту проверки языки программирования принято делить
на (рис. 8):
39.
Классификация языковпрограммирования
• статически типизированные – языки, в которых типы всех
выражений точно определены до выполнения программы, и
обычно проверяются при компиляции. Языки со статической
типизацией, в свою очередь могут быть явно типизированными
(требуют явного указания типов) и типовыводящими (определяют
(выводят) типы большинства выражений автоматически, и
требуют явного аннотирования только в сложных и
неоднозначных случаях);
• динамически типизированные – языки, в которых проверка
типов производится на этапе выполнения. Типы связаны со
значением при выполнении и не требуют указания типов
выражений. Это позволяет одной переменной иметь значения
разных типов в разные моменты исполнения программы.
40.
Классификация языковпрограммирования
• Среди типизированных языков программирования по строгости
проверки типов выделяют (рис. 9):
41.
Классификация языковпрограммирования
• слабо типизированные – языки, неявно конвертирующие один
тип в другой (например, строки в числа и наоборот). Это может
быть удобно, однако усложняется отладка;
• сильно типизированные – языки, требующие явной конвертации
типов. Стоит отметить, что точное разделение языков
программирования на слабо и сильно типизированные провести
достаточно сложно, поскольку неявное преобразование типов в
той или иной мере производится в большинстве языков.
• Большинство современных языков программирования являются
типизированными в некоторой мере. Многие языки позволяют
выходить за пределы системы типов.
42.
Классификация языковпрограммирования
• Восьмой
тип
классификации
по
алгоритмичности
(процедурности), т. е. по способу получения результата (рис. 10):
43.
Классификация языковпрограммирования
• Под алгоритмичностью языка программирования понимается
возможность абстрагироваться от деталей алгоритма решения задачи.
Алгоритмичность тем выше, чем точнее порядок выполняемых
действий.
• процедурные – языки, в которых действия над данными выражаются в
терминах
последовательностей
команд.
Программисту
обеспечивается возможность определять каждый шаг в процессе
решения задачи, т.е. задача разбивается на шаги и решается шаг за
шагом;
• непроцедурные – языки разработки сложных программных систем,
позволяющее сконцентрировать внимание разработчика на описании
целей и правил, а не на последовательности действий по их
реализации (т.е. описывается «что делать» вместо «как делать»).
44.
Классификация языковпрограммирования
• Непроцедурные языки включают две основные языковые
группы: объектно-ориентированные и декларативные (рис. 11).
Последние, в свою очередь, подразделяются на два семейства –
логические и функциональные:
Рис. 11
45.
Классификация языковпрограммирования
• объектно-ориентированные – языки, состоящие из множества
независимых объектов, функционирующих подобно отдельным
компьютерам, блоки из которых можно использовать для
решения задач, не вникая во внутренние механизмы их
функционирования;
• декларативные – языки, при работе с которыми требуется
установить взаимосвязи между исходными информационными
структурами и свойствами конечного результата, но при этом для
его получения не создается алгоритм (процедура). В таких языках
отсутствует понятие «команда» («оператор»). При этом
логическое программирование описывает проблемы в виде
фактов и формул, а система решает их посредством механизмов
логического вывода. Функциональное, в свою очередь,
формулирует задачу как совокупность определенных функций.
46.
Классификация языковпрограммирования
• Девятый тип классификации - классификация языков вебпрограммирования (рис. 12):
Рис. 12
47.
Классификация языковпрограммирования
• Языки веб-программирования (скрпитовые языки) созданы и
адаптированы специально для сети Интернет и предназначены для
работы с веб-технологиями.
• клиентские – языки, выполняемые на компьютере пользователя
(клиента), точнее их выполняет сам браузер, встраиваются в html-код
web-страницы;
• серверные – языки, выполняемые непосредственно на самом
сервере, специальной программой. Все вычисления проходят на
удаленном компьютере (сервере), поэтому каким браузером
пользуется пользователь не имеет значения.
• Критериев,
по
которым
можно
классифицировать
языки
программирования, существует множество. Список описанных
классификаций не является исчерпывающим и законченным. Он
содержит лишь самые известные из них.
48.
Методологии программированияМетодология - «учение о методах":
включает в себя анализ сложных систем, планирование разработки
программного обеспечения и контроль процесса его разработки;
определяет, какие языки и системы будут применяться для разработки
программного обеспечения и какой технологический подход будет при
этом использован;
определяется способом описания алгоритмов;
находится в диапазоне между двумя фундаментальными понятиями
информатики – алгоритма и модели.
49.
Методологии программирования• Применение различных методологий программирования к решению
задач различных классов позволяет получить разные результаты,
оценить которые можно по следующим параметрам:
• эффективность программного обеспечения (т. е. способность
программного обеспечения предоставлять требуемый уровень
производительности в соответствии с выделенными ресурсами,
временем и другими обозначенными условиями);
• общие затраты на разработку программного обеспечения (затраты на
оформление программного продукта и подготовку его к продаже,
налоги, затраты на маркетинговые исследования и др.).
50.
Методологии программирования• Любая методология создается на основе уже накопленных в
предметной области эмпирических фактов и практических
результатов. Для методологий программирования такими
фактами и результатами выступают уже существующие языки
программирования. Классификация языков по поддерживаемым
методологиям появилась примерно в 80-х годах XX века.
51.
Методологии программирования52.
Методологии программирования• Языки программирования могут хорошо поддерживать те или иные
методологии, но это не означает, что некоторый язык вообще нельзя
использовать с несвойственной ему методологией, а только то, что
потребуется затратить больше усилий и ресурсов.
• Различные языки программирования поддерживают различные стили
(методологии) программирования. Искусство программирования в
определенной степени состоит в том, чтобы выбрать один из языков,
наиболее полно подходящий для решения имеющейся задачи.
• Перечислим и охарактеризуем основные методологии в порядке
уменьшения связи методологии с понятием «алгоритм» и
увеличением связи с понятием «модель».
53.
Методологии программирования54.
Методология императивногопрограммирования
• Императивное программирование – это исторически первая
поддерживаемая аппаратно методология программирования:
• основана
на
последовательном
изменении
состояния
вычислителя пошаговым образом;
• управление изменениями полностью определено и полностью
контролируемо;
• ориентирована на классическую фон Неймановскую модель.
55.
Методология императивногопрограммирования
• Программа состоит из последовательности команд, определяющих
процедуру решения задачи.
• Основным является оператор присваивания, предназначенный для
определения и изменения содержимого памяти компьютера.
• Концепция памяти как места хранения данных, значения которых
можно
изменять
операторами
программы,
является
фундаментальным в императивном программировании.
• Выполнение программы сводится к последовательному выполнению
операторов с целью преобразования исходного состояния памяти, т. е.
программа последовательно обновляет содержимое памяти, изменяя
его от исходного состояния до результирующего.
56.
Методология императивногопрограммирования
• Основные методы и концепции императивного программирования:
• метод изменения состояний – заключается в последовательном
изменении состояний (поддерживается концепцией алгоритма);
• метод управления потоком исполнения – заключается в пошаговом
контроле
управления
(поддерживается
концепцией
потока
исполнения).
• Языки, поддерживающие данную вычислительную модель, являются
как бы средством описания функции переходов между состояниями
вычислителя.
57.
Методология императивногопрограммирования
• Основным их синтаксическим понятием является оператор:
• Первая группа – простые операторы, у которых никакая их часть не
является самостоятельным оператором (например, оператор
присваивания, оператор безусловного перехода, вызова процедуры и
т. п.).
• Вторая группа – структурные операторы, объединяющие другие
операторы в новый, более крупный оператор (например, составной
оператор, операторы выбора, цикла и т. п.).
• Традиционное средство структурирования – подпрограмма (процедура
или функция).
• Подпрограммы имеют параметры и локальные определения и могут
быть вызваны рекурсивно.
• Функции возвращают значения как результат своей работы.
58.
Методология императивногопрограммирования
• Если в данной методологии требуется решить некоторую задачу для
того, чтобы использовать ее результаты при решении следующей
задачи, то типичный подход будет таким:
• сначала исполняется алгоритм, решающий первую задачу;
• результаты его работы сохраняются в специальном месте памяти,
которое известно следующему алгоритму, и используются им.
• Императивное программирование наиболее пригодно для решения
задач, в которых последовательное исполнение каких-либо команд
является естественным:
• пример: управление современными аппаратными средствами.
59.
Методология объектноориентированного программирования• Объектно-ориентированные программы называют «программами,
управляемыми от событий», в отличие от традиционных программ,
называемых «программам, управляемыми от данных»:
• используют метод объектной декомпозиции;
• структура системы (статическая составляющая) описывается в
терминах объектов и связей между ними;
• поведение системы (динамическая составляющая) описывается в
терминах обмена сообщениями между объектами;
• сообщения могут быть как реакцией на события, вызываемые как
внешними факторами, так и порождаемые самими объектами.
60.
Методология объектноориентированного программирования• Основой
объектно-ориентированного
программирования
является понятие объект. Его сущность выражается формулой:
• «объект = данные + процедуры»
• Каждый объект содержит некоторую структуру данных и
доступные только ему процедуры (методы) обработки этих
данных. Используя эту методологию, можно создать свой
собственный абстрактный тип и отобразить проблемную область
в эту созданную абстракцию вместо традиционного ее
отображения в предопределенные управляющие структуры и
структуры данных языка программирования.
61.
Методология объектноориентированного программирования• Другим фундаментальным понятием ООП является класс –
шаблон, на основе которого может быть создан конкретный
программный объект, он определяет свойства и методы объекта,
принадлежащего этому классу.
• Соответственно,
любой
созданный
объект
становится
экземпляром класса. Класс обеспечивает скрытие данных, их
гарантированную инициализацию, неявное преобразование
типов для типов, определенных пользователем, динамическое
задание типа, контролируемое пользователем управление
памятью и механизмы перегрузки операций.
62.
Методология объектноориентированного программирования• Основные методы и концепции объектно-ориентированной методологии:
• метод объектно-ориентированной декомпозиции – заключается в
выделении объектов и связей между ними (поддерживается концепциями
инкапсуляции, наследования и полиморфизма);
• метод абстрактных типов данных – метод, лежащий в основе инкапсуляции
(поддерживается концепцией абстрактных типов данных);
• метод пересылки сообщений – заключается в описании поведения системы
в терминах обмена сообщениями между объектами (поддерживается
концепцией сообщения).
63.
Методология объектноориентированного программирования• В объектно-ориентированном программировании определяют три
основных свойства:
• инкапсуляция – сокрытие информации и комбинирование данных и
функций (методов) внутри объекта. Объекты заключают в себе полное
определение их характеристик, никакие определения методов и
свойств объекта не должны располагаться вне его, это делает
возможным свободное копирование и внедрение одного объекта в
другие;
• наследование – построение иерархии порожденных объектов с
возможностью для каждого такого объекта-наследника доступа к коду
и данным всех порождающих объектов-предков (предусматривает
создание новых классов на базе существующих, что дает возможность
классу-потомку иметь (наследовать) все свойства класса-родителя);
64.
Методология объектноориентированного программирования• полиморфизм – присваивание действию одного имени, которое затем
разделяется вверх и вниз по иерархии объектов, причем каждый
объект иерархии выполняет это действие способом, подходящим
именно ему, т. е. возможность использования методов с одинаковыми
именами для обработки данных разных типов. При этом, рожденные
объекты обладают информацией о том, какие методы они должны
использовать в зависимости от того, в каком месте цепочки
наследования они находятся.
• Естественным средством структурирования в данной методологии
являются классы. Классы определяют, какие поля и методы
экземпляра доступны извне, как обрабатывать отдельные сообщения
и т. п. В чистых объектно-ориентированных языках извне доступны
только методы, а доступ к данным объекта возможен только через его
методы.
65.
Методология объектноориентированного программирования• Данная методология является мощным средством для класса
задач, направленных на моделирование отношений между
объектами практически в любой предметной области. Особенно
удобно и легко в объектах выразить взаимодействие между
различными элементами графического интерфейса пользователя.
• Взаимодействие задач в данной методологии осуществляется при
помощи обмена сообщениями между объектами, реализующими
данные задачи.
66.
Методология функциональногопрограммирования
• Представляет собой способ составления программ, в которых:
• единственным действием является вызов функции;
• единственным способом расчленения программы на части –
введение имени для функции и задание для этого имени
выражения, вычисляющего значения функции;
• единственным правилом композиции – оператор суперпозиции
функции;
• важнейшей характеристикой является то обстоятельство, что
любая программа может рассматриваться как функция,
аргументы которой, возможно, также являются функциями.
67.
Методология функциональногопрограммирования
• Основной конструкцией в функциональных языках является выражение. К
выражениям относятся:
• константы;
• структурированные объекты;
• функции, их тела и вызовы функций.
• Аппликативный язык программирования включает следующие элементы:
• классы констант, которыми могут манипулировать функции;
• набор базовых функций, которые можно использовать без
предварительного объявления;
• правила построения новых функций из базовых;
• правила формирования выражений на основе вызовов функций.
68.
Методология функциональногопрограммирования
• Важным
преимуществом
реализации
языков
функционального
программирования
является
автоматизированное
динамическое
распределение памяти компьютера для хранения данных. При этом
программист избавляется от необходимости контролировать данные, а если
потребуется, может запустить функцию «сборки мусора» – очистки памяти от
тех данных, которые больше не понадобятся программе.
• Поскольку функция является естественным формализмом для языков
функционального программирования, реализация различных аспектов
программирования, связанных с функциями, существенно упрощается.
Интуитивно прозрачным становится написание рекурсивных функций, т. е.
функций, вызывающих самих себя в качестве аргумента. Естественной
становится и реализация обработки рекурсивных структур данных.
69.
Методология функциональногопрограммирования
• Основные методы функционального программирования:
• метод аппликативности – рассматривает программу как выражение,
составленное из применения функций к аргументам, при этом
программа состоит из совокупности определений функций,
представляющих собой вызовы других функций и предложений,
управляющих последовательностью вызовов (поддерживается
концепцией функции);
• метод рекурсивного поведения – заключается в самоповторяющемся
поведении, возвращающемся к самому себе (поддерживается
концепцией рекурсии);
• метод настраиваемости – состоит в том, что можно легко порождать
новые программные объекты по образцу, как значения
соответствующих выражений (применение порождающей функции к
параметрам образца). Этому способствует то, что не только
программа, но и любой программный объект (в идеале) является
выражением.
70.
Методология функциональногопрограммирования
• Функциональное программирование обычно применяется для
решения класса задач, для которых трудно сформулировать в
терминах последовательных операций. В эту категорию попадают
практически все задачи, связанные с искусственным интеллектом:
• обработка естественного языка;
• экспертные консультирующие системы;
• проблемы зрительного восприятия, и многие другие.
• В функциональном программировании отсутствует понятие времени.
Программы являются выражениями, а исполнение программ
заключается в вычислении этих выражений. Благодаря реализации
механизма сопоставления с образцом языки функционального
программирования хорошо использовать для символьной обработки.
71.
Методология логическогопрограммирования
• Представляет собой подход, согласно которому:
• программа содержит описание проблемы в терминах фактов и логических
формул;
• решение проблемы система выполняет с помощью механизмов логического
вывода.
• Согласно логическому подходу к программированию:
• программа представляет собой совокупность правил или логических
высказываний;
• в ней в допустимы логические причинно-следственные связи.
• Важным преимуществом логического подхода является достаточно высокий
уровень машинной независимости, а также возможность откатов –
возвращения к предыдущей подцели при отрицательном результате анализа
одного из вариантов в процессе поиска решения (скажем, очередного хода
при игре в шахматы), что избавляет от необходимости поиска решения путем
полного перебора вариантов и увеличивает эффективность реализации.
72.
Методология логическогопрограммирования
• Основные методы логической методологии:
• метод единообразного применения механизма логического доказательства
ко всей программе;
• метод унификации – механизм сопоставления с образцом для создания и
декомпозиции структур данных.
• Центральным понятием в логическом программировании является
отношение. Программа представляет собой совокупность определений
отношений между объектами и целями. В логическом программировании
нужно только специфицировать факты, на которых основывается алгоритм, а
не определять последовательность шагов, которые требуется выполнить. Это
свидетельствует о декларативности языка логического программирования.
Логические программы имеют небольшое быстродействие, так как
вычисления. осуществляются методом проб и ошибок, поиском с
возвратами к предыдущим шагам.
73.
Методология логическогопрограммирования
• Класс задач логического программирования практически
совпадает с классом задач функционального программирования.
Языки
логического
программирования
базируются
на
классической логике и применимы для систем логического
вывода, в частности, для так называемых экспертных систем. На
языках
логического
программирования
естественно
формализуется логика поведения, и они применимы для
описаний правил принятия решений, например, в системах,
ориентированных на поддержку бизнеса
74.
Методология программирования вограничениях
• Представляет собой подход, при котором:
• отношения между переменными указаны в форме ограничений;
• в программе определяется тип данных решения;
• предметная область решения и ограничения на значение искомого
решения;
• решение находится системой.
75.
Методология программирования вограничениях
• Методология предлагает двухуровневую архитектуру, интегрирующую
компонент ограничения и программный компонент.
• Компонент ограничений обеспечивает основные операции и состоит из
системы выводов на фундаментальных свойствах системы ограничений.
• Операции, окружающие компонент ограничений, реализуются программноязыковым компонентом.
• Программирование в ограничениях основано на описании модели задачи, а
не алгоритма ее решения.
• Ограничения (могут иметь вид уравнений, неравенств, логических
выражений и т. п.) - неупорядоченная совокупность отношений, которые
соответствуют связям, существующим между параметрами задачи.
• При этом постановка той или иной задачи конкретизируется путем
добавления в модель ограничений на допустимые значения параметров
и/или формулирования дополнительных связей между ними.
76.
Методология программирования вограничениях
• Основным методом данной методологии является:
• метод описательной модели вычислений, суть которого заключается в
том, что программа на языке программирования содержит описание
понятий и задач (поддерживается концепцией модели).
• В класс задач, решаемых с помощью данной методологии, в основном
входят задачи исследования операций и задачи искусственного
интеллекта. В таких задачах часто используется некоторое
пространство решений, сужением которого достигается необходимый
результат. Такие сужения можно естественным образом представить
как ограничения.
77.
Методология программирования вограничениях
• Реальное программирование в ограничениях особенно полезно там,
где кончаются возможности обычной математики. При решении задач:
• планирования;
• проектирования;
• прогнозирования;
• в инженерных и экономических расчетах;
• при создании графических интерфейсов;
• в системах понимания естественного языка и др.
78.
Этапы решения задач с использованиемкомпьютера
• Создание компьютерной программы - очень сложный,
многоэтапный и трудоемкий процесс. Он включает в себя
последовательность действий от постановки задачи до получения
решения
79.
Этапы решениязадач с
использованием
компьютера
Эта последовательность этапов
называется
технологической
цепочкой решения задач на
ЭВМ. Из данного списка
непосредственно
к
программированию относятся
пункты 4, 5, 6.
80.
Этапы решения задач с использованиемкомпьютера
• 1. Общая формулировка задачи. На этом этапе происходит постановка
задачи, формулируется условие в содержательных терминах,
определяются связи между тем, что дано и что требуется определить.
На этом этапе необходимо четко определить цель задачи, дать
словесное описание содержания задачи и предложить подход к ее
решению. Постановка задачи за счет определения существенных
свойств рассматриваемого объекта, указания связей между
исходными данными и результатами должна давать ответы на два
вопроса: какие исходные данные известны (входные данные) и что
требуется определить (выходные данные). Если задача обобщенная, т.
е. отсутствует прямая связь между входными и выходными данными,
то при постановке задачи понадобится ответ на третий вопрос: какие
данные допустимы (промежуточные, но необходимые для получения
результата).
81.
Этапы решения задач с использованиемкомпьютера
• 2. Математическая формулировка задачи (математическое или
информационное моделирование). На этом этапе строится
математическая модель (система математических соотношений),
определяются математические величины, которые будут
описывать задачу, а также математические связи между ними.
Целью данного этапа является создание такой математической
модели решения задачи, описывающей зависимость результатов
с исходными данными, которая может быть реализована в
компьютере. Математическая модель должна быть реалистичной
и реализуемой. Неправильная или плохая модель обречет на
неудачу весь дальнейший проект, поэтому этот этап является
крайне важным.
82.
Этапы решения задач с использованиемкомпьютера
• 3. Выбор метода решения. Исходя как из субъективных причин
(знание тех или иных математических методов), так и
объективных (имеющиеся ресурсы), из большого количества
математических методов выбирается тот, который целесообразно
использовать для решения поставленной задачи. Выбор метода
определяется конкретной задачей и требует наличия некоторого
кругозора как в области программирования, так и в области
используемых
методов.
Изучение
различных
методов
способствует приобретению опыта в моделировании. Из всех
возможных методов решения для полученной модели
необходимо выбрать лучший, т. е. оптимальный для тех действий
и данных, которые были определены на первом этапе.
83.
Этапы решения задач с использованиемкомпьютера
• 4. Составление алгоритма решения. На этом этапе должна четко
прослеживаться связь с предыдущим, т. к. алгоритм в большой
степени определяется выбранным методом, хотя один и тот же
метод в свою очередь может быть реализован при помощи
различных алгоритмов. При выборе алгоритма желательно
рассмотреть и проанализировать несколько вариантов, прежде
чем сделать окончательный выбор в пользу наиболее
эффективного, реализация которого потребует наименьшего
количества ресурсов компьютера. Процесс разработки алгоритма
должен быть направлен на получение четкой структуры
алгоритмических конструкций.
84.
Этапы решения задач с использованиемкомпьютера
• Рекомендуется придерживаться следующих правил составления
алгоритма:
• алгоритм должен быть максимально прост и понятен;
• алгоритм должен состоять из мелких шагов;
• сложная задача должна разбиваться на достаточно простые,
легко воспринимаемые части (блоки);
• логика алгоритма должна опираться на минимальное число
достаточно простых базовых управляющих структур.
85.
Этапы решения задач с использованиемкомпьютера
• При разработке алгоритма решения сложной задачи следует
использовать метод пошаговой детализации, следя за тем, чтобы на
каждом шаге структура алгоритма оставалась простой и ясной. Следует
максимально
использовать
существующие
типовые
или
разработанные ранее алгоритмы для отдельных фрагментов (блоков)
алгоритма.
• На любом этапе при записи действий необходимо учитывать, что
исполнителем алгоритма будет компьютер. Он умеет совершать только
вполне
определенные
действия:
присваивание,
ветвление,
циклическое повторение. Поэтому при построении алгоритма любая
его детализация должна приводить к данным конструкциям.
86.
Этапы решения задач с использованиемкомпьютера
• 5. Составление и отладка программы. На этом этапе применяются
основные правила записи и преобразования команд, записанных на
естественном языке, на язык машинных кодов. На этапе
программирования выполняются следующие шаги:
• выбор языка программирования;
• уточнение способов представления данных;
• запись алгоритма на выбранном языке программирования;
• выбор тестов и методов тестирования.
• Выполнение данного этапа напрямую зависит от степени
эффективности разработанного на предыдущем этапе алгоритма.
87.
Этапы решения задач с использованиемкомпьютера
• Процесс разработки программы можно представить схемой
Наличие ошибок в разработанной
программе,
не
прошедшей
тестирование, допустимое явление, т.
к. составить реальную программу без
ошибок достаточно сложно. Но и
делать заключение о ее правильности
лишь на основании того, что она не
отвергнута машиной и выдала
результаты, также преждевременно. В
программе при этом может оставаться
большое
количество
логических
ошибок.
88.
Этапы решения задач с использованиемкомпьютера
• 6. Тестирование программы. Этот этап заключается в проведении
компьютерного эксперимента с целью подтверждения или
опровержения правильности работы алгоритма. Для этого
проводится тестирование, т. е. решаются задачи с такими
исходными данными, для которых известно достоверное
решение, либо применяются косвенные свидетельства. На тестах
проверяется
правильность
реализации
программой
запланированного сценария. Прохождение теста – необходимое
условие проверки правильности программы. При этом
необходимо многократно запускать программу на выполнение
при различных значениях начальных условий с целью проверки и
исправления обнаруженных ошибок.
89.
Этапы решения задач с использованиемкомпьютера
• Тестовые данные должны обеспечить проверку всех возможных
условий возникновения ошибок:
• должна быть испытана каждая ветвь алгоритма;
• первый тест должен быть максимально прост, чтобы проверить,
работает ли программа вообще;
• усложнение тестовых данных должно происходить постепенно.
90.
Этапы решения задач с использованиемкомпьютера
• Процесс тестирования можно разделить на три этапа:
• Проверка в нормальных условиях – тестирование на основе данных,
которые характерны для реальных условий функционирования
программы.
• Проверка в экстремальных условиях – тестирование на основе данных,
включающих граничные значения области изменения входных
переменных.
• Проверка в исключительных ситуациях – тестирование на основе
данных, значения которых лежат за пределами допустимой области
изменений входных переменных.
91.
Этапы решения задач с использованиемкомпьютера
• После тестирования может возникнуть необходимость уточнить
разработанную математическую модель для уточнения
особенностей
изучаемого
объекта.
По
уточнённой
математической модели снова составляется программа,
проводится анализ результатов ее выполнения. Так продолжается
до тех пор, пока полученные результаты не будут достаточно
точно соответствовать изучаемому объекту. Программу условно
можно считать правильной, если ее запуск для выбранной
системы тестовых исходных данных во всех случаях дает
правильные результаты.
92.
Этапы решения задач с использованиемкомпьютера
• 7. Решение поставленной задачи и представление результатов. На
данном этапе осуществляется удобный и наглядный вывод результатов. Этот
этап является итогом выполнения всех предыдущих этапов и служит
подтверждением (или опровержением) их правомерности. После
проведения расчетов и анализа полученных результатов может
потребоваться пересмотр подхода к решению задачи и возврат к первому
этапу для повторного выполнения всех этапов с учетом приобретенного
опыта.
• В процессе решения задачи некоторые этапы могут повторяться до тех пор,
пока не будет найдено решение, удовлетворяющие всем свойствам. При
решении конкретных задач некоторые из этих этапов могут исключаться
самой постановкой задачи. Для каждого из перечисленных этапов
существуют определенные приемы обеспечения качества программы.
Большую роль в создании продуктов высокого качества играет глубина и
тщательность проработки схемы алгоритма.
93.
Этапы создания программы• Программирование – это процесс создания алгоритма (программы,
программного обеспечения) на языке программирования.
• Основной задачей программирования является создание правильных,
рабочих, функциональных, а не просто эффективных программ, не
обеспечивающих правильных результатов. Правильную, но не
эффективную программу можно оптимизировать и сделать
эффективной.
• Рассмотренные в предыдущем уроке этапы применимы в целом и к
разработке
программного
обеспечения.
Однако
можно
сформулировать более конкретную последовательность действий –
этапов, выполняемых на этапе работы непосредственно с программой
94.
Этапы создания программы95.
Этапы создания программы• Первый этап программирования – это наиболее общий, высший
иерархический уровень процесса программирования, а
четвертый – выполняемый после разработки программы и
проведения основных работ по проверке ее правильности –
низший. Пропуск первого этапа или недостаточная его
проработка приводят к тому, что программа либо не работает,
либо выполняет не то, что требуется по заданию.
96.
Этапы создания программы• 1. Постановка задачи программирования включает формализацию
цели
программирования,
позволяющую
осуществить
все
последующие этапы и достичь поставленной цели программирования.
На данном этапе необходимо определиться с предназначением
программного обеспечения и основных требований к нему:
описываются функциональные требования, определяющие функции,
которые должно выполнять программное обеспечение, и
эксплуатационные требования, определяющие характеристики его
функционирования.
Требования
к
программе
называют
функциональной спецификацией или просто спецификацией. Их
перечисление важно для того, чтобы свести к минимуму изменения
системы после начала непосредственной разработки. Заканчивается
первый этап разработкой технического задания с принятием основных
проектных решений.
97.
Этапы создания программы• 2. Проектирование заключается в разработке требований к
программе, перечислении ее технических характеристик, выборе
алгоритмов реализации программы. На этапе проектирования
разработчик обладает набором исходных данных, которые
необходимо структурировать и загрузить для обработки в
компьютер. Для этого создается алгоритм – конечная
последовательность конкретных действий – для обработки
структурированных данных, исходя из поставленной задачи.
Выбор структуры данных влияет на создание (выбор) алгоритма.
Архитектура системы – это каркас программы, это
высокоуровневое проектирование программы.
98.
Этапы создания программы• 3. Этап создания включает в себя:
• кодирование;
• отладку и тестирование программы;
• разработку интерфейса программы;
• создание пакета документации, включающий
описания, инструкции и руководства.
различные
99.
Этапы создания программы• Кодирование (создание программного кода) – написание программы на
базовом текстовом языке программирования, реализующей выбранный
алгоритм, которая может быть понятна транслятору – программе,
преобразующей текст в машинный код.
• Отладка – процесс проверки работоспособности программы и исправления
обнаруженных при этом ошибок с помощью тестов, т. е. конкретных
вариантов значений исходных данных, для которых известен ожидаемый
результат.
• К разработке интерфейса для диалога с пользователем (кнопки, иконки,
расположение и т. д.) целесообразно переходить после разработки
программы и проверки ее работоспособности – проверки, что в результате
ее работы получается корректный ответ.
• Наличие подробной документации обеспечивает возможность передачи
накопленных знаний другим разработчикам.
100.
Этапы создания программы• Поддержка и сопровождение отвечают за внедрение (установку)
разработанного программного обеспечения, исправление
выявленных ошибок, а также поддержку и сопровождение
пользователей. После запуска программы в эксплуатацию
осуществляется сопровождение этой программы, т.е. внесение
изменений на основе выявленных недочетов в процессе
эксплуатации системы, а также проводится оптимизация
функционала или добавление нового.
101.
Системы программирования• Кратко процесс создания с помощью систем программирования
готовой к исполнению программы можно описать следующей
последовательностью действий
102.
Системы программирования• Системы
программирования
обеспечивают платформу для
разработки
прикладного
программного обеспечения и
непосредственно
взаимодействуют
с
компьютерным оборудованием,
чтобы получить необходимую
производительность
при
выполнении
задач
пользователей
103.
Системы программирования• Системой
программирования
называется
комплекс
программных
средств
(инструментов,
библиотек),
предназначенных для разработки (кодирования) и поддержки
(тестирования и отладки) программного продукта на протяжении
всего жизненного цикла этого продукта.
• Системы программирования – это набор специализированных
программных продуктов, которые являются инструментальными
средствами разработчика. При этом, любая система
программирования может работать только в соответствующей
операционное системе, под которую она создана, однако при
этом она может позволять разрабатывать программное
обеспечение и под другие операционные системы.
104.
Системыпрограммирования
Системы программирования являются
частью
базового
программного
обеспечения,
поддерживающей
процесс
создания
программ
с
использованием средств статической
(инструментальной) и динамической
(исполнительной)
поддержки
на
определенном
языке
программирования.
Обладают
удобным
для
пользователя
интерфейсом.
105.
Системы программирования• 1. Текстовые редакторы представляют собой программы для ввода и
модификации текста, написанные на конкретном алгоритмическом
языке и предназначенные для написания текстов исходных программ.
• 2.
Транслятор
является
основным
модулем
системы
программирования, технические характеристики которого влияют на
эффективность программ, создаваемых системой программирования.
Программа, подготовленная на каком-либо языке программирования,
называется исходным модулем. В качестве входной информации
трансляторы применяют исходные модули и формируют в результате
своей работы объектные модули на машинном языке (записываемые
на диск с расширением *.exe), являющиеся входной информацией для
редактора связей, т. е. преобразуют программы, написанные на языках
программирования, в программы на машинном языке. Объектный
модуль содержит текст программы на машинном языке и
дополнительную информацию, обеспечивающую настройку модуля по
месту его загрузки и объединение этого модуля с другими независимо
оттранслированными модулями в единую программу.
106.
Системы программирования• Чтобы программа была выполнена, надо либо весь ее текст
перевести в машинный код и затем передать на исполнение
процессору, либо сразу выполнять команды языка, переводя на
машинный язык и исполняя каждую команду поочередно.
107.
Системы программирования• Трансляторы делятся на два класса:
• компилятор – транслятор, который полностью обрабатывают весь
текст программы, осуществляет ее перевод в эквивалентную
объектную программу на языке машинных команд или языке
ассемблера. В процессе он осуществляет поиск синтаксических
ошибок, выполняет семантический анализ и только затем, если текст
программы в точности соответствует правилам языка, его
автоматически переводит (транслируют) на машинный язык
(генерируют объектный код или object code). Сгенерированный
объектный код обрабатывается специальной программой –
сборщиком или редактором связей, который производит связывание
объектного и машинного кодов. Текст программы преобразуется в
готовый к исполнению exe-файл (исполнимый код), который имеет
самостоятельное значение, работает под управлением операционной
системы, а также доступен для распространения на другие
компьютеры с процессором, поддерживающим соответствующий
машинный код;
108.
Системы программирования• интерпретатор – транслятор, который воспринимает входную
программу на исходном языке, анализирует структуру каждого
оператора, и переводит его в машинный язык и затем сразу исполняет.
В случае повторения оператора в тексте программы, интерпретатор
каждый раз воспринимает как новый. Такой подход значительно
замедляет процесс трансляции. Интерпретаторы удобны для быстрой
отладки программ, позволяя сократить цикл разработки. Однако при
этом в несколько раз увеличивается скорость выполнения программы.
Интерпретатор не порождает результирующую программу и никакого
результирующего кода. Соответственно, перенос на другой компьютер
невозможен без наличия на нем установленного интерпретатора.
109.
Системы программирования• В реальных системах программирования перемешаны
технологии и компиляции, и интерпретации.
• На этапе трансляции могут быть пропущены ошибки, если
используемые в программе операторы сформированы верно.
Например:
• логические ошибки (неверное указание ветви алгоритма после
проверки некоторого условия, неполный учет возможных
условий, пропуск в программе одного или более блоков
алгоритма);
• ошибки в циклах (неправильное указание начала цикла,
неправильное указание условий окончания цикла, неправильное
указание числа повторений цикла, бесконечный цикл,
неправильное задание типов данных, организация считывания
меньшего или большего объема данных, чем требуется);
110.
Системы программирования• ошибки в использовании переменных (использование
переменных без указания их начальных значений, ошибочное
указание одной переменной вместо другой);
• ошибки при работе с массивами (массивы предварительно не
обнулены, индексы следуют в неправильном порядке);
• ошибки арифметических операций (неверное указание типа
переменной, неверное определение порядка действий,
извлечение квадратного корня из отрицательного числа).
• Эти ошибки обнаруживаются на этапе тестирования
111.
Системы программирования• 3. Компоновщики (редакторы связей) – инструментальная программа,
осуществляющая компоновку («линовку») нескольких объектных
модулей (ранее оттранслированных) в одну программу, создавая при
этом загрузочный (исполнимый) модуль. Загрузочный модуль может
быть помещен операционной системой в основную память и
выполнен.
• Для связывания модулей компоновщик использует таблицы символов,
созданные компилятором в каждом из объектных модулей. Эти
таблицы могут содержать символы следующих типов:
• определенные (экспортируемые) имена – функции и переменные,
определенные в данном модуле и предоставляемые для
использования другим модулям;
• неопределенные (импортируемые) имена – функции и переменные,
на которые ссылается модуль, но не определяет их внутри себя;
• локальные – используемые внутри объектного файла для упрощения
процесса настройки адресов.
112.
Системы программирования• В случае сбора единого исполнимого модуля из разных
объектных файлов компоновщик вычисляет и подставляет адреса
вместо символов одним из следующих способов:
• статическая компоновка – выполняется в течение времени
компоновки:
• динамическая компоновка – выполняется во время исполнения.
113.
Системы программирования4. Библиотеки прикладных программ – содержат наиболее часто
используемые подпрограммы в виде готовых объектных модулей.
Каждая библиотека предоставляет возможности для решения каких-то
конкретных задач:
• выполнения математических операций;
• работы с графикой;
• работы с файлами;
• работы с сетью;
• шифрования и т. д.
• Они могут быть встроены в систему программирования или
добавляться отдельно. Для популярных систем программирования
написано очень много библиотек. При этом они бывают открытыми
(бесплатными, с открытым исходным кодом) и коммерческими
(платными, разрабатываемыми компаниями с штатом программистов
и тестировщиков).
114.
Системы программирования• 5. Загрузчики – системные программы, обеспечивающие обработку и
подготовку готовой программы к выполнению. Загрузчики объединяют
функции редактора связей и программы выборки в одном пункте
задания:
• помещают находящиеся во входном наборе данных объектные и
загрузочные модули в оперативную память;
• объединяют их в единую программу;
• корректирует перемещаемые адресные константы с учетом
фактического адреса загрузки;
• передают управление в точку входа созданной программы.
115.
Системы программирования• 6. Отладчики – на этапе компиляции выполняют программу в
заданном режиме с целью поиска, обнаружения и локализации
ошибок.
• Разработка программ значительно облегчается при помощи систем
программирования,
образуемых
языком
программирования,
транслятором,
соответствующей
документацией,
а
также
вспомогательными средствами для подготовки программ к форме,
пригодной
для
выполнения.
Совершенствование
систем
программирования
путем
расширения
пользовательского
функционала,
создания
удобного
интерфейса
позволяет
оптимизировать
процесс
разработки
нового
программного
обеспечения.
116.
Введение• Компьютерная программа — список команд (инструкций) для
компьютера. Команды могут быть любыми, например:
• считать информацию с клавиатуры;
• произвести арифметические вычисления (+, −, *, /);
• вывести информацию на экран.
• В каждом компьютере установлено много разнообразных
программ. Например, Google Chrome— это программа-браузер.
Она позволяет просматривать страницы сайтов в интернете.
Программа Skype позволяет совершать звонки и обмениваться
мгновенными сообщениями. Сама операционная система, будь
то Windows, OS X или Linux, тоже программа.
• Для создания программ используются языки программирования.
Выбор языка программирования, как правило, продиктован
особенностями самой программы
117.
Язык программирования• Язык программирования — набор определенных правил,
по которым компьютер может понимать команды
(инструкции) и выполнять их. Текст программы на любом
языке программирования называется программным
кодом.
• Языки
программирования
бывают компилируемые и интерпретируемые. Если
программа написана на компилируемом языке (C, C++,
Pascal), то перед выполнением её нужно полностью
проверить на наличие синтаксических ошибок и уже после
этого перевести в понятную для компьютера форму —
машинный код. Это делает специальная программа,
которая называется компилятором.
118.
Язык программирования• Если программа написана на интерпретируемом языке (Python,
PHP, Ruby), она не переводится в машинный код целиком. Вместо
этого
специальная
программа,
которая
называется интерпретатором, идет по коду, анализирует его
и выполняет каждую отдельную команду.
• Существуют языки программирования, которые совмещают оба
подхода (C#, Java). В таких языках код исходной программы
сначала компилируется в промежуточный код (байт-код), а уже
потом, во время выполнения, переводится в машинный код.
119.
Язык программирования120.
Язык PythonЯзык
Python
разработал
голландский
программист
Гвидо
Ван
Россум (Guido van Rossum) в
1991 году. Гвидо был фанатом
британского
комедийного
сериала «Monty Python’s Flying
Circus», откуда и пришло
название языка.
121.
Python 2 VS Python 3• Основные версии языка Python – Python 2 и Python 3. Версия Python
2 считается устаревающей, версия 3 — более новой и
современной. Почему не откажутся от второй версии? Если
коротко, Python 3 не имеет полной обратной совместимости с
предыдущей версией, а на Python 2 написано очень много
программ. У разработчиков нет возможности переписать всё на
новую версию.
• В нашем курсе мы будем пользоваться только Python 3 и не будем
говорить о Python 2.
122.
Преимущества Python1.Это интерпретируемый язык программирования:
1. он не требует отдельного этапа компиляции;
2. программа на языке Python запускается прямо из исходного кода;
2.Это высокоуровневый язык программирования;
3.Это платформонезависимый язык:
1. программы на Python можно создавать на разных операционных
системах (Linux, Windows, OS X);
2. программы на Python можно запускать на разных операционных
системах (Linux, Windows, OS X);
4.Это open source проект;(программное обеспечение,
распространяемое с открытым исходным кодом)
5.Это простой язык;
6.Это встраиваемый скриптовый язык;
7.Это динамический язык, что упрощает написание несложных программ;
8.Для Python существует огромная библиотека классов на любой вкус.
123.
Недостатки Python1.Низкая скорость выполнения по сравнению с такими языками,
как C и C++;
2.Динамическая
типизация
языка
—
минус
при
написании сложных программ.
124.
Задачи, решаемые с помощью Python• Python подходит для решения широкого спектра задач. Разобьем их на
категории:
1.Системное программирование. Встроенные в Python интерфейсы
доступа к службам операционных систем делают его идеальным
инструментом для создания переносимых программ и утилит
системного администрирования;
2.Графические приложения. Простота Python и быстрота разработки
делают его отличным средством создания графического интерфейса.
В состав Python входит стандартный объектно-ориентированный
интерфейс к GUI API;
3.Веб-приложения.
С
помощью
дополнительных фреймворков
(наборы модулей или пакетов,
помогающих разработчикам писать веб-приложения на языке Python)
на языке Python (Django, Flask, Pyramid) можно создавать
полнофункциональные сайты;
125.
Задачи, решаемые с помощью Python3.Веб-сценарии. Python поставляется вместе со стандартными
интернет-модулями, которые позволяют программам выполнять
разнообразные сетевые операции как в режиме клиента, так и в
режиме сервера;
4.Интеграция компонентов. Возможность Python расширяться и
встраиваться в системы на языке C++ делает его удобным для
описания поведения других систем и компонентов;
5.Приложения баз данных. В Python имеются интерфейсы
доступа ко всем основным реляционным базам данных: Sybase,
Oracle, Informix, ODBC, MySQL, PostgreSQL, SQLite и многим
другим. С их помощью можно создавать приложения баз данных.
126.
Проекты, в которых используется Python1.Компания Google использует Python в своей поисковой системе;
2.Компании Intel, Cisco, Hewlett-Packard, Seagate, Qualcomm и
IBM, используют Python для тестирования аппаратного
обеспечения;
3.Сервис YouTube в значительной степени реализован на Python;
4.Агентство национальной безопасности (NSA) использует Python
для шифрования и анализа данных;
5.Компании JPMorgan Chase, UBS, Getco и Citadel применяют
Python для прогнозирования финансового рынка;
6.Программа BitTorrent для обмена файлами в пиринговых
сетях
(одноранговая
оверлейная
компьютерная
сеть,
основанная на равноправии участников. Часто в такой сети
отсутствуют выделенные серверы, а каждый узел является как
клиентом, так и выполняет функции сервера)написана на языке
Python;
7.NASA, Los Alamos, JPL и Fermilab используют Python для
научных вычислений.
127.
Что такое программа?• Программу можно представить как последовательность команд
(алгоритм) для объекта (исполнителя), который должен их
выполнить для достижения определенной цели.
• Алгоритм решения задачи – точное описание порядка действий,
которые надо выполнить для решения задачи.
• Так условно можно запрограммировать и человека, если
составить ему инструкцию "как приготовить оладьи", а он начнет
четко ее исполнять.
• При этом инструкция (программа) для человека будет написана
на так называемом естественном языке (русском, английском или
др.).
128.
Философия PythonРазработчики языка Python придерживаются определённой
философии программирования, называемой «The Zen of Python».
Её текст выдаётся интерпретатором Python по команде import this
(работает один раз за сессию). Автором этой философии считается
Тим Петерс (Tim Peters).
129.
В оригинале1. Beautiful is better than ugly;
2. Explicit is better than implicit;
3. Simple is better than complex;
4. Complex is better than complicated;
5. Flat is better than nested;
6. Sparse is better than dense;
7. Readability counts;
8. Special cases aren't special enough to break the rules;
9. Although practicality beats purity;
10.Errors should never pass silently;
11.Unless explicitly silenced;
12.In the face of ambiguity, refuse the temptation to guess;
13.There should be one — and preferably only one — obvious way to do it;
14.Although that way may not be obvious at first unless you're Dutch;
15.Now is better than never;
16.Although never is often better than *right* now;
17.If the implementation is hard to explain, it's a bad idea;
18.If the implementation is easy to explain, it may be a good idea;
19.Namespaces are one honking great idea — let's do more of those!
130.
Перевод на русский язык1. Красивое лучше, чем уродливое;
2. Явное лучше, чем неявное;
3. Простое лучше, чем сложное;
4. Сложное лучше, чем запутанное;
5. Плоское лучше, чем вложенное;
6. Разреженное лучше, чем плотное;
7. Читаемость имеет значение;
8. Особые случаи не настолько особые, чтобы нарушать правила;
9. При этом практичность важнее безупречности;
131.
Перевод на русский язык10. Ошибки никогда не должны замалчиваться;
11. Если не замалчиваются явно;
12. Встретив двусмысленность, отбрось искушение угадать;
13. Должен существовать один — и, желательно, только один —
очевидный способ сделать это;
14. Хотя он поначалу может быть и не очевиден, если вы не
голландец;
15. Сейчас лучше, чем никогда;
16. Хотя никогда зачастую лучше, чем прямо сейчас;
17. Если реализацию сложно объяснить — идея плоха;
18. Если реализацию легко объяснить — идея, возможно, хороша;
19. Пространства имён — отличная вещь! Давайте будем делать их
больше!
132.
Установка Python на Windows• Язык Python относится к свободному программному
обеспечению, поэтому его можно скачать с официального сайта,
свободно распространять и устанавливать на все современные
операционные системы.
• Шаг 1. Скачайте установщик Python 3
1.Откройте окно браузера и перейдите на сайт python.org;
2.Кликните по ссылке Downloads;
3.Кликните по желтой кнопке Download Python 3.x.
133.
Установка Python на Windows134.
Установка Python на Windows135.
Установка Python на Windows• Шаг 2. Запустите установщик
1.Установите галочку напротив Add Python 3.x to PATH;
2.Кликните Install Now;
3.Через несколько минут на вашем компьютере будет установлен
Python
136.
Установка Python на Windows137.
Установка Python на Windows138.
139.
Что такое программа?• На первом шаге у программиста есть набор «сырых» данных. Это, к примеру,
могут быть разрозненные бухгалтерские отчеты, статистика и пр. Эти
сведения необходимо структурировать и поместить в компьютер.
• Затем, если задачу можно разбить на отдельные небольшие подзадачи, то
лучше так и поступить. Решить небольшие задачи, убедиться, что они
работают и объединить их обратно. На научном языке это называется
анализом и синтезом. С опытом приходит умение видеть и выделять
подзадачи.
• Далее, программистом реализуется алгоритм, т.е. набор действий для
обработки структурированных данных, исходя из поставленной задачи.
Отмечу, что правильный выбор структуры данных влияет на создание
(выбор) алгоритма. Мощь языка программирования отчасти заключена в
структурах данных, которое он предоставляет для работы.
• После того, как алгоритм разработан и программа работает (в результате ее
работы получается корректный ответ), можно создавать красивый и удобный
интерфейс.
140.
Что такое программа?• Порой визуальная среда становится доминирующей и много сил
уходит на ее изучение, вместо того, чтобы заниматься главным
(структуризацией и алгоритмизацией). Посмотрите на сайт
поисковой системы – поле для ввода с одной кнопкой. Простота
скрывает за собой сложные интеллектуальные алгоритмы,
которые работают на стороне сервера.
141.
Что такое программа?• Обычно принято программировать не людей, а вычислительные
машины, используя при этом специальные языки.
• Использование особых языков вызвано тем, что машины не в
состоянии понимать наши (человеческие) языки.
• Для "инструктирования" машин предназначены разнообразные
языки
программирования,
которые
характеризуются
синтаксической однозначностью (например, в них нельзя менять
местами определенные слова) и ограниченностью (строго
определенный набор слов и символов).
142.
Языки программирования• На сегодняшний день существует огромное множество
различающихся
и
похожих
между
собой
языков
программирования.
• Причина такого явления становится понятна, если представить то
количество и разнообразие задач, которые на сегодняшний день
решается с помощью вычислительной техники.
• Для решения разных задач требуются разные инструменты (т.е.
языки программирования).
143.
Языки программирования• Первые программы писались на машинном языке, т.к. для ЭВМ
того времени еще не существовало развитого программного
обеспечения, а машинный язык — это единственный способ
взаимодействия с аппаратным обеспечением компьютера.
• Каждую команду машинного языка напрямую выполняет то или
иное электронное устройство.
• Данные и команды программисты записывали в цифровом виде
(например, в шестнадцатеричной или двоичной системах
счисления).
144.
Языки программирования• Понять программу на таком языке очень сложно; кроме того, даже
небольшая программа получалась состоящей из множества строк
кода.
• Ситуация осложнялась еще и тем, что каждая вычислительная машина
понимает лишь свой машинный язык.
• Людям, в отличие от машин, более понятны слова, чем наборы цифр.
• Стремление человека оперировать словами и не цифрами привело к
появлению ассемблеров.
• Это языки, в которых вместо численного обозначения команд и
областей памяти используются словесно-буквенные.
145.
Языки программирования• При этом появляется проблема: машина не в состоянии понять
наборы букв.
• Необходим какой-нибудь переводчик на ее родной машинный
язык. Поэтому, начиная со времен ассемблеров, под каждый язык
программирования создаются трансляторы — специальные
программы, преобразующие программный код с языка
программирования в машинный код.
• Ассемблеры на сегодняшний день продолжают использоваться (в
системном программировании — низкоуровневые интерфейсы
операционных систем, части драйверов и др.).
146.
Языки программирования• После ассемблеров наступил рассвет языков так называемого
высокого уровня.
• Для этих языков потребовалось разрабатывать более сложные
трансляторы, т.к. языки высокого уровня куда больше удобны для
человека, чем для вычислительной машины.
• В отличие от ассемблеров, которые остаются привязанными к
своим типам машин, языки высоко уровня обладают
переносимостью. Т.е., написав один раз программу, программист
мог выполнить ее на любой машине.
147.
Языки программирования• Механизм этого перевода весьма сложен, при этом выделяют два
основных способа трансляции — компиляция программы или ее
интерпретация.
• При компиляции весь исходный программный код (тот, который пишет
программист) сразу переводится в машинный. Создается так
называемый отдельный исполняемый файл, который никак не связан с
исходным кодом. Выполнение исполняемого файла обеспечивается
операционной системой.
• При интерпретации выполнение кода происходит последовательно
(можно сказать, строка за строкой). Операционная система
взаимодействует с интерпретатором, а не исходным кодом.
148.
Языки программирования• Выполнение откомпилированной программы происходит
быстрее, т.к. она представляет собой готовый машинный код.
• Однако на современных компьютерах снижение скорости
выполнения при интерпретации обычно не заметно.
149.
Языки программирования• Полезно знать, что происходит внутри компьютере при работе
программы.
• Инструментом программиста является компьютер. Файлы с
программами хранятся в долговременной памяти (на жестком
диске или флешь-накопителе), а в момент выполнения
загружаются в ОЗУ (RAM) во временную (оперативную) память.
Все вычисления в компьютере производятся центральным
процессором.
150.
Самые популярные языки намировом рынке
151.
Язык Python• Язык программирования Python был создан примерно в 1991
году голландцем Гвидо ван Россумом.
• Свое имя - Пайтон (или Питон) - получил от названия телесериала,
а не пресмыкающегося.
• После того, как Россум разработал язык, он выложил его в
Интернет, где уже целое сообщество программистов
присоединилось к его улучшению.
• Python активно совершенствуется и в настоящее время. Часто
выходят его новые версии. Официальный сайт http://python.org.
152.
Язык Python• Python – это интерпретируемый язык программирования: исходный код
частями преобразуется в машинный в процессе выполнения специальной
программой — интерпретатором.
• Python характеризуется ясным синтаксисом. Читать код на этом языке
программирования достаточно легко, т.к. в нем мало вспомогательных
элементов, а правила языка заставляют программистов делать отступы.
Понятно, что хорошо оформленный текст с малым количеством
отвлекающих элементов читать и понимать легче.
• Python – это полноценный, можно сказать универсальный, язык
программирования.
Он
поддерживает
объектно-ориентированное
программирование (на самом деле он и разрабатывался как объектноориентированный язык).
• Также Python распространяется свободно на основании лицензии подобной
GNU General Public License.
153.
Язык Python• Области, где Python активно применяется:
154.
Язык Python• 1. Системное программирование.
• 2. Разработка программ с графическим интерфейсом.
• 3. Разработка динамических веб-сайтов.
• 4. Интеграция компонентов.
• 5. Разработка программ для работы с базами данных.
• 6. Быстрое создание прототипов.
• 7. Разработка программ для научных вычислений.
• 8. Разработка игр.
155.
Язык Python• Итак, Python – это язык программирования, на котором
разрабатываются программы. Чтобы сделать этот процесс
удобным
разработаны
системы
программирования,
включающие транслятор, текстовый редактор (позволяющий
копировать, удалять и перемещать фрагменты программ),
справочную систему, средства отладки (поиска ошибок в
программе) и др. Имеется несколько вариантов языка Python и
систем программирования для него.
• Мы будем рассматривать вариант Python с версией 3.8.0 языка,
который распространяется по свободной лицензии Python
Software Foundation License.
156.
Что нам потребуется для выполненияпрограмм на языке Python?
• Прежде, чем ответить на этот вопрос, рассмотрим, как
запускаются программы на компьютере. Выполнение программ
осуществляется операционной системой (Windows, Linux и пр.). В
задачи операционной системы входит распределение ресурсов
(оперативной памяти и пр.) для программы, запрет или
разрешение на доступ к устройствам ввода/вывода и. т.д.
• Для запуска программ на языке Python необходима программаинтерпретатор (виртуальная машина) Python. Данная программа
скрывает
от
Python-программиста
все
особенности
операционной системы, поэтому, написав программу на Python в
системе Windows, ее можно запустить, например, в GNU/Linux и
получить такой же результат.
157.
Язык Python – запуск и установка• Скачать и установить интерпретатор Python можно совершенно
бесплатно с официального сайта: http://python.org. Для работы
нам понадобится интерпретатор Python версии 3 или выше3.
• Загрузите Python 3
• На главной странице нажмите на желтую кнопку «download
Python», сохраните и запустите файл (приблизительно 25
megabayt)
158.
159.
Язык Python – запуск и установка• Загрузчик запрашивает как установить, выбираем первый
вариант – Install Now.
160.
Язык Python – запуск и установка• Выбираем – Disable path length limit
161.
Язык Python – запуск и установка• После окончания загрузки нужно проверить правильность
установки. Для этого в строке команд (ctrl+R -> cmd.exe) «py»
(латиницей и без кавычек - py) или напишите python и нажмите
кнопку ввода (Enter). Если процесс прошел правильно Python вам
ответит вам своей версией и предложит вам выполнить
несколько команд:
162.
Язык Python – запуск и установка• Если вы пользуетесь Windows или Mac OS Х, к этому моменту на вашем
рабочем столе должен находиться значок с надписью IDLE - интегрированная
среда разработки (Integrated Development and Learning Environment).
• После установки программы запустите интерактивную графическую среду
IDLE и дождитесь появления приглашения для ввода команд (>>>).
• В системах Windows и Macintosh
интерпретатор можно запустить как
приложение (либо из меню Start, либо
двойным щелчком на пиктограмме
интерпретатора). Запустите ее: Пуск →
Все программы → Python 3.6 → IDLE
(Python 3.6 32-bit):
163.
Язык Python – запуск и установка• Откроется главное окно Python Shell так называемой
интегрированной среды разработки (Integrated DeveLopment
Environment – IDLE):
164.
Язык Python – запуск и установка• Окно Python Shell обеспечивает доступ к интерактивному режиму работы,
когда каждая введенная команда сразу выполняется.
• Поскольку никаких команд языка Python мы пока не знаем, то будем
использовать систему программирования как калькулятор (возможности
системы это позволяют).
• 1. 2 + 5
• 2. 3 * (5 – 8)
• 3. 2.4 + 3.0/2
• Наберите подобные примеры в интерактивном режиме (после >>>; в конце
каждого примера нажимайте клавишу <Enter>). Обратите внимание, что в
числах с дробной частью в качестве разделителя используется точка, а не
запятая. Набранные команды сразу выполняются, и результат выводится на
экран.
165.
Язык Python – запуск и установка• В интерактивном режиме можно также писать и выполнять очень
простые программы. Но для написания сложных программ
используется другой режим работы – программный, когда
записывается вся программа и при запуске выполняется целиком
(предварительно она сохраняется в файле на диске (что удобно
для повторного выполнения). Программу на Python часто
называют «скриптом».
• Мы будем говорить главным образом о программном режиме.
166.
Язык Python – запуск и установка• Чтобы перейти в программный режим, нужно в меню File
выбрать пункт New File или одновременно нажать клавиши
<Ctrl+N>. Появится окно для разработки программы (окно
редактора):
167.
Язык Python – запуск и установка• Появится окно для разработки программы (окно редактора):
168.
Язык Python – запуск и установка• Теперь мы можем написать свою первую программу на Python. Напомним,
что программа, как и алгоритм решения задачи, состоит из команд, которые
надо выполнить для решения задачи. Эти команды в языке Python
называются «инструкциями».
• Вот текст программы:
• print ("Hello, World!")
• Вы, конечно, поняли, что для вывода на экран некоторого текста в языке
Python используется инструкция print(). После начала набора текста
программы в окне редактора в заголовке окна слово Untitled будет
«окружено» символами «*»:
169.
Язык Python – запуск и установка• Это говорит о том, что
программа в окне еще не
записана в файл на диске.
• Для сохранения программы
нужно в меню File выбрать пункт
Save As… или одновременно
нажать
клавиши
<Ctrl+S>.
Появится окно для выбора
имени файла с программой и
папки, в которой он будет
размещен:
170.
Язык Python – запуск и установка• Назовем файл Моя первая программа. Система добавит к этому имени
расширение .py. По умолчанию файлы с программами размещаются в папке
с файлами системы программирования. Удобнее создать в ней отдельную
папку для собственных программ. Найти папку с файлами системы
программирования Python можно, щелкнув правой кнопкой мыши на
ярлыке и выбрав в появившемся меню пункт Расположение файла.
• Чтобы выполнить программу, нужно нажать функциональную клавишу <F5>.
Результат выполнения программы появится в окне Python Shell:
171.
Язык Python – запуск и установка• Если перед выполнением программы не сохранить ее, система
предложит это сделать:
• Для выхода из интерактивного режима работы, то есть из окна Python Shell,
следует закрыть это окно – система вернется в окно редактора.
172.
Язык Python – запуск и установка• Добавим в программу еще одну инструкцию так, как показано
ниже
• Сохраним новый вариант программы (используя меню File →
Save или клавиши <Ctr+S>) и попробуем выполнить ее (<F5>) –
появится сообщение об ошибке:
173.
Язык Python – запуск и установка• Причина в том, что вторая инструкция записана с некоторым
смещением относительно первой. В программах на языке Python
все инструкции должны быть записаны с одним и тем же
отступом. Исключение составляют так называемые «составные
инструкции», которые содержат другие инструкции и каким-либо
образом управляют их выполнением.
174.
Язык Python• В программе Python выделяются следующие ступени иерархии:
• программы делятся на модули;
• модули содержат инструкции;
• инструкции состоят из выражений;
• выражения создают и обрабатывают объекты.
175.
Язык Python• При вызове Python вы связываетесь с интерпретатором
(переводчиком).
• Переводчик переводит ваш код на язык обрабатываемый
процессором(CPU).
• Интерпретатор показывает версию Python
• Затем идет приглашение “>>>” указывающий на готовность
среды.
• Переводчик будет переводить и выполнять код следующий за
этим приглашением.
176.
ПРОГРАММА НА PYTHON177.
Программа на Python• В самом начале обучения Python можно представить как обычный
интерактивный калькулятор. В интерактивном режиме IDLE найдем значения
следующих математических выражений. После завершения набора
выражения нажмите клавишу Enter для завершения ввода и вывода
результата на экран.
• Нижним подчеркиванием в предыдущем примере обозначается
последний полученный результат.
178.
Программа на Python• Если по какой-либо причине совершить ошибку при вводе
команды, то Python сообщит об этом:
• Не бойтесь совершать ошибки! Python поправить и подскажет на,
что следует обратить внимание.
179.
Программа на Python• В математических выражениях в качестве операндов можно
использовать целые числа (1, 4, -5) или вещественные (в
программировании их еще называют числами с плавающей точкой):
4.111, -9.3. Математические операторы, доступные над числами в
Python :
• Сложение +
• Вычитание • Деление /
• Умножение *
• Деление с округлением вниз //
• Возведение в степень **
• Остаток от деления
%
180.
Программа на Python>>> 5 / 3
1.6666666666666667
>>> 5 // 3
1
>>> 5 % 3
2
>>> 5 ** 67
67762635780344027125465800054371356964111328125
>>>
181.
Программа на Python• Если один из операндов является вещественным числом, то в результате
получится вещественное число.
• В качестве упражнения найдите значение выражения 2 + 56 * 5.0 - 45.5 + 55.
• При вычислении математических выражений Python придерживается
приоритета операций:
>>> -2**4
-16
>>> -(2**4)
-16
>>> (-2)**4
16
>>>
• В случае сомнений в порядке вычислений будет не лишним обозначить
приоритет в виде круглых скобок.
182.
Программа на Python• В Python имеется возможность не только проводить расчеты и
работать с текстами, но и создавать графические изображения.
Самые простые графические возможности обеспечивает
использование исполнителя «turtle» («черепаха»). Этот
исполнитель представляет собой «перо», оставляющее след на
плоскости рисования. «Перо» можно поднять, тогда при
перемещении след оставаться не будет. Кроме того, для «пера»
можно установить толщину и цвет.
• Приведенный ниже фрагмент программы создает графическое
окно, в котором происходит рисование, и помещает «черепаху»
(в виде стрелки) в исходное положение.
183.
• import turtle #Инструкция импорта модуля c командами исполнителя• turtle.reset() #Инициализация исполнителя
184.
Программа на Python• Например, программа для рисования квадрата имеет вид:
185.
Программа на Python• Для разработки этого кода создайте новый файл с именем
kvadrat.py, для этого используйте программную среду Python
• Программы Python хранятся в файлах с расширением “.py”
• Загрузите интегрированную среду Python IDLE и выберите в меню
"File" команду “New File”. После разработки и сохранения кода
нажмите на команду Run или нажмите функциональную кнопку
F5
• Выполните программу и просмотрите результат.
186.
Программа на Python - Модуль turtle• Графика черепаха (turtle graphics) представляет собой вид
компьютерной графики виртуальную черепаху рисующую за
собой на экране.
• Черепаха вроде держит карандаш и передвигаясь рисует линию
вниз.
• Черепаха также может передвигаться вверх или чертить точку.
187.
Модуль turtle – список основных командУправление исполнителем «черепаха»
основными командами (инструкциями):
осуществляется
следующими
• forward(расстояние) Передвижение вперед (в направлении острия стрелки)
на расстояние точек
• backward(расстояние) Передвижение назад на расстояние точек
• right(угол) Поворот направо (по часовой стрелке) на угол единиц (по
умолчанию на угол градусов). В начале программы «черепаха» «смотрит» на
правую часть окна
• left(угол) Поворот налево (против часовой стрелки) на угол единиц
• setheading(угол) где угол – угол поворота в градусах относительно
начального положения(0 – поворачивает «черепаху» направо
188.
Модуль turtle – список основных команд• exitonclick() Закрытие окна turtle
• penup() Поднятие «пера», чтобы не оставалось следа его при
перемещении
• pendown() Опускание «пера», чтобы при перемещении оставался
след (рисовались линии). По умолчанию «перо» опущено
• circle(радиус, мера) Рисование дуги радиуса радиус и градусной
мерой мера. Дуга рисуется против часовой стрелки, если r>0 и по
часовой стрелке, если r<0
• dot(размер) Ставит точку размер толщины
189.
Основные функции190.
Основные функции191.
Основные функции192.
Программа на Python - разборРазберем часть кода с красным указателем :
193.
Синтаксис: подключение модуля изстандартной библиотеки Python
• Чтобы Python мог воспользоваться функциями turtle сначала они
должны быть импортированы из модуля turtle
• Модули хранятся в стандартной библиотеке Python (Python Standard
Library)
• В библиотеке доступны большое количество модулей и каждая из них
выполняет отдельную функцию
• Для подключения модуля библиотеки используют следующую
инструкцию:
• from имя модуля import *
• Знак * в конце инструкции подключает все возможные функции
модуля.
• Знак * нужен при использовании несколькими функциями модуля
194.
Стандартная библиотека Python195.
196.
Внимание!• Не забывайте импортировать модуль turtle в начале
программных кодов с графическими функциями turtle!
• Если хотите воспользоваться с функциями turtle, в начале
программных кодов с графическими функциями turtle сначала
используйте инструкцию подключения модуля
• Не называйте программные файлы turtle.py, в противном случае
вы не сможете подключить модуль turtle!
197.
Программа на Python - разборРазберем часть кода с красным указателем:
198.
Синтаксис: Комментарии• В программах принято писать так называемые «комментарии» –
тексты, помогающие читающему программу (в том числе автору
программы) понять ее особенности.
• В приведенной программе строки, начинающиеся символом «#»,
– это и есть комментарии. Комментарии могут быть записаны и
после инструкции:
pl = a * b #Расчет площади
• При выполнении программы транслятор комментарии
игнорирует.
199.
Python proqram• Внимательно просмотрите программный
код справа
• Определите, что выполнит программа до
выполнения
• Затем напишите программу в Python İDLE
и запустите ее
• Результат
соответствует
вашим
предположениям?
Рекомендация: Обратите внимание начальной точке
перемещения черепахи. С какой точки начинает передвижение?
Для этого достаточно запустить код forward(50) (не забудьте в
начале подключить модуль)
200.
Вопросы:• В начале программы указатель черепахи в какую сторону направлена?
• В начале программы указатель черепахи в каком положении(вверх или
вниз)?
• Сравните результаты выполнения нижеследующих инструкций :
(a) forward (100)
(b) left (90)
left (90)
forward (100)
• Сравните результаты выполнения нижеследующих инструкций :
(a) backward (100) (b) right(90)
right (90)
backward(100)
201.
ЗаданиеНапишите программу, в которой на экране получается
изображение:
• а) прямоугольника высотой 50 и шириной 100 точек экрана;
• б) правильного шестиугольника;
• в) равностороннего треугольника.
202.
Литература:1. Gowrishankar S, Veena A, Introduction to Python Programming, CRC Press, 2019,
Taylor & Francis Group
2. Билл Любанович, Простой Python. Современный стиль программирования,
Питер 2019
3. Д. Златопольский Основы программирования на языке Python. – М.: ДМК
Пресс,
4. 2017. – 284 с
5. С. К. Буйначев, Н. Ю. Боклаг, Основы программирования на языке python,
Екатеринбург Издательство Уральского университета 2014
6. Д. Ю. Федоров, Основы программирования на примере языка Python, Учебное
пособие, Санкт-Петербург 2019
7. С. Шапошникова, Основы программирования на Python, http://younglinux.info,
2014
8. Rəşad Qarayev, Python programlama dili, Bakı – 2015
9. Abdulla Qəhrəmanov, İlahə Cəfərova, Python proqramlaşdırma dili, Bakı – 2015