Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика и программирование алгоритмизация – от проблемы к программе. Курс лекций

.pdf
Скачиваний:
0
Добавлен:
09.08.2026
Размер:
416 Кб
Скачать

№ 2336

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ «МИСиС»

Кафедра автоматизированных систем управления

А.П. Смирнов

Информатика и программирование

Алгоритмизация – от проблемы к программе

Курс лекций

Рекомендовано редакционно-издательским советом университета

Москва 2014

УДК 004 C50

Р е ц е н з е н т канд. экон. наук, доц., проф. Ю.Ю. Костюхин

Смирнов, А.П.

С50 Информатика и программирование : алгоритмизация от проблемы к программе : курс лекций / А.П. Смирнов. – М. : Изд. Дом МИСиС, 2014. – 59 с.

ISBN 978-5-87623-780-4

Вкурсе лекций представлены особенности вычислительного процесса

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

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

УДК 004

ISBN 978-5-87623-780-4

А.П. Смирнов, 2014

2

ОГЛАВЛЕНИЕ

 

Введение...................................................................................................................

4

1. Особенности вычислительного процесса в компьютере.....................................

5

1.1. Двоичная система счисления........................................................................

5

1.2. Кодирование информации............................................................................

6

2. Основы построения алгоритмов ..........................................................................

9

2.1. Принципы описания алгоритмов..................................................................

9

2.2. Примеры построения алгоритмов типовых задач......................................

10

3. Алгоритмический язык Visual Basic. Основные сведения ................................

17

3.1. Историческая справка.................................................................................

17

3.2. Среда программирования Visual Basic 6.0..................................................

18

3.3. Основные конструкции языка ....................................................................

19

3.3.1. Алфавит ............................................................................................................

19

3.3.2. Переменные .....................................................................................................

20

3.3.3. Константы ........................................................................................................

20

3.4. Типы переменных .......................................................................................

21

3.4.1. Характеристики переменных.......................................................................

21

3.4.2. Способы задания типа ...................................................................................

22

3.5. Основные функциональные операторы .....................................................

23

3.5.1. Оператор присваивания.................................................................................

23

3.5.2. Оператор условного перехода......................................................................

23

3.5.3. Операторы цикла ............................................................................................

25

3.6. Операторы ввода и вывода информации....................................................

27

3.6.1. Операторы ввода значений переменных с клавиатуры..........................

27

3.6.2. Операторы вывода значений переменных на экран................................

29

3.7. Примеры типовых программ......................................................................

31

4. Алгоритмический язык Visual Basic. Более сложные структуры......................

35

4.1. Файловый ввод и вывод..............................................................................

35

4.2. Подпрограммы и их использование для написания сложных программ ....

38

4.2.1. Назначение подпрограмм..............................................................................

38

4.2.2. Типы подпрограмм.........................................................................................

38

4.2.3. Локальные переменные формы...................................................................

42

5. Операторы и функции, работающие с символьными данными........................

44

5.1. Ввод символов с целью управления действиями.......................................

44

5.2. Функции, работающие с таблицей ASCII-кодов........................................

45

5.3. Функции, работающие со строкой символов .............................................

45

6. Графика...............................................................................................................

50

6.1. Воспроизведение цвета...............................................................................

50

6.2. Операторы (Методы) изображения стандартных фигур............................

51

Библиографический список...................................................................................

58

3

ВВЕДЕНИЕ

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

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

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

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

Переход от алгоритма к программе наиболее прост на алгоритми- ческом языке серии Basic.

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

4

1. ОСОБЕННОСТИ ВЫЧИСЛИТЕЛЬНОГО ПРОЦЕССА В КОМПЬЮТЕРЕ

1.1. Двоичная система счисления

Компьютер является вычислительной машиной, которая работает в двоичной системе счисления. Форма представления числа зависит от основания системы. В привычной для нас десятичной системе счисления основанием является число 10. Любое число в десятичной системе счисления представляется последовательностью цифр от 0 до 9. Они располагаются по так называемым разрядам, каждый из которых соответствует определенной степени основания. Напри- мер, десятичное число 271 означает следующую сумму:

271 = 2 102 + 7 101 + 1 100.

Здесь и в дальнейшем звездочкой отмечена операция умножения. В двоичной системе счисления основанием является цифра 2. Со- ответственно число в этой системе изображается последовательно- стью цифр 0 или 1. В качестве примера представим число 271 в дво-

ичной системе в виде следующей суммы:

271 = 1 28 + 0 27 + 0 26 + 0 25 + 0 24 + 1 23 + 1 22 + 1 21 + 1 20.

Таким образом, в позиционной форме это число имеет сле- дующий вид:

100001111.

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

5

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

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

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

1.2. Кодирование информации

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

1.Арифметические операции: сложение, вычитание, умножение, деление.

2.Логические операции: «или», «и», «не».

3.Операции сравнения: «больше», «меньше», «равно», «не равно». Единовременно процессор производит только одну операцию.

Соответствующая команда дается в кодовой форме. Это так на- зываемая элементарная инструкция. Она схематически представ- лена на рис. 1.1.

6

КОП

 

А1

 

А2

 

А3

Рис. 1.1. Форма элементарной инструкции

Элементарная инструкция представляет собой строку двоичных символов (1 или 0). В начале строки стоит код операции (КОП). За- тем идут три адреса ячеек памяти, где находятся данные для указан- ной операции. Элементарная инструкция означает: взять число по адресу А1, взять число по адресу А2, произвести с ними указан- ную операцию, записать результат по адресу А3. При этом адрес А3 может совпадать с А1 или с А2.

