Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

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

Содержание:

ВВЕДЕНИЕ

Каждый год число языков программирования растет. Профессиональному программисту необходимо анализировать актуальность тех или иных языков и все время обучаться новым.

Актуальность темы курсовой работы обусловлена тем, что в современном ритме жизни существует потребность автоматизирования задач, процессов с помощью современных ЭВМ. Основными инструментами автоматизации являются языки программирования.

В данной курсовой работе объектами исследования выступают языки программирования.

Целью курсовой работы изучение языков программирования, их классификации и истории развития.

Цели исследования:

1. Изучить историю развития языков программирования;

2. Изучить основные понятия и классификации языков программирования;

3. Изучить понятие алгоритма и его построения;

4. Сделать обзор современных языков программирования

Задачей исследования является практическое применение программирования на языке VBA.

Для написания курсовой работы были изучены достоверные, актуальные на сегодняшний день источники, полностью раскрывающие тему данного исследования.

Применяемы технические средства: Intel(R) Core (TM) I5-7300U @ 2.60GHz, операционная система Microsoft Windows 10

Данная курсовая работа выполнена в программе Microsoft Word 2016, Microsoft Excel 2016.

ГЛАВА 1. ОСНОВНЫЕ ПОНЯТИЯ И КЛАССИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

1.1 История развития языков программирования

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

Можно условно выделить три периода развития языков программирования:

-период зарождения (1950- начало 1960гг.);

-период бурного роста (1960-1980 гг.);

-эволюционный период (1980 гг. И по наше время [13, с.4]

В пятидесятые годы ХХ века с появлением компьютеров на электронных лампах началось бурное развитие языков программирования. Компьютеры, стоившие в то время значительно дороже, чем разработка любой программы, требовали высокоэффективного кода. Такой код разрабатывался вручную на языке Ассемблер. В середине 1950-х годов под руководством Джона Бэкуса для фирмы IBM был разработан алгоритмический язык программирования FORTRAN. Несмотря на то, что уже существовали разработки языков, выполняющие преобразование арифметических выражений в машинный код, создание языка FORTRAN (FORmula TRANslator), представляющего возможность записи алгоритма вычислений с использованием условных операторов ввода/вывода, стало точкой отсчета эры алгоритмических языков программирования.

Как альтернатива языку FORTAN, первоначально ориентированному на архитектуру IBM, под руководством Питера Наура в конце 1950-х годов был разработан язык ALGOL (ALGOrithmic Language). Основной целью, преследуемой разработчиками этого языка, была независимость от конкретной архитектуры вычислительной системы. Кроме того, созда­тели языка ALGOL стремились разработать язык, удобный для описания алгоритмов и применяющий систему обозначений, близкую к той, что принята в математике.

Языки FORTRAN и ALGOL были первыми языками, ориентирован­ным и на программирование вычислений.

Язык PL/I, первые версии которого появились в начале 1960-х годов, был первоначально ориентирован на IBM 360 и расширял возможно­сти языка FORTRAN некоторыми средствами языка COBOL, разработан­ного в те же годы. Несмотря на определенную популярность языка PL/I у программистов, работавших на компьютерах IBM и машинах серии ЕС, в настоящее время он представляет чисто теоретический интерес.

В конце 1960-х годов под руководством Найарда и Дала был разрабо­тан язык Simula-67, использующий концепцию пользовательских типов данных. Фактически это первый язык, применяющий понятие классов.

В середине 1970-х годов Вирт предложил язык Pascal, который сразу стал широко использоваться. В это же время по инициативе Министерст­ва обороны США началась работа по созданию языка высокого уровня, получившего название Ada — в честь Ады Лавлейс, программистки и дочери лорда Байрона. Создание языка началось с определения требований и выработки спецификаций. Над проектом работали четыре независимые группы, но все они использовали как основу язык Pascal. В начале 1980-х годов был разработан первый промышленный компилятор языка Ada.

Универсальный язык программирования С был разработан в середи­не 1970-х годов Денисом Ритчи и Кеном Томпсоном. Этот язык стал популярным языком системного программирования и в свое время исполь­зовался для написания ядра операционной системы UNIX. Стандарт языка С начал разрабатываться рабочей группой института стандартов ANSI в 1982 году. Международный стандарт языка С принят в 1990 году. Язык С лег в основу разработки языков программирования С++ и Java.

Наряду с алгоритмическими языками параллельно развивались и языки, предназначенные для обработки деловой информации, а также языки искусственного интеллекта. К первым относится язык COBOL (COmmon Business Oriented Language), а ко вторым - языки LISP (LISt Processing) и Prolog. Язык LISP, разработанный в 1960-х годах под руко­водством Дж. Маккарти, был первым функциональным языком обработ­ки списков, который нашел широкое применение в теории игр.

С появлением персональных компьютеров языки стали составными частями интегрированных сред разработки. Появились языки, применяемые в различных офисных программах, например VBA (Visual Basic for Application).

В 1990-х годах с распространением сети Интернет расширяется воз­моность распределенной обработки данных, что отражается и на разви­тии языков программирования. Появляются языки, ориентированные на создание серверных приложений, такие как Java, Perl и PHP, языки описания документов - HTML и XML. Традиционные языки программиро­вания С++ и Pascal также претерпевают изменения: под языком программирования начинает пониматься не только функциональность самого языка, а также библиотеки классов, предоставляемые средой программирования. Акцент со спецификации самих языков программирования переносится на стандартизацию механизмов взаимодействия распределенных приложений. Появляются новые технологии - СОМ и CORBA, спе­цифицирующие взаимодействие распределенных объектов.

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

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

- удобство сопровождения и тестирования программ;

- стоимость разработки с применением конкретного языка программирования;

- четкость и ортогональность конструкций языка;

- применение объектно-ориентированного подхода. [8, с.13-15]

1.2 Классификация языков программирования

Языки программирования – это формальные языки для описания данных (информации) и алгоритма их обработки на ЭВМ. [2, с.8]

Существующие языки программирования можно разделить на две группы: процедурные и не процедурные.

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

Процедурные языки разделяют на языки низкого и высокого уровня.

К языкам низкого уровня относятся языки ассемблера (от англ. To assemble – собирать, компоновать). В языке ассемблера используются символьные обозначения команд, которые легко понятны и быстро запоминаются. Вместо последовательности двоичных кодов команд записываются их символьные обозначения, а вместо двоичных адресов данных, используемых при выполнении команды, символьные имена этих данных, выбранные программистом. Иногда язык ассемблера называют мнемокодом или автокодом. [14, с.4]

В группу языков низкого уровня входят машинные языки и языки символического кодирования: (Автокод, Ассемблер). Операторы этого языка – это те же машинные команды, но записанные мнемоническими кодами, а в качестве операндов используются не конкретные адреса, а символические имена. Все языки низкого уровня ориентированы на определенный тип компьютера, т.е. являются машинно-зависимыми. [2, с.9]

Машинно-ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.). Машинно-ориентированные языки позволяют использовать все возможности и особенности машинно-зависимых языков. [14, с.5]

