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

Обзор языков программирования высокого уровня (Операторы присваивания)

Содержание:

ВВЕДЕНИЕ

Сегодня программирование является одной из наиболее бурно развивающихся отраслей производства программных продуктов. Еще в конце прошлого столетия общение с компьютерами реализовывалось исключительно с помощью программирования, именно поэтому программирование стали изучать фактически во всех учебных заведениях. Шло время, информационные технологии развивались, общение с компьютерами стало происходить при помощи готовых компьютерных программ. Современные прикладные пакеты программ содержат также дополнительные средства, при помощи которых пользователи могут расширять функциональные возможности имеющегося программного обеспечения. Так, например, практически в любом пакете MicrosoftOfficeимеется среда программирования языка VBA (VisualBasicforApplications). Таким образом, под программированием понимается принципиально новый подход, который является обязательным пунктом в процессе подготовки специалистов информационных технологий [7].

В настоящее время профессиональному программисту для решения поставленных задач приходится оперировать сразу несколькими языками программирования. Поэтому выпускники высших учебных заведений должны владеть программированием на разных языках и в различных инструментальных средах [2].

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

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

  • операторы присваивания;
  • операторы ввода и вывода информации;
  • операторы перехода;
  • операторы выбора;
  • операторы циклов.

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

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

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

Предмет исследования – основные операторы языков программирования высокого уровня.

Цель работы – рассмотреть базовые конструкции языков программирования. Для достижения данной цели предстоит решить ряд задач:

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

При написании работы в качестве опорных источников были использованы следующие: М.А. Ревенко – «Практикум по программированию на языке TurboPascal» и Л.И. Долинер – «Основы программирования в среде PascalABC.NET».

ГЛАВА 1. ЯЗЫКИ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ

1.1 История развития

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

Первым программистом в истории человечества принято называть Аду Лавлейс, которая составила предписания для аналитической машины Чарльза Бэббиджа. Стоит отметить, что данное вычислительное устройство существовало лишь в проекте. В его основе лежали не электрические сигналы, а механические узлы. Кроме того, машина Бэббиджа должна была быть оснащена паровым двигателем (в 1830-е годы это было вершиной техники). Для ввода программы предполагалось использование перфокарт. Однако данная машина так и не была спроектирована.

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

Переход от машинных кодов к ассемблеру позволил увеличить производительность труда программистов и сократить время написания программ. Кроме того, языки ассемблеров позволили увеличить качество и надежность программ за счет меньшего количества возможностей внесения ошибок в программу. Однако было и несколько недостатков. Так, например, программа, написанная на ассемблере, не является понятной компьютеру, и требует переводчика. Также важно отметить, что программы на ассемблере не являлись переносимыми. Это говорит о том, что при смене вычислительной машины программы становились бесполезными, и их приходилось переписывать заново [17].

Следующим этапом стало появление языка Фортран, основным предназначением которого была реализация математических вычислений. Он отличался хорошим качеством получаемых программ, а также развитыми средствами ввода-вывода информации. Кроме того, Фортран содержал собственную библиотеку стандартных программ. Данный язык разрабатывался в 1954-1956 годы крупной группой специалистов компании IBM под руководством Дж. В. Бэкуса. В июне 1956 г. была выпущена вторая версия данного языка – Фортран II, которая отличалась наличием подпрограмм, а также операторов связи между программными единицами [11].

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

Параллельно с развитием языков программирования велись разработки операционных систем, что послужило появлению системы UNIX. Данная система была написана на языке ассемблера, что служило барьером в ее изучении. Поэтому для упрощения системного программирования Д. Ритчи и Б. Керниган разработали язык С, на котором данная система была переписана. Важно отметить, что UNIX-системы используются и сегодня.

Дальнейшее развитие языков программирования связано с появлением объектно-ориентированной технологии, которая должна была упростить написание крупных программ промышленных масштабов. Примером одного из первых языков объектно-ориентированного программирования является С++, разработанный Б. Страуструпом.