Если требуется решить некоторую задачу, ее надо представить в виде последовательности элементарных инструкций. Результат такого пред- ставления называется программой. Немногим больше полувека назад не существовало другого языка для компьютера, кроме элементарных инст- рукций. Каждая инструкция пробивалась на отдельной перфокарте (дыр- ка – 1, отсутствие дырки – 0). Пачка перфокарт помещалась в устройство ввода, где фотоэлемент обеспечивал электрический импульс на месте дырки. Вероятность ошибок в написании программы была крайне велика. Серьезные программы отлаживались годами.

Неудобство такого программирования привело к созданию специ- альных языков. Первым появился так называемый ассемблер. Его инструкции состояли из десятичных кодов и букв. Для ввода про- граммы была создана простейшая клавиатура. Инструкции на ас- семблере переводились в элементарные инструкции (в двоичных ко- дах) специальной программой транслятором (написанным, естест- венно, в двоичных кодах). Затем появились так называемые алгорит- мические языки высокого уровня. В них инструкции стали называть- ся операторами. Операторы состояли из слов человеческого языка и обозначений элементарных операций. Однако процессор компью- тера воспринимает программу только в виде элементарных инструк- ций. Поэтому используется программа-транслятор, которая перево- дит операторы алгоритмического языка в двоичные коды.

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

ASCII (American Standard Coding for Information Interchange).

Единицей хранения информации в памяти компьютера является бит (bit – binary digit). Для удобства операций биты объединены

7

в байты (bite). Байт состоит из восьми битов. Таким образом, байт дает возможность представить 28 различных комбинаций нулей и единиц, т.е. 256 различных кодов. В таблице кодов ASCII строки 0–127 состав- ляют интернациональный стандарт, а строки 128–255 содержат нацио- нальный стандарт (в том числе национальный алфавит). Следует отме- тить, что стандарт ASCII используется в программах, работающих под управлением дисковой операционной системы MS-DOS. Появле- ние системы Windows привело к появлению других стандартов коди- рования. Однако стандарт ASCII продолжают использовать во многих приложениях.

Для представления чисел в двоичных кодах используется комбина- ция из двух байтов так называемое слово. В одном слове может быть закодировано целое число, не превышающее 216. Если учесть, что один двоичный разряд нужен для знака («+» или «–»), то максимальное це- лое число есть 215 = 32 768. При использовании комбинации из двух слов максимальное по абсолютной величине число (с учетом одного разряда на знак) составит 231 = 2 147 483 648. Вещественные числа (т.е. числа с дробной частью) кодируются, по меньшей мере, двумя словами (4 байта). При этом в представлении числа имеются две час- ти: мантисса значащие цифры, и порядок степень числа 10. Под порядок и знак отводится один байт.

8

2. ОСНОВЫ ПОСТРОЕНИЯ АЛГОРИТМОВ

2.1. Принципы описания алгоритмов

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

Основными элементами описания алгоритма являются перемен- ная и символы операций. Переменная это изменяемый числовой объект с фиксированным именем, которому соответствует опреде- ленная ячейка памяти компьютера. Форма имени зависит от языка программирования. Переменной можно присвоить численное значе- ние или значение другой переменной, например a = 5 или a = b. Справа от знака равенства может стоять не только число или имя пе- ременной, но и символ арифметической операции. Например, можно записать: a = b + c. Это означает в терминах элементарных инструк- ций: взять число по адресу А1 (это значение переменной b), взять число по адресу А2 (это значение переменной c), сложить их и запи- сать результат по адресу А3 (переменная a). Можно записать также a = a + c. Это означает: взять число по адресу А1 (это значение пере- менной a), взять число по адресу А2 (это значение переменной c), сложить их и записать результат по адресу А1 (вместо адреса А3). Таким образом, в ячейке памяти, соответствующей переменной a, старое значение заменится новым.

Вместо знака «+» может стоять знак любой другой арифметиче- ской операции.

Изменение знака переменной на противоположный знак, соответ- ствующее операции b = (–1) b, условимся записывать в виде b = b.

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

9

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

2.2. Примеры построения алгоритмов типовых задач

Пример 2.1. Составить алгоритм вычисления произведения k = nm без использования операции умножения.

Решение. Умножение, как известно из курса арифметики, есть по- следовательное сложение. Кстати говоря, операция умножения, включенная в число элементарных операций компьютера, реализова- на также последовательным сложением. Выше было отмечено, что операция добавления нового числа в некоторую ячейку памяти есть одна из операций присваивания. В данном случае нужно m раз сло- жить число n и записать в переменную k. Следовательно, нужно ис- пользовать присваивание k = k + n. Если мы сделаем начальное зна- чение k равным нулю и повторим указанную операцию присваивания ровно m раз, то достигнем искомого результата. Для того чтобы по- считать, сколько раз эта операция уже повторена, нужно поставить так называемый счетчик. Введем для этого переменную i, присвоим ей вначале значение «ноль», а затем будем повторять операцию i = i + 1 (т.е. добавлять единицу) всякий раз, когда выполняется опе- рация добавления числа n в переменную k. Нам осталось только по- ставить операцию сравнения значения i с числом m, чтобы закончить цикл. Итак, имеем следующий алгоритм:

1.Ввод значений n и m

2.k = 0

3.i = 0

4.k = k + n

5.i = i + 1

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]