Если язык близок к естественному языку программирования, то он называется языком высокого уровня, если ближе к машинным командам – языком низкого уровня. [2, с.9]

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

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

Классическое процедурное программирование требует от программиста детального описания того, как решать задачу, т.е. формулировки алгоритма и его специальной записи.

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

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

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

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

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

Универсальные языки. Созданы для широкого круга задач: коммерческих, научных, моделирования и т.д.

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

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

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

Императивные (процедурные): основными объектами в таких языках являются переменные, операторы присваивания, стандартные алгоритмические конструкции. Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих те или иные действия. Примерами процедурных языков являются PASCAL, FORTRAN, C, MODULA, BASIC и другие.

Функциональные: программа описывает вычисление некоторой функции, значения которой определяются по заданным примерам; предназначены для решения задач не численного характера. Примером функционального языка является LISP (List Processing – обработка списков). Разработан и реализован в Массачусетском технологическом институте в 1959 г. Рассматривается специалистами как основной язык программирования систем искусственного интеллекта.

Логические: программы на таких языках не описывают действия, они задают данные и отношения между ними, после этого можно задавать вопросы. Языком логического программирования является PROLOG – Programming in Logic.

Объектно-ориентированные: создают объекты, каждый из которых отличается своими свойствами и способами взаимодействия с другими объектами. К объектно-ориентированным относятся большинство современных языков программирования. [2, с.10]

1.3 Понятие алгоритма и программы

Под алгоритмом понимается способ преобразования представления информации. Слово algorithm — произошло от имени аль-Хорезми — автора известного арабского учебника по математике. [1, с.9]

Алгоритм – это строгое и точное предписание последовательности действий для решения поставленной задачи.

Любой алгоритм рассчитан на конкретного исполнителя – того, кто будет выполнять указанную в алгоритме последовательность действий.

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

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

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

В информатике универсальным исполнителем алгоритмов является компьютер. [2, с.5]

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

Пять важных особенностей алгоритма:

-Конечность. Алгоритм должен всегда заканчиваться после конечного числа шагов.

-Определенность. Каждый шаг алгоритма должен быть точно определен.

- Ввод. Алгоритм имеет некоторое (быть может, равное нулю) число входных данных, т. е. величин, заданных ему до начала работы.

-Вывод. Алгоритм имеет одну или несколько выходных величин, т. е. величин, имеющих вполне определенное отношение к входным данным.

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

Алгоритм должен быть практичным и хорошим с эстетической точки зрения.

Для алгоритмов важно различать следующие аспекты:

-постановку задачи, которая должна быть разрешена с помощью алгоритма;

-специфичный способ, каким решается задача, при этом для алгоритма различают:

а) элементарные шаги обработки, которые имеются в распоряжении;

б) описание выбора отдельных подлежащих выполнению шагов.

Для алгоритмически разрешимой постановки задачи всегда имеется много различных способов ее решения, т. е. различных алгоритмов. [1, с.9-10]

Свойства алгоритма:

-дискретность: состоит из отдельных шагов (команд)

-понятность: должен включать только команды, известные исполнителю (входящие СКИ)

-определенность: любое действие должно быть строго и недвусмысленно определено в каждом случае, при одинаковых исходных данных всегда выдает один и тот же результат

-конечность (результативность): приводит к решению задачи (получению результата) за конечное число шагов

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

Программа – это:

-алгоритм, записанный на каком-либо языке программирования

-набор команд для компьютера

Команда — это описание действий, которые должен выполнить компьютер:

-откуда взять исходные данные?

-что нужно сними сделать?

-куда (как) вывести результат?

Способы записи алгоритмов:

-Словесный (на естественном языке)

-Блок-схема

-Псевдокод (система обозначений и правил)

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

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

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

Правила составления схем алгоритма:

- Четко определить точку зрения, с которой будет рассмотрен процесс и исходные данные задачи.

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

- В блоках указать все формулы и исходные данные.

- Использовать при записи формул не конкретные числа, а переменные.

- Определить последовательность выполнения блоков.

- Обязательно указать линии потока.

