Языки и методы программирования
Покупка
Новинка
Основная коллекция
Тематика:
Программирование и алгоритмизация
Издательство:
РГЭУ (РИНХ)
Авторы:
Мирошниченко Ирина Иосифовна, Веретенникова Елена Григорьевна, Савельева Наталья Григорьевна
Год издания: 2019
Кол-во страниц: 188
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-7972-2604-8
Артикул: 859740.01.99
Учебное пособие содержит краткое содержание тем лекционного курса «Языки и методы программирования» В пособии приведены основные понятия и подходы в сфере разработки и программирования, сопровождаемые практическими примерами. Может использоваться для иных направлений и специальностей. Предназначено д.ля студентов направления подготовки бакалавриата 01.03.02 «Прикладная математика и информатика» всех форм обучения, преподавателей, а также для всех интересующихся актуальными проблемами и подходами в области разработки программных средств.
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ (РИНХ) И.И. Мирошниченко, Е.Г. Веретенникова, Н.Г. Савельева ЯЗЫКИ И МЕТОДЫ ПРОГРАММИРОВАНИЯ Учебное пособие Ростов-на-Дону Издательско-полиграфический комплекс РГЭУ (РИНХ) 2019
УДК 004.43(075) ББК 32.973.2 М 61 Мирошниченко, И.И. М 61 Языки и методы программирования : учебное пособие / И.И. Мирошниченко, Е.Г. Веретенникова, Н.Г. Савельева. – Ростов н/Д : Издательско-полиграфический комплекс Рост. гос. экон. ун-та (РИНХ), 2019. – 188 c. ISBN 978-5-7972-2604-8 Учебное пособие содержит краткое содержание тем лекционного курса «Языки и методы программирования» В пособии приведены основные понятия и подходы в сфере разработки и программирования, сопровождаемые практическими примерами. Может использоваться для иных направлений и специальностей. Предназначено для студентов направления подготовки бакалавриата 01.03.02 «Прикладная математика и информатика» всех форм обучения, преподавателей, а также для всех интересующихся актуальными проблемами и подходами в области разработки программных средств. УДК 004.43(075) ББК 32.973.2 Рецензенты: Попова Л.К., к.э.н., зав. кафедрой информатики и математики Южно-Российского гуманитарного института; Денисов М.Ю., д.э.н., профессор кафедры фундаментальной и прикладной математики РГЭУ (РИНХ). Утверждено в качестве учебного пособия редакционно-издательским советом РГЭУ (РИНХ). ISBN 978-5-7972-2604-8 © Мирошниченко И.И., Веретенникова Е.Г., Савельева Н.Г., 2019 © РГЭУ (РИНХ), 2019
ОГЛАВЛЕНИЕ 1. Основные понятия и определения…………………………… 4 2. Основные понятия языка VBA………………………………. 20 3. Основные понятия языка программирования С++…………. 58 4. Объектно-ориентированное программирование……………. 88 5. Основные понятия языка программирования С#.................... 131 Список использованных и рекомендованных источников……. 186
1 ОСНОВНЫЕ ПОНЯТИЯ И ОПРЕДЕЛЕНИЯ Язык программирования (ЯП) – это инструмент для планирования поведения некоторого устройства-исполнителя. Планы, управляющие поведением компьютеров, называются компьютерными программами. Уточненное определение: язык программирования – это нотация для записи компьютерных программ. Отличие универсальных ЯП – алгоритмическая полнота, т.е. возможность описания на таком языке любого вычисления (алгоритма). Развитие языков программирования Можно условно выделить три периода развития языков программирования: - период зарождения (1950 – начало 1960 гг.); - период бурного роста (1960–1980 гг.); - эволюционный период (1980 гг. и по наше время). Существующие языки программирования можно разделить на две группы: процедурные и непроцедурные. Процедурные (или алгоритмические) программы представляют собой систему предписаний для решения конкретной задачи. Роль компьютера сводится к механическому выполнению этих предписаний. Процедурные языки разделяют на языки низкого и высокого уровня. К языкам низкого уровня относятся языки ассемблера (от англ. to assemble – собирать, компоновать). В языке ассемблера используются символьные обозначения команд, которые легко понятны и быстро запоминаются. Вместо последовательности двоичных кодов команд записываются их символьные обозначения, а вместо двоичных адресов данных, используемых при выполнении команды, – символьные имена этих данных, выбранные программистом. Иногда язык ассемблера называют мнемокодом или автокодом. Большинство программистов пользуются для составления программ языками высокого уровня. Как и обычный человеческий язык, такой язык имеет свой алфавит – множество символов,
используемых в языке. Из этих символов составляются так называемые ключевые слова языка. Каждое из ключевых слов выполняет свою функцию. Так же как и в привычном для нас языке, слова, составленные из букв алфавита данного языка, могут выполнять функции разных частей речи. Ключевые слова связываются друг с другом в предложения по определѐнным синтаксическим правилам языка. Каждое предложение определяет некоторую последовательность действий, которые должен выполнить компьютер. Язык высокого уровня играет роль посредника между человеком и компьютером, позволяя человеку общаться с компьютером более привычным для человека способом. Часто такой язык помогает выбрать правильный метод решения задачи. Классическое процедурное программирование требует от программиста детального описания того, как решать задачу, т. е. формулировки алгоритма и его специальной записи. Машинно-ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.). Машинно-ориентированные языки позволяют использовать все возможности и особенности машинно-зависимых языков. Языки символического кодирования. Языки символического кодирования, являются командными. Однако коды операций и адреса в машинных командах, представляющие собой последовательность двоичных (во внутреннем коде) или восьмеричных (часто используемых при написании программ) цифр, в них заменены на символы (идентификаторы), форма написания которых помогает программисту легче запоминать смысловое содержание операции. Это обеспечивает существенное уменьшение числа ошибок при составлении программ. Макрос. Язык, являющийся средством для замены последовательности символов, описывающих выполнение требуемых действий ЭВМ на более сжатую форму, называется Макрос (средство замены). В основном Макрос предназначен для того, чтобы сократить запись исходной программы.
Машинно-независимые языки – это средство описания алгоритмов решения задач и информации, подлежащей обработке. Они удобны в использовании для широкого круга пользователей и не требуют от них знания особенностей организации функционирования ЭВМ и ВС. Проблемно-ориентированные языки. Такие языки программирования, которые, используя в данной области обозначения и терминологию, позволяют описывать требуемые алгоритмы решения для поставленных задач. Языки, ориентированные на решение определенных проблем, должны обеспечить программиста средствами, позволяющими коротко и четко формулировать задачу и получать результаты в требуемой форме. Диалоговые языки. Программные средства, обеспечивающие оперативное взаимодействие человека с ЭВМ. Специальные управляющие языки для обеспечения оперативного воздействия на прохождение задач, которые составлялись на любых раннее неразработанных (недиалоговых) языках. Эти языки позволяет решать достаточно широкий круг задач. Универсальные языки. Созданы для широкого круга задач: коммерческих, научных, моделирования и т.д. Непроцедурные языки. Непроцедурные языки составляют группу языков, описывающих организацию данных, обрабатываемых по фиксированным алгоритмам (табличные языки и генераторы отчетов), и языков связи с операционными системами. Позволяя четко описывать как задачу, так и необходимые для еѐ решения действия, таблицы решений дают возможность в наглядной форме определить, какие условия должны быть выполнены, прежде чем переходить к какому-либо действию. Принципиально иное направление в программировании связано с методологиями (иногда говорят парадигмами) непроцедурного программирования. К ним можно отнести объектноориентированное и декларативное программирование. Основные парадигмы программирования Совокупность идей и понятий, определяющих стиль программирования, называется парадигмой программирования. Все программы (как и деятельность по их созданию) можно разделить на два больших типа: программы «для себя» и про
граммы «для других». Создание программ «для себя» назовем (несколько условно) научно-развлекательным программированием. Основной критерий их качества – удобство применения для соответствующих целей (учебы, науки, развлечения). Самые известные и широко используемые до сих пор языки – Фортран, Бейсик, Паскаль. Создание программ «для других» ориентировано на эксплуатацию пользователями, не имеющими отношения к авторам. Такие программы называют программными продуктами, а процесс их создания – индустриальным программированием. Языки индустриального программирования отличаются от языков научноразвлекательного программирования: они сложны в изучении и реализации, включают в себя большое число концепций и понятий, обладают объемными библиотеками. Важным свойством индустриальных языков является наличие изобразительных средств, поддерживающих различные системы программирования. В настоящее время в индустриальном программировании активно используются императивная и объектная парадигмы. Есть основания полагать, что в ближайшее время начнет активно использоваться функциональная парадигма. Императивная (процедурная) парадигма основана на фоннеймановской модели (основатель математик Дж. фон Нейман). Эта модель до сих пор является основой большинства современных архитектур, что обусловило популярность и доминирование императивной парадигмы. Напомним, что модель содержит три основных компонента: центральное процессорное устройство (ЦПУ), оперативную память (ОП), устройство ввода-вывода (УВВ). Основные понятия императивных языков программирования (ИЯП) представляют собой абстракции основных понятий фон-неймановской модели. Любой ИЯП включает в себя понятие переменой (например, в языке Паскаль – var x: integer, в языке С – int х), понятие операции (А * В – в любом языке), понятие оператора (оператор цикла, оператор присваивания и др.). Понятие простой переменной абстрагирует понятие ячейки памяти. Кроме простых переменных в императивном языке содержатся составные (т.е. состоящие из других переменных) массивы и записи (структуры).
Понятие операции обобщает арифметико-логические команды. Почти для любой операции в ИЯП можно найти прототип – команду в машинном языке. Понятие оператора абстрагирует общее понятие команды. Операторы в императивном языке делятся на три группы: оператор присваивания; операторы управления; операторы вводавывода. Основным оператором в любом императивном языке является оператор присваивания: V:=E, где V – переменная; E – выражение. Выполнение оператора присваивания состоит в вычислении значения выражения E и пересылке вычисленного значения в ячейку (или ячейки) ОП, соответствующую переменной V. Т.о., оператор присваивания в ИЯП может представляться последовательностью команд пересылки и арифметико-логических команд (и даже команд перехода). Операторы управления (циклы, операторы выбора, перехода и т.п.) абстрагируют машинные команды перехода. Операторы ввода-вывода обобщают машинные команды ввода-вывода. Императивные языки концептуально близки машинной архитектуре, поэтому программирование на таких языках позволяет весьма эффективно управлять поведением компьютеров. В индустриальном программировании в настоящее время доминируют либо чисто императивные языки (такие как С), либо языки со смешанной объектно-императивной парадигмой (С++, Java, C# и др.). Объектная парадигма основана на понятии объекта. Объект обладает состоянием и поведением. Поведение состоит в посылке сообщений себе и другим объектам. Для каждого вида сообщения существуют «обработчики», которые могут модифицировать состояние объекта и посылать сообщения другим объектам. Объекты с одинаковым поведением и набором состояний объединяются в классы. Между классами могут существовать следующие отношения: - включение – «объект – подобъект» – включение объекта класса Х в объект другого класса Y, т.е. говорят, что объект класса Y владеет объектом класса Х; - наследование – «суперкласс – подкласс» – объект подкласса Derived обладает всеми свойствами объекта суперкласса
Base, а также, возможно, дополнительными свойствами (специфичными для класса Derived). Таким образом, все объекты класса Derived одновременно принадлежат и классу Base, но не наоборот; - ссылка – объект класса W содержит (но не владеет) ссылку на объект класса Ref. Также существуют и другие отношения. Объектная парадигма достаточно просто сочетается с императивной парадигмой. Состояние описывается набором переменных, а обработчики сообщений представляют собой процедуры или функции, имеющие доступ к состоянию. Посылка сообщения сводится к вызову соответствующего обработчика. В результате большинство современных языков индустриального программирования сочетает в себе обе парадигмы. Поэтому будем говорить об объектно-императивной парадигме. Функциональная парадигма Основные понятия функциональных языков – функция и выражение. Выражение – это комбинация вызовов функций. Наряду с большим числом стандартных (встроенных в язык) функций программист может определять свои функции. Определение новой функции включает в себя имя функции, список аргументов и выражение – тело функции. Вызов функции состоит из имени функции и списка выражений – фактических параметров. Каждый из фактических параметров соответствует аргументу в определении функции. Основная операция – вызов функции. При вызове функции сначала вычисляются выражения – фактические параметры, а затем их значения подставляются вместо соответствующих им аргументов в выражение – тело функции. Наконец, вычисляется значение тела, которое и будет значением вызова. Первым языком программирования, в котором была реализована функциональная парадигма, был язык Лисп. Программировать в функциональном стиле можно и на ИЯП. Приведем примеры наиболее известных языков программирования. - JavaScript. Прототипно-ориентированный сценарный язык программирования. JavaScript изначально создавался для того, чтобы сделать web-странички «живыми». В браузере они под
ключаются напрямую к HTML и, как только загружается страничка, тут же выполняются. - Java. Строго типизированный объектно-ориентированный язык программирования. Приложения Java обычно транслируются в специальный байт-код, поэтому они могут работать на любой компьютерной архитектуре с помощью виртуальной Java-машины, которая используется для написания клиентских приложений и серверного программного обеспечения. - PHP. Является распространенным интерпретируемым языком общего назначения с открытым исходным кодом (скриптовый язык). PHP создавался специально для ведения webразработок, и код на нем может внедряться непосредственно в HTML-код. - Python. Высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика, читаемости кода и на разработку веб-приложений. Синтаксис ядра Python минималистичен. Код в Python организовывается в функции и классы, которые могут объединяться в модули. - C#. Объектно-ориентированный язык программирования. Разработан как язык разработки приложений для платформы Microsoft .NET Framework. C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. - С++. Компилируемый, статически типизированный язык программирования общего назначения. Является одним из самых распространенных языков в мире. - Ruby. Простой и читаемый язык программирования, ориентированный на разработку веб-приложений. Язык обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, сборщиком мусора. - R. Язык программирования для статистической обработки данных и работы с графикой, а также свободная программная среда вычислений с открытым исходным кодом в рамках проекта GNU. R широко используется как статистическое программное обеспечение для анализа данных и фактически стал стандартом для статистических программ.