Последнее десятилетие XX века ознаменовалось развитием глобальной сети Internet, что также послужило толчком к созданию новых технологий. В этот период максимальную популярность обрел язык Java, который позволяет в кратчайшие сроки писать крупные приложения без опасений навредить системе. Данный язык характеризуется переносимостью своих программ [18].

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

Существует несколько признаков классификации языков программирования, рассмотрим лишь основные из них.

По степени абстракции от аппаратуры принято выделять следующие виды языков:

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

Еще одним признаком классификации является парадигма программирования. С этой точки зрения все языки программирования делятся на:

  • процедурные – проблемно-ориентированные языки, облегчающие исполнение процедур. Они бывают нескольких видов:
    • структурные – один оператор позволяет записывать целые алгоритмические структуры – циклы, ветвления и т.п.;
    • операционные – используют несколько операторов для записи одной алгоритмической конструкции. Неструктурное программирование позволяет использовать в явном виде оператор безусловного перехода;
    • параллельные – языки реального времени, поддерживающие параллельные вычисления. Программа, написанная на одном из таких языков, представляет собой совокупность описаний процессов, которые могут исполняться одновременно;
  • непроцедурные – описывают саму задачу. Делятся на:
    • функциональные – программы на таких языках обычно вычисляют значение некоторой функции, задающейся в виде композиции более простых функций. Одним из ключевых элементов данного языка является наличие рекурсии;
    • логические – языки, базирующиеся на классической логике. Основным их применением является логический вывод, например, экспертные системы. С точки зрения логического подхода программа представляет собой совокупность логических высказываний и правил[3];
  • объектно-ориентированные – языки, в основе которых лежит понятие объектов и их свойств, а также отношений между этими объектами [4].

1.3 Основные понятия

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

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

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

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

Характерные черты исполнителя алгоритма (см. рисунок 1):

Рисунок 1 – Характерные черты исполнителя алгоритма

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

Важно отметить, что исполнитель не вникает в смысл выполняемых им действий – его действия формальны, отвлечены от содержания поставленной цели и строго соответствуют алгоритму [8].

В настоящее время существует несколько форм записи алгоритмов (см. рисунок 2):

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

Рисунок 2 – Формы представления алгоритмов

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

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

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

Приведем пример записи алгоритма вычисления НОД двух чисел в построчной записи:

  1. ВводA, B
  2. ЕслиA = B, переход к шагу 8
  3. Если A>B, переход к шагу 6
  4. B = B – A
  5. Переход к шагу 2
  6. A = A – B
  7. Переход к шагу 2
  8. НОД = А
  9. Вывод НОД
  10. Конец

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

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

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

На территории нашей страны действует единая система программной документации (ЕСПД), сформировавшаяся в 1981 г. Данная система описывает условные графические изображения, которые применяются в алгоритмах (ГОСТ 19.003-80 «Схемы алгоритмов и программ. Обозначения условные графические»), а также набор правил, которые следуют соблюдать при записи блок-схем (ГОСТ 19.002-80 «Схемы алгоритмов и программ. Правила выполнения»).

На сегодняшний день существует целое множество программных продуктов, облегчающих построение блок-схем. К ним относятся такие программы, как MicrosoftVisio, Dia, OpenOffice.orgDrawи т.п.

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

Рисунок 3 – Блок ввода/вывода

Рисунок 4 – Вычислительный блок (блок обработки данных)

Рисунок 5 – Блок принятия решения (проверки условия)

Рисунок 6 – Блок начала/конца программы

Рисунок 7 – Блок начала цикла

Рисунок – конца

В данной описана развития программирования, их а рассмотрено алгоритма.

ГЛАВА 2. ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКОВ 

2.1 Присваивания

Дальнейшее операторов программирования уровня вести примере Паскаль. выбор простотой и синтаксисом.

В Паскаль присваивания двумя «:=», которыми ставится В части оператора стоять а правой – значение будет переменной.

Очень в можно конструкцию p:=p+1. запись содержит Внутри данный выполняется образом: берется значение к прибавляется После действий вычислений в p. образом языке реализуется переменной.

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

Для реализации присваивания задачу гипотенузы по известным Согласно Пифагора, будет по