- Выдержать размеры блоков и правила составления схем алгоритмов (ГОСТ 19.701-90). ГОСТ 19.701-90 (ИСО 5807-85) «Единая система программной документации.

В целом же решение любой задачи на ЭВМ состоит из следующих этапов:

- Постановка задачи и ее анализ

- Формализация задачи

- Построение алгоритма

- Составление программы на языке программирования

- Отладка и тестирование программы

- Проведение расчетов и анализ полученных результатов. [2, с.5-8]

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

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

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

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

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

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

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

На последнем этапе разработанная программа уже используется для решения практических задач.

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

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

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

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

Наиболее часто используют классическую (каноническую) водопадную (waterfall) модель, спиральную модель и модель, основанную на использовании средств быстрой разработки приложений.

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

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

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

Таким образом, разработчик программного обеспечения должен уметь проводить системный анализ предметной области для подготовки постановки задачи, обеспечивать формализацию задачи, выбор технологии программирования, разработку алгоритма, составление программы на выбранном языке программирования и ее отладку, тестирование программы, документирование программы и использование полученных результатов. Основой профессиональной грамотности программиста является развитое системное алгоритмическое мышление. [12, с.7-9]

1.4 Основные понятия и система программирования

Любой язык программирования образуют три составляющие части: алфавит, синтаксис и семантика.

Алфавит – фиксированный для данного языка набор основных символов, из которых должен состоять любой текст на этом языке. Никакие другие символы для записи текстов не допускаются.

Синтаксис – система правил, определяющих допустимые конструкции из букв алфавита. С помощью этих конструкций представляются отдельные компоненты алгоритма и алгоритм в целом, записанные на данном языке программирования.

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

Выделяют основные понятия языков программирования:

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

Идентификаторы. В процессе обработки информации, алгоритму необходимо различать программные объекты. Для обозначения имен переменных, их свойств и атрибутов используются идентификаторы. Идентификатор представляет собой сочетание букв и цифр, которое начинается с буквы и не превышает заданной для языка программирования длины. В любом языке программирования существуют стандартные идентификаторы, произвольное использование которых запрещено.

Переменные. Переменные представляют собой объекты, способные принимать различные значения. Они обладают следующими свойствами: в один момент времени переменная хранит не более одного значения; переменная имеет постоянный тип; переменная хранит текущее значение до записи в нее нового значения; в начале выполнения программы значение переменных считается неопределенным. [13, с.4]

Система программирования – это часть программного обеспечения, с помощью которой разрабатываются все остальные программы. Система программирования состоит из:

-редактора для ввода текста программы на языке программирования

-транслятора этого языка

-библиотеки подпрограмм

-компоновщика

-отладчика.

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

Процесс перевода называется трансляцией, а программа, которая осуществляет этот перевод, называется транслятором.

Рисунок 1. Трансляция программ

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

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

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

В основном все языки высоко уровня компилируются и лишь отдельные интерпретируются (Бейсик, Лого, ШАЯ).

Компоновка. Объектные модули, полученные в результате трансляции, еще не готовы для выполнения, т.к. содержат в себе как текст программы на языке машинных команд, так и информацию о размещении этих команд в оперативной памяти, а также о подключении других объектных модулей. Затем объектные модули обрабатываются специальной программой компоновщиком, при этом подключаются библиотечные объектные модули, и в результате компоновки получается один загрузочный модуль, т.е. файл, готовый к выполнению в среде операционной системы (он имеет расширение .exe). В современных средах программирования процессы трансляции и компоновки обычно объединены, и пользователь непосредственно «не видит» объектных модулей.

Отладка. Отладчик позволяет произвести процесс поиска в программе ошибок, просмотреть значения отдельных переменных в любой момент времени (для этого в нужных местах программы предусматривают точки останова) и управлять процессом отладки программы. [2, с.10-13]

В данной главе были рассмотрены теоретические аспекты языков программирования и исторические этапы их создания. Были изучены основные понятия, классификации и разновидности языков программирования. Также было акцентировано изучение таких понятий как: алгоритм, алфавит, синтаксис и семантика.

ГЛАВА 2. ОБЗОР СОВРЕМЕННЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

2.2 C#

Язык программирования C# был создан в XXI веке и является полностью объектно-ориентированным языком программирования, построенный в соответствии с международными стандартами. C# признан Международным сообществом. Он тесно связан с каркасом Framework.Net, в полной мере учитывает его возможности, что даёт программистам получать преимущества работы с виртуальной машиной. [3, с.4]

Руководителем группы разработчиков языка С# был Аидере Хейлсберг, сотрудник компании Microsoft (ранее входил в группу разработчиков инструментальной системы Builder). Цели, которые преследовались созданием этого языка, были сформулированы им следующим образом:

• создать объектно-ориентированный язык, в котором любая сущность представляется объектом, объединяющим как информационную (данные), так и функциональную (действия над этими данными) части;

• создать первый компонентно-ориентированный язык программирования семейства C/C++;

• упростить C++, сохранив по возможности его мощь и основные конструкции;

• повысить надёжность программного кода. [4, с.3-4]

Среда разработки проектов на C# является открытой языковой средой, разрешающей использование различных языков программирования, включённых в среду фирмой Microsoft. Языки программирования, которые включаются в среду разработки Visual Studio, используют единый каркас – Framework.Net. Поэтому отдельные части проекта можно разрабатывать на разных языках. Например, программировать класс на одном языке, а потомки класса – на других языках.

Каркас Framework.Net состоит из статической библиотеки классов – FCL (Framework Class Library) и динамической общеязыковой исполнительной среды – CLR (Common Language Runtime). Библиотека FCL содержит классы, задающие типы, которые встроены в язык программирования.

Имеются возможности построения Web-приложений, создания повторно используемых компонентов (Web-служб) и библиотек элементов управления.

Компиляторы языков программирования преобразуют исходный код в промежуточный код языка IL (Intermediate Language). После компиляции проекта создаётся переносимый исполняемый файл (Portable Executable или PE-файл), который содержит код на IL, и метаданные. PE-файл может иметь разные уточнения – exe, dll, mod или mdl. PE-файл с уточнением exe является не обычным исполняемым Windows-файлом, а исходным файлом для транслятора JIT (Just In Time Compiler), оптимально преобразующего поступающий код в команды реального процессора, на котором будет выполняться проект. Метаданные содержат всю информацию, необходимую для выполнения в среде CLR.

Создаваемый на C# проект имеет стандартные и введённые пользователем классы. Стандартные классы хранятся в библиотеке FCL. Класс содержит описание данных, называемых полями класса, описание методов класса и описание событий и имеет свой тип. Тип данных (класса) – это семантическая единица, которая описывает свойства и поведение множества объектов, которые называются экземплярами класса. Состояния объектов определяются полями, поведение объектов – методами, а состояния, в которых могут находиться объекты, – событиями. Каждый класс сохраняется в отдельном файле с одноименным именем.

Оболочка, содержащая множество классов, объединённых общей тематикой, называется пространством имён. Имена классов внутри пространства имён не повторяются. В разных пространствах классы с одинаковыми именами не конфликтуют. Обращение к классу состоит из уникального имени пространства имён и собственного имени класса. Пространство имён может состоять из классов и других пространств.

Одним из основных пространством имен библиотеки FCL является пространство System, которое содержит другие пространства и классы, имеющие широкое употребление в различных проектах.

Единица компиляции называется проектом. Сборка является результатом компиляции проекта. Проект включает одно или несколько пространств имён. На начальном этапе создания проекта автоматически строится каркас проекта. Он состоит из классов, являющихся наследниками других классов, входящих в состав библиотеки FCL.

В проекте содержится: информация, необходимая для построения сборки; файлы с классами, созданные разработчиком проекта и построенные автоматически в момент создания проекта; ссылки на все подключаемые к проекту DLL, COM-объекты, другие проекты.

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

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

Каждый проект помещается в некоторую оболочку, называемую Решением – Solution. Оно может содержать несколько проектов, связанных общей темой.

Язык программирования С# использует набор символов:

• строчные и прописные буквы латинского алфавита;

• символ подчёркивания «_»;

• цифры от 0 до 9;

• набор специальных символов: " { }, [ ] + - % / \; ' : ? <> = ! & # ~ *.

Набор символов служит для построения слов – лексем.

Различают пять типов лексем:

• идентификаторы;

• ключевые слова;

• знаки (символы) операций;

• литералы;

• разделители.

Все типы лексем, кроме ключевых слов и идентификаторов, имеют собственные правила словообразования.

Для разделения лексем используется множество пробельных символов, к которым относятся пробел, табуляция, символ новой строки и комментарии.

Идентификаторы состоят из набора строчных и прописных букв, цифр, символа подчёркивания и строятся по определённым правилам:

• первым символом идентификатора может быть только буква;

• следующими символами идентификатора могут быть буквы, цифры и нижнее подчёркивание;

• длина идентификатора не ограничена.

Использование идентификаторов, которые начинаются с символа подчеркивания, нежелательно. Имена объектов должны иметь некоторый смысл, позволяющий облегчить восприятие и понимание последовательностей операторов.

Идентификаторы, входящие в фиксированный словарь, называются ключевыми словами. В качестве имён объектов их использовать нежелательно.

Для пояснения текста программы используются два вида комментариев. Комментарий, заключённый в символы /* Комментарий */, пропускается компилятором. Если комментарий начинается с символа //, то он заканчивается в конце строки, на которой он появился.

Язык программирования С# является типизированным языком. Каждый объект характеризуется своим типом, который указывает компилятору размер объекта и его свойства. Например, объект типа double занимает в памяти 8 байтов, объект Label может быть видим или невидим. Различают встроенные типы, определённые в языке, и пользовательские типы, которые выбирает программист. Типы могут быть размерные и ссылочные. Различие между ними определяет способ, которым их значения сохраняются в памяти. Размерные типы хранят своё фактическое значение в стеке, ссылочные – сохраняют в стеке лишь адрес объекта, а сам объект хранится в куче (основной памяти). Доступ к куче осуществляется намного медленнее, чем к стеку.

Систему типов можно разбить на две категории типов, каждая из которых разделена на подкатегории: типы значений, ссылочные типы и параметризованные типы (типы-шаблоны). Схема типов приведена на рисунке 2. [3, с.4-8]

Рисунок 2. Схема типов

Язык С# разработан прежде всего для платформы .NET (произносится как дот-нет), которая является средой, объединяющей программные технологии, для разработки Web- и Windows-приложений (отсюда и название).

Основу среды .NET составляет CLR (Common Language Runtime) - общеязыковая среда исполнения, которая состоит из двух основных частей:

• ядра (набор служб, управляющих загрузкой приложения в па­ мять, собраны в библиотеке mscoree.dll);

• библиотеки базовых классов (главная сборка в библиотеке mscorlib.dll).

Наряду с языком C#, в среде .NET в рамках указанной технологии могут быть использованы такие языки, как C++, VB.NET, VisualBasic, Jscript, J# и другие (всего более 30 языков). С одной стороны, язык С# можно считать непосредственным преемником языков С и С++. С другой стороны, нельзя не заметить в его составе многочисленные признаки языка Java.