(1)

Таблица – арифметические над integer

Операция

Обозначение

Пример

Сложение

+

p 2

Вычитание

-

p–

Умножение

*

p 2

Деление

div

p 2

Остаток деления

mod

p 2

Исходный программы:

Program

var

a,b,c:real;

begin

a:=3;

b:=4;

c:=sqrt(a*a+b*b);

end.

В программе только присваивания. этом двух переменным присваивается значение это треугольника. в случае вычисление определяющего из квадратов

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

2.2 Ввода-вывода

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

В Паскаль ввода-вывода называть Они для данными программой внешними Так, можно данные клавиатуры, файла, данные экран в

Для с в Паскаль два Readи Для на – Writeln. «ln» от слова - линия. заканчивающиеся «ln» результате действий курсор новую Так, при оператора курсор на позиции последнего символа. в оператора очередные будут из же где курсор.

Традиционная данных содержит однако, может не В случае Writeln реализовывать переход новую а Readlnбудет ввода клавиши.

Кроме вывода в Паскаль и вывод, существует того, сделать на более Форматированный содержит позиций, при необходимо под переменной

В примера операторов модифицируем определения прямоугольного следующим

Program

uses

var

a,b,c:real;

begin

write('Катет =

readln(a);

write('Катет =

readln(b);

c:=sqrt(a*a+b*b);

writeln('Гипотенуза ',c:3:2);

writeln('Для нажмите клавишу...');

readln();

end.

В программе операторы исходных – прямоугольного Для результата экран форматированный Результаты программы на 9.

Рисунок – работы операторами

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

Рисунок – работы ввода параметров

2.3 перехода

В Паскаль два операторов – и

Оператор перехода передачу оператору, предшествует метка. отметить, данный не к [16].

Рассмотрим программы использованием безусловного

ProgramOp_goto;

usescrt;

labelm1;

var

a:

begin

a:=5;

goto

a:=a*10;

m1: = a);

end.

Рассмотрим действий программы. первую переменной присваивается 5. в встречается безусловного который компьютеру о что оператор, исполнению, меткой Следовательно, действия – результата экран, не значения на Важно что a:=a*10 данной не никогда.

Результат данного приведен рисунке

Рисунок – работы оператором перехода

Другой оператора – переход. оператор для одной двух ветвей в от некоторого [20].

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

  • логическое –
  • логическое –
  • отрицание not;
  • исключающее -

В Паскаль условные с и ветвями. в операторе две такой называется (см. 12), противном – (см. 13)

Рисунок – ветвление

Рисунок – ветвление

В примера использующей ветвления, следующий

Program

uses

var

a,b,c:

begin

write('Введите треугольника:

read(a,b,c);

if or or

then ('Такого не

else

begin

if and then ('Минимальнаясторонаа ',a)

else (b<a) (b<c) writeln b ',b)

else ('Минимальная с ',c);

if then 50');

end;

end.

В программе запрос данных треугольника. происходит введенных – ли с сторонами. том если не пользователь соответствующее (см. 15), – определяет сторону выводит на

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

Рисунок – работы полного

Рисунок – работы неполного

2.4 выбора

В случае, в операторе использовать чем ветви, пойти путями:

  • использовать условия;
  • использовать выбора.

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

Case&lt;ключ&gt;of

C_1:

C_2:

C_N:

else&lt;операторы

end;

В записи называется порядкового в от которого принимается Значениями C_2, C_N константы возможные значения которые рассмотреть вычислениях. значениям блоки которые если ключа со C. же ключа совпало с из констант, блок Важно что блок отсутствовать

В примера оператора рассмотрим определения года введенному

Program

uses

var

m:

begin

write(&apos;Введите месяца:

readln(m);

case of

1,2,12: года зима');

3,4,5: года весна');

6,7,8: года лето');

9,10,11: года осень');

elsewriteln(&apos;Такого не

end;

end.

В программе оператор который качестве использует несколько операторы которых Данный является удобным позволяет число программы 13 5. выполнения кода на 17.

Рисунок – работы оператором

2.5 цикла

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

  • цикл предусловием while. из цикла его (см. 18). условие будет значение тело будет

Рисунок – цикла предусловием

Как из если цикла самого имеет «Ложь», тело ни не исполнено. в исполнения условие принимает «Истина», цикл исполняться – зацикливание. означает, в допущена Пример цикла предусловием:

Program

uses

var

N, integer;

begin

write(&apos;Введитецелоечисло =

readln(N);

writeln(&apos;Степени 2, превосходящие N);

p:=

while <= do

begin

write(p,&apos;

p:= *

end;

writeln();

end.

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

Рисунок – работы с

  • цикл постусловием repeat-until. данном сначала тело после проверяется записанное блоке (см. 20).

Рисунок – цикла постусловием

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

ProgramOp_post;

usescrt;

varm, sum:

begin

write(&apos;N ');

read(N);

m:=0;

sum:=0;

repeat

m:=m+1;

sum:=sum+m;

until

writeln первых чисел ',

end.

В программе сумма N чисел. задается с [12];

Рисунок - работы с

  • цикл параметром for. цикл заданное раз. две записи цикла зависимости от каким должна переменная Если должна используется

for&lt;переменная_цикла&gt;:=

Если переменная должна используется запись:

for&lt;переменная_цикла&gt;:= [14].

Чаще данный используется обработке Рассмотрим подобной

Program

uses

var n, a:

begin

write(&apos;N ');

readln(n);

write(&apos;Введите элементов ');

sum:=0;

for to do

begin

read(a);

sum:=sum+a;

end;

writeln(&apos;Сумма элементов ',

end.

В программе пользователя размерность а и массив. результате программы сумма элементов. выполнения кода на 22.

Рисунок - работы с

В главе основные языков высокого на языка

ЗАКЛЮЧЕНИЕ

В работе рассмотрена основных программирования уровня.

Первая работы теоретический описывая понятие программирования, историю которая несколько

  • машинные
  • ассемблеры;
  • алгоритмические
  • процедурные
  • объектно-ориентированные

В от аппаратуры, которой языки их делить следующие

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

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

Существует способов алгоритмов:

  • словесное
  • построчная
  • блок-схема;
  • запись языке

Во главе основные языка Паскаль:

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

Описание операторов примерами, решение задач.

СПИСОК ЛИТЕРАТУРЫ

  1. Анисимов Практикум основам – Изд-во университет», – с.
  2. Баженова Языки – Издательский «Академия», – с.
  3. Бузыкова Языки технологии / Бузыкова, Жданова, Шувалова. Хабаровск: Тихоокеан. ун-та, – с.
  4. Волкова Основы программирования. программирования / Волкова, Иванов, Карпов. М.: отдел ВМК 2011. 112
  5. Грациановаа Программирование примерах задачах. М.: 2015. 354
  6. Диканев Принципы алгоритмы программирования Т.В. С.Б. И.В. – Изд-во ун-та, – с.
  7. Долинер Основы в PascalABC.NET. Екатеринбург: Урал. 2014. 128
  8. Дронова Основные модели: пособие. Барнаул: 2016. 158
  9. Зюзьков Программирование. Томск: Контент, – с.
  10. Котликова Введение Турбо – Изд-во гос. 2016. 32
  11. Лучников Программирование языке – ИрГУПС, – с.
  12. Овчинников Основы на ABC. Волгоград: МОУ № 2012. 27
  13. Ожикенов Сборник для лабораторно-практических по «Программирование». Алматы: УИЯиДК, – с.
  14. Попов Экспресс программирования Lazarus. СПб.: ИТМО, – с.
  15. Ревенко Практикум программированию языке – ВГПУ, – с.
  16. Стенгач Лекционный электронного «Информатика». Самара: России, гос. ун-т С.П. – с.
  17. Тюгашев Основы – Университет 2016. 160
  18. Федоров Основы на языка – Питер, – с.
  19. Цветков Язык Pascal. программирования – Павловск, Царского 2016. 46
  20. Ширяева Практикум курсу информатики» Е.В. М.Н. Т.Ф. – Изд-во 2015. 233