Процесс создания приложения на C# в среде .NET представляет собой последовательность этапов, изображённую на рисунке 3. [4, с.4-5]

Рисунок 3. Очередность этапов создания приложений

2.3 JavaScript

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

JavaScript является высокоуровневым, динамическим, не типизированным и интерпретируемым языком программирования, который хорошо подходит для программирования в объектно-ориентированном и функциональном стилях. Свой синтаксис JavaScript унаследовал из языка Java, свои первоклассные функции – из языка Scheme, а механизм наследования на основе прототипов – из языка Self.

Название языка «JavaScript» может вводить в заблуждение. За исключением поверхностной синтаксической схожести, JavaScript полностью отличается от языка программирования Java. JavaScript давно перерос рамки языка сценариев, превратившись в надежный и эффективный универсальный язык программирования.

JavaScript был создан в компании Netscape на заре зарождения Веб. Название «JavaScript» является торговой маркой, зарегистрированной компанией Sun Microsystems (ныне Oracle), и используется для обозначения реализации языка, созданной компанией Netscape (ныне Mozilla). [5, с.21-22]

JavaScript был разработан Брендоном Айхом (сотрудником компании Netscape) и был включён в браузер Netscape Navigator, начиная с версии 2.0 в декабре 1995 года. Первоначально язык назывался Mocha (кофе мокко), затем был переименован в LiveScript. На синтаксис JavaScript оказали влияние такие языки, как С и Java. [7, с.114]

JavaScript – интерпретируемый язык программирования, стандартизированный международной организацией ECMA в спецификации ECMA-262. Языки JavaScript, JScript и ActionScript являются расширением стандарта ECMA-262.

Название «ECMAScript» явилось фактически компромиссом между организациями, вовлеченными в процесс стандартизации, в частности Netscape и Microsoft. Хотя JavaScript и JScript стремились к совместимости с ECMAScript, они имеют ряд дополнительных возможностей, не предусмотренных спецификацией ECMA. Синтаксис JScript во многом аналогичен языку JavaScript, однако, помимо добавления клиентских скриптов на веб-страницы и некоторых других функций, JScript может использоваться и для других целей, например: автоматизация администрирования систем Microsoft Windows; создание страниц ASP. [6, с.49-50]

JavaScript - прототипно-ориентированный язык сценариев, позволяющий включать в веб-страницы исполняемое содержимое (скрипты).

Прототипное программирование - стиль объектно-ориентированного программирования, при котором отсутствует понятие класса, а наследование производится путём клонирования существующего экземпляра объекта - прототипа.

JavaScript выполняется на стороне клиента, и поддержка JavaScript включена практически во всех браузерах. С помощью JavaScript можно создавать как статические HTML страницы, так и страницы с динамически изменяемым содержанием.

Роль JavaScript заключается в расширении возможностей пользователя, облегчая для него получение и передачу информации. Возможности пользователя не должны зависеть от JavaScript, но JavaScript может расширить эти возможности. Сделать это можно разными способами. Вот несколько примеров:

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

• Сортировка столбцов таблицы, упрощающая поиск нужной пользователю информации.

• Сокрытие части содержимого и раскрытие элементов с подробными сведениями по выбору пользователя.

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

JavaScript позволяет:

• добавлять различные эффекты анимации элементам веб-страницы;

• реализовывать поведение веб-страницы в ответ на события (перемещение указателя мыши, нажатие клавиш с клавиатуры и т. д.);

• осуществлять проверку ввода данных в поля формы до отправки на сервер, как следствие снижение нагрузки на сервер;

• извлекать данные о компьютере посетителя (посредством cookie-файлов);

• определять тип пользовательского браузера и, соответственно, загружать веб-страницу, ориентированную на данный браузер;

• изменять содержимое html-элементов, добавлять новые теги, изменять стили.

Существуют также и ряд ограничений:

• нельзя закрыть окна и вкладки, открытые без использования JavaScript;

• нет защиты исходного кода страницы;

• нельзя запретить копирование текста или изображений со страницы;

• нельзя получить доступ к веб-страницам, расположенным на другом домене;

• нет доступа к файлам, расположенным на компьютере пользователя (вообще нет доступа куда - либо за пределами веб-страницы).

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

Новая парадигма программирования клиентских сценариев, известная как ненавязчивый JavaScript'raw (unobtrusive JavaScript), получила широкое распространение в сообществе разработчиков веб-приложений. [7, с.111-112]

    1. Python

Python – это свободно-распространяемый, многоплатформенный (кроссплатформенный), интерпретируемый, объектно-ориентированный язык программирования высокого уровня, предназначенный для решения самого широкого круга задач.

Python является:

– свободно-распространяемым языком программирования. Это означает, что все исходные тексты интерпретатора и библиотек языка распространяются бесплатно и доступны для любого использования, включая коммерческое. Бесплатно загрузить дистрибутивы Python можно с официального сайта http://www.python.org;

– многоплатформенным (кроссплатформенным) языком программирования, работающим более чем на одной аппаратной платформе и/или операционной системе. На официальном сайте http://www.python.org представлены версии интерпретатора языка Python практически для всех операционных систем, включая UNIX, Windows и Macintosh;

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

– объектно-ориентированным языком. Это означает, что основными концепциями языка являются понятия объектов и классов. Практически все данные в Pythonе являются объектами. Т.е. данные сохраняются в объекте определенного типа, имеющем свой набор атрибутов и методов. А в переменной всегда сохраняется только ссылка на объект, а не сам объект;

– высокоуровневым языком программирования, языком основной чертой которого является обеспечение независимости сути алгоритмов от параметров ЭВМ (платформы). Зависимость от платформы перекладывается на программы-трансляторы (компиляторы и/или интерпретаторы), преобразующие текст, написанный на языке высокого уровня, в элементарные машинные команды конкретной ЭВМ.

Язык Python является универсальным языком. С его помощью можно обрабатывать различные данные, работать с базами данных, создавать изображения, разрабатывать Web-сайты, приложения с графическим интерфейсом, компьютерные игры.

Известные фирмы используют язык Python и приложения, написанные на нем: IBM, Yahoo!, Google.com, Hewlett Packard, Infoseek, NASA, Red Hat, CBS MarketWatch, Microsoft.

На этом языке написаны (или частично используют его):

- Mailman – менеджер списков рассылки (mailing list manager), ставший официальным менеджером списков рассылки проекта GNU;

- Medusa – архитектура для высокопроизводительных надежных TCP/IP серверов, таких как HTTP, FTP, NNTP, XML-RPC и SOAP;

- Zope – сервер Web-приложений (Web application server). Также на Python написаны (или используют частично): outube, DropBox, Google (используется интенсивно в различных приложениях), Instagram, BitTorrent, Mercurial, World of Tanks, Civilization IV, Eve Online, Battlefield 2.

Разработка языка Python была начата в конце 1980-х гг. сотрудником голландского института CWI Гвидо ван Россумом.

Название языка произошло вовсе не от вида пресмыкающихся. Автор назвал язык в честь популярного британского комедийного телешоу 1970х «Летающий цирк Монти Пайтона». Однако название языка чаще ассоциируют со змеей, а не с вышеупомянутой передачей.

Наличие отзывчивого сообщества пользователей считается наряду с дизайнерской интуицией Гвидо одним из факторов успеха Python. Развитие языка происходит согласно чётко регламентированному процессу создания, обсуждения, отбора и реализации документов PEP (англ. Python Enhancement Proposal) – предложений по развитию Python.

Разработчики языка Python придерживаются определённой философии программирования, называемой «The Zen of Python» («Дзен Python»). Её текст выдается интерпретатором Python по команде import this на английском языке и работает один раз за сессию. Автором этой философии считается Тим Петерс.

В 2008 г. после длительного тестирования вышла первая версия Python 3000 (или Python 3.0, также используется сокращение Py3k). В Python 3000 устранены многие недостатки архитектуры с максимально возможным (но не полным) сохранением совместимости со старыми версиями Python. [9, с.16-18]

Есть несколько важных шаблонов, которые используются при построении программы. Эти конструкции относятся не только к Python, они являются частью любого языка программирования, начиная от машинного языка и заканчивая языками высокого уровня.

-Входные данные (input): получение данных из внешнего мира. Это может быть чтение данных из файла или из других источников, например, микрофона или GPS.

-Выходные данные (output): отображение результатов работы программы на экране, сохранение их в файл или, возможно, воспроизведение в виде музыки или голоса.

-Последовательное исполнение (sequential execution): инструкции выполняются в том порядке, в котором они встречаются в скрипте.

-Условное выполнение (conditional определенных условий и последовательности инструкций. execution): проверка выполнение/пропуск.

-Повторное выполнение (repeated execution): выполнять некоторый набор команд несколько раз, обычно с некоторыми изменениями.

-Повторное использование (reuse): один раз написать набор инструкций, присвоить ему имя и затем повторно использовать этот набор во всей программе. [10, с.15]

    1. VBA

При работе с приложениями Microsoft Office часто возникает задача их автоматизации. Одним из ее решений является использование VBA.

VBA (Visual Basic for Applications) – это язык программирования, поддерживаемый всеми приложениями пакета Microsoft Office.

VBA относительно прост и удобен в освоении и позволяет быстро полу­чить ощутимые результаты – конструировать профессиональные приложения для решения практически любых задач в среде Microsoft Office. [11, с.11]

С помощью языка VBA возможно решение ряда задач, в том числе:

• автоматизации часто повторяющихся операций;

• создания новых команд и закрепления удобных способов для их вызова;

• создания новых кнопок на панели инструментов;

• создания пользовательских диалоговых окон и форм с определенным интерфейсом;

• ускорения процедуры редактирования и форматирования и др.

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

Одно из преимуществ языка VBA состоит в том, что он относится к объектно-ориентированным языкам программирования.

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

Основными понятиями и терминами языка VBA являются:

• атрибут – характеристика, назначенная элементу класса (например, свойству или методу);

• класс – определение структуры и поведения объектов определенного типа;

• конструктор – особый метод, который вызывается при создании экземпляра класса;

• тип данных – определенные виды данных, которые VBA сохраняет и которыми может манипулировать;

• оператор «точка» – знак точки (.), который служит для указания того, что имя относится к дочернему элементу объекта (например, к свойству или методу);

• экземпляр класса – фактический объект, созданный в программе.

Основными принципами объектно-ориентированного программирования являются инкапсуляция, наследование и полиморфизм.

Инкапсуляция представляет собой объединение данных и свойственных им процедур обработки в одном объекте. В результате пользователь взаимодействует с интерфейсом, не сталкиваясь с реализацией программного компонента.

Наследование – создание новых классов на базе существующих с частично или полностью заимствующейся функциональностью.

Полиморфизм предоставляет возможность объектам с одинаковой спецификацией иметь различную реализацию. Элементы проекта языка VBA независимо от приложения, в котором создается проект (MS Word, MS Excel, MS Access и т. д.), язык VBA включает в себя интегрированную среду разработки – редактор Visual Basic. [15, с.5-7]

Интегрированная среда разработки VBA представлена приложением, на­зываемым редактор Visual Basic, который активизируется командой Сервис —> Макрос —> Редактор Visual Basic или нажатием комбинации клавиш Alt + F11.

Окно редактора VBA включает следующие основные элементы: строка меню, панель инструментов, окна: проект, свойства, редакти­рование кода, конструктор форм.

Программа не является самостоятельным структурным элементом в иерар­хии объектов языка VBA, поэтому редактор VBА распознает по именам не про­граммы, а процедуры, модули и проекты.

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

Модуль – именованная единица, состоящая из одной или нескольких процедур, или раздела, в котором объявляются переменные, кон­станты, пользовательские типы данных, а также устанавливаются парамет­ры компилятора.

Проект включает в себя все модули, формы и связанные с приложением объекты, относящиеся к конкретному документу, причем проект сохраняется вместе с этим документом.

Наименьшей единицей VBA-кода является оператор. Он предназначен для определения переменной, установки параметров или выполнения какого-либо действия в программе.

Для выполнения программного кода в редакторе VBA используется команда Run —> Run Sub / UserForm либо кнопка Run Sub / UserForm на панели ин­струментов, либо функциональная клавиша F5.

Кроме того, для правильной работы книг, содержащих разработанные пользователем программы на языке VBA, необходимо изменить уровень безопасности на «средний», воспользовавшись командой Сервис —> Макрос —> Безопасность. [11, с.12]

В данной главе были рассмотрены популярные языки программирования по результатам аналитики голландской компании TIOBE Software. Языки: C#, JavaScript, Python входят в ТОП-7 в рейтинге по состоянию на сентябрь 2019 года. VBA был включен в список для рассмотрения с целью обучения программированию и применением его в практической части данной курсовой работы

ГЛАВА 3. ПРАКТИЧЕСКАЯ ЧАСТЬ

3.1 Постановка задачи.

АО «Кселл» является оператором сотовой связи. Отделу по обслуживанию корпоративных клиентов необходимо делать ежедневную рассылку на электронные адреса контактных лиц компаний. В письме должен быть прикреплен excel файл с абонентскими номерами, которые подлежат удалению из базы данных, по причине их длительного неиспользования.

Необходимо в среде VBA написать код, который будет по БИНу (бизнес-идентификационный номер) фильтровать нужную компанию и формировать письмо в программе Microsoft Outlook.

3.2 Анализ источника данных.

Список номеров для отправки на электронный адрес, сформирован в таблице, в формате «.xlsx», где:

msisdn – номер абонента (Mobile Subscriber Integrated Services Digital Number)

subscriber_name – наименование компании

bin – БИН (бизнес-идентификационный номер)

email – адрес электронной почты

bin

subscriber_name

msisdn

email

1111111

ТОО "Ромашка"

1234567

romashka@mail.ru

1111111

ТОО "Ромашка"

1234568

romashka@mail.ru

1111111

ТОО "Ромашка"

1234569

romashka@mail.ru

1111111

ТОО "Ромашка"

1234560

romashka@mail.ru

1111111

ТОО "Ромашка"

1234561

romashka@mail.ru

1111111

ТОО "Ромашка"

1234559

romashka@mail.ru

1111111

ТОО "Ромашка"

1234557

romashka@mail.ru

2222222

ТОО "ABC"

1234555

abc@mail.ru

2222222

ТОО "ABC"

1234553

abc@mail.ru

2222222

ТОО "ABC"

1234551

abc@mail.ru

3333333

АО "Макрос"

1234549

macros@mail.ru

3333333

АО "Макрос"

1234547

macros@mail.ru

Рисунок 4. Номера, подлежащие удалению

    1. Алгоритм решения задачи. Написание кода в среде VBA.

Необходимо создать файл с поддержкой макросов в формате «.xlsm», называем его «delete.xlsm».

Для отправки файла, с номерами на удаление, определенному клиенту из исходной таблицы необходимо сформировать сводную таблицу, на листе «Pivot», в которой настроить фильтр по полю «bin»:

Рисунок 5. Поля сводной таблицы

Присваиваем таблице имя «Numbers». В ячейке С1 пишем формулу со ссылкой на название отфильтрованной компании из сводной таблицы:

С1="Нижеуказанные номера, оформленные на компанию "&$A$6 & " подлежат удалению:"

Рисунок 6. Таблица «Numbers»

В книге Excel создаем лист, называем его «Glossary». В ячейку А1 вставлякм заранее согласованный текст, который будет вставлен в окно MS Outlook: «Добрый день. Запрашиваемый перечень номеров во вложенном файле.». В ячейку В2, делаем ссылку на поле сводной таблицы из листа «Pivot», со ссылкой на электронный адрес компании.

Открываем «Разработчик» в панели управления, создаем «Module1», где пишем код:

Sub outlook()

Application.ScreenUpdating = False

Application.EnableEvents = False

Dim pt As PivotTable

Dim Field As PivotField

Dim bin As String

Dim name As String

Dim email As String

Dim body As String

Dim Path As String

bin = Workbooks("Delete.xlsm").Sheets("Report").Range("D5")

name = Workbooks("Delete.xlsm").Sheets("Glossary").Range("B1")

email = Workbooks("Delete.xlsm").Sheets("Glossary").Range("B2")

body = Workbooks("Delete.xlsm").Sheets("Glossary").Range("A1")

Application.ScreenUpdating = False

Application.EnableEvents = False

Workbooks("Delete.xlsm").Sheets("Pivot").Visible = True

Workbooks("Delete.xlsm").Sheets("Report").Visible = True

Workbooks("Delete.xlsm").Sheets("Glossary").Visible = True

Workbooks("Delete.xlsm").Sheets("Pivot").Activate

ActiveSheet.PivotTables("Numbers").PivotFields("bin").ClearAllFilters

Set pt = ThisWorkbook.Sheets("Pivot").PivotTables("Numbers")

Set Field = pt.PivotFields("bin")

Field.CurrentPage = bin

Workbooks("Delete.xlsm").Sheets("Pivot").Range("C:C").Select

Selection.SpecialCells(xlCellTypeVisible).Select

Selection.Copy

Set NewWorkbook = Workbooks.Add

NewWorkbook.Windows(1).Caption = bin

Selection.PasteSpecial Paste:=xlPasteValues

Selection.PasteSpecial Paste:=xlPasteFormats

ActiveWorkbook.Sheets("Sheet1").Range("A:A").ColumnWidth = 112

ActiveWorkbook.Sheets("Sheet1").Rows("1:1").Select

Selection.EntireRow.AutoFit

Application.ScreenUpdating = True

Application.EnableEvents = True

Dim outlook As Object

Dim outlookMail As Object

Set OutlookApp = CreateObject("Outlook.application")

Set outlookMail = OutlookApp.CreateItem(0)

With outlookMail

.To = email

.CC = ""

.BCC = ""

.Subject = "Номера на удаление" & name

.body = body

.Attachments.Add Path & "\" & bin & ".xlsx"

.Display

End With

Set OutMail = Nothing

Set OutApp = Nothing

ActiveWorkbook.Close saveChanges:=False

Workbooks("Delete.xlsm").Sheets("Pivot").Visible = False

Workbooks("Delete.xlsm").Sheets("Glossary").Visible = False

End Sub

ЗАКЛЮЧЕНИЕ

В результате выполнения курсовой работы был изучен теоретический материал по современным языкам программирования, история развития языков программирования, основные понятия и классификация языков программирования.

Был сделан обзор наиболее популярных по состоянию на 2019 год языков программирования. Для изучения были выбраны языки: C#, JavaScript, Python и VBA. В результате проведенного исследования в практической части данной курсовой работы был применен язык программирования VBA.

В практической части в среде VBA я написала код, с помощью которого формируется письмо для клиента АО «Кселл», с вложением электронной таблицы со списком номеров. Также в практической части были применены такие возможности MS Excel как:

  1. Формулы
  2. Сводная таблица

Опираясь на изученный материал, можно сделать следующие выводы:

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

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

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1. Программирование: учебное пособие / В. М. Зюзьков. - Томск: Эль Контент, 2013. -186 с.

2. Введение в программирование: учебное пособие / Т. И. Волкова. - Москва; Берлин: Директ-Медиа, 2018. - 138 с.

3. Программирование на C# [Электронный ресурс]: учебное пособие в 2 ч. / В. В. Дубровин. - Тамбов: Изд-во ФГБОУ ВО «ТГТУ», 2017. - 81 с.

4. Язык C#: краткое описание и введение в технологии программирования: учебное пособие / О. М. Котов. - Екатеринбург: Изд-во Урал. ун-та, 2014. - 208 с.

5. JavaScript. Подробное руководство, 6-е издание. - Пер. с англ. / Флэнаган Д. - СПб: Символ-Плюс, 2012. -1080 с.

6. Технологии разработки Internet-приложений: учебное пособие / Е. В. Крахоткина. - Ставрополь: Изд-во СКФУ, 2016. - 124 с.

7. Технология разработки интернет ресурсов: учебное посо­бие (курс лекций) / сост. Журавлёва И. А. - Ставрополь: Изд-во СКФУ, 2018. - 171 с.

8. Введение в программирование: Учебное пособие/И.Ю. Баженова, В.А. Сухомлин. - М.: Интернет - Университет информационных технологий; БИНОМ. Лаборатория знаний, 2007. - 327 с.

9. Основы программирования на языке высокого уровня Python: учебное пособие / В. М. Шелудько; Южный федеральный университет. - Ростов-на-Дону; Таганрог: Издательство Южного федерального университета, 2017. - 146 с.

10. Введение в программирование на Python Введение в программирование на Python / Ч. Северенс - М.: Национальный Открытый Университет "ИНТУИТ", 2016. – 231 с.

11. Офисное программирование. Лабораторный практикум: учеб. пособие / А. Э. Рутковская. - Минск: РИПО, 2017. - 146 с.

12.  Основы алгоритмизации и программирования: учеб. пособие / Т. В. Лубашева, Б. А. Железко. - Минск: РИПО, 2016. - 378 с.

13. Основы программирования для автоматизированных систем проектирования и управления инновациями: учебное пособие для студентов, обучающихся по направлению подготовки бакалавров "Инноватика" / А. В. Романенко, А. И. Попов. - Тамбов: Изд-во ФГБОУ ВПО «ТГТУ», 2014. - 96 с.

14. Языки и методы програмирования: учебное пособие / И.И. Мирошниченко, Е.Г. Веретенникова, Н.Г.Савельева - Ростов н/Д: Издательско-полиграфический комплекс Рост. гос. экон. ун-та (РИНХ), 2019. - 188 с.

15. Офисное программирование: учеб. пособие / Б. А. Железко, Е. Г. Новицкая, Г. Н. Подгорная. - Минск: РИПО, 2017. - 100 с.