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

Информатика

.pdf
Скачиваний:
22
Добавлен:
03.05.2015
Размер:
3.59 Mб
Скачать

И.А. Пахнутов

ИНФОРМАТИКА

с элементами программирования

Учебное пособие для студентов младших курсов высших учебных заведений

Калининград Издательство ФГБОУ ВПО «КГТУ»

2012

2

УДК 519.85:681.3.06(075)

УТВЕРЖДЕНО Ректором ФГБОУ ВПО

«Калининградский Государственный Технический университет»

АВТОР - Пахнутов И.А., к. ф.-м. н., доцент кафедры прикладной математики Калининградского государственного технического университета

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

Учебное пособие рассмотрено и одобрено кафедрой прикладной математики ФГБОУ ВПО «Калининградский Государственный Технический университет» 20 февраля 2012 г., протокол № 7

Учебное пособие рекомендовано к изданию методическим советом факультета фундаментальной подготовки 19 марта 2012 г., протокол № 8.

РЕЦЕНЗЕНТ - кафедра прикладной математики Калининградского государственного технического университета

© ФГБОУ ВПО «Калининградский государственный технический университет», 2012 г.

3

Bведение

Интеллектуальный и технический бум конца ХIХ - начала ХХ века породил массу новых разделов наук, так и новых наук вообще. При этом резко проявилась тенденция ученых к получению фундаментальных знаний, основ, базиса, попытки найти основные кирпичики знания, на которых строится (уже вследствие логики) все существующее здание науки. Нарастал информационный бум. И в этом также следовало разобраться. Что такое информация? Это, скорей всего, сообщение об изменениях в окружающей обстановке, т.е. должен быть носитель информации (сообщения), источник, передатчик, приемник информации, канал связи и т.д. Информация меняет наше отношение к окружающей действительности. Важна сравнительная оценка новизны: если не сообщается ни о каких изменениях (как было, так и есть), то не передается никакой информации (хотя все этапы передачи работают). Тем не менее, и в этом случае считается, что отсутствие информации – также является информацией (сообщением о том, что ничего нового не произошло).

Логики выяснили, что, в принципе, любую информацию можно получить, задавая "элементарные" вопросы, на которые достаточно отвечать лишь "да" или "нет". Каждый такой вопрос позволяет получить минимальный объем информации, называемый битом. Наименьшее количество элементарных вопросов, позволяющее получить необходимую информацию, определяет объем этой информации в битах. Например, чтобы угадать любое из первых 16 натуральных чисел, достаточно задать лишь четыре элементарных вопроса типа: "будет ли число меньше 9?". Если "нет", то "будет ли число меньше 13?" и т.д. Таким образом, информация о числах в этом диапазоне имеет объем 4 бит. Аналогично можно оценить объем информации о буквах, словах, цвете, картине, поэтическом произведении и т.д.

Каждый элементарный ответ можно обозначить цифрой 0 или 1 для "нет" и "да" соответственно. Поэтому произвольную информацию можно записать последовательностью нулей и единиц, а количество занятых при этом разрядов определяет количество бит информации. Всякое целое число также представляется последовательностью нулей и единиц в соответствии с тем, есть ли в представлении этого числа необходимая степень двойки. Например, число 27 можно записать в этих терминах так:

27 = 16 + 8 + 2 + 1 = 1 24 + 1 23 + 0 22 + 1 21 + 1 20 ,

4

последовательность коэффициентов этого двоичного представления есть 11011, что и является представлением числа 27 в системе счисления с основанием 2. Информация о таком числе имеет объем 5 бит.

Общее число символов, используемых в повседневной практике европейца, обычно не превосходит 256, что имеет объем 8 бит. В силу этого, либо в силу того, что первоначальные устройства обработки информации работали с восемью разрядами нулей и единиц, этот объем получил отдельное название байт, так что байт это 8 бит. В дальнейшем объем используемой информации возрастал быстрыми темпами, так что пришлось пользоваться единицей в 1К=1024 байт = 210 байт (килобайт), далее, в 1М = 220 (мегабайт), а также десятки, сотни и тысячи мегабайт (гигабайты).

Итак, каждое число можно заменить последовательностью нулей и единиц. Это дало мощный толчок к исследованию основ арифметических и логических операций, теории алгорифмов. Было показано, что алгоритмически всякое арифметическое действие сводится к последовательности логических операций над нулями и единицами и сдвигу регистра (т.е. фиксированного набора нулей и единиц). Пост и Тьюринг (США и Англия) сконструировали формально-логическую структуру, выполняющую простейший набор логических операций, в которой (привлекая теорию алгорифмов и формальных машин) можно запрограммировать любую арифметическую и логическую операцию (программы, правда, могли быть довольно длинными). К 30-м годам 20 века технология была развита достаточно для того, чтобы простейшие операции (типа тех, что рассматривали Пост и Тьюринг) можно было легко реализовать в электронных схемах (ноль соответствует отсутствию потенциала, единица - его наличию). Тем не менее, лишь в 40-х годах были созданы первые электронные вычислительные машины (ЭВМ), которые могли выполнять около тысячи арифметических операций в секунду. Позже согласились с тем, что поскольку простейшая логическая операция выполняется за один такт генератора частоты ЭВМ, быстродействие машины можно оценивать частотой этого тактового генератора.

В конце 50-х годов к изготовлению блоков ЭВМ стали привлекать полупроводники, а в конце 60-х и микросхемы. Физический объем ЭВМ значительно уменьшился (при увеличившемся объеме постоянной и оперативной памяти). В начале 80-х годов ЭВМ уже начали изготавливать на основе целых интегральных блоков – больших интегральных схем (БИС), что позволило создать компактные ЭВМ и персональные ЭВМ. Тактовая частота таких устройств уже превосходила 500 мегагерц (5 108 герц). При этом обрабатываемая информационная плотность = объем оперативной памяти на 1 см3 вычислительного устройства росла очень быстро (похоже, экспоненциально), такие же

5

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

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

6

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

Рассмотрим, например, алгоритм Эвклида нахождения наибольшего общего делителя двух многочленов: многочлен большей степени (Pn) делим на другой (Qm) и, если остаток от деления равен нулю, то наибольший делитель найден, в противном случае мно- гочлен-делитель делим на остаток и т.д. Логическую схему решения задачи можно представить в следующем виде (см. рис. 1):

 

 

 

 

Исходные

 

 

 

 

данные: Pn , Qm

 

 

 

ДА

 

 

 

 

 

 

 

НЕТ

n m?

 

 

 

 

 

 

 

U:= Pn

 

 

 

 

 

 

U:= Qm

 

 

 

 

 

 

V:= Pn

V:= Qm

 

 

 

 

 

 

 

 

 

 

 

 

m n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S:= U/V

 

 

 

 

 

 

R – остаток

 

 

 

 

 

 

k – степень

 

 

 

 

 

 

 

 

остатка

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ДА

 

 

 

НЕТ

 

 

 

 

 

 

 

 

U:= V

 

 

 

 

 

 

 

 

 

k = 0?

 

 

 

 

 

 

 

 

V:= R

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n:= m

НЕТ

 

 

 

 

 

 

 

 

m:= k

 

Общ.

 

 

 

 

R= 0?

 

 

 

 

 

 

 

 

 

 

 

 

делите-

 

 

 

 

 

 

 

 

ля нет

 

 

 

 

ДА

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Общий

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

делитель V

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 1

7

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

На начальном этапе обучения информатике полезно познакомиться с одним из наиболее простых языков программирования. Здесь будет взят для этой цели BASIC. Хотя изначально для этой цели предназначался PASCAL, однако, позднее он расширился по сравнению с оригинальной версией Н. Вирта до весьма структурированного профессионального языка программирования, приспособленного к работе в современных программных оболочках (Delphi). BASIC ( Beginner’s All-purpose Symbolic Instruction Code – язык программирования обще-

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

лочек Word, Excel, Acsess, Power Point, Corel Draw и др. Кроме того,

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

1)основы алгоритмического языка BASIC;

2)введение в Visual Basic и HTML, программирование приложений;

3)программная среда МATHCAD и введение в численный анализ. Многие языковые структуры имеют явно просматриваемую па-

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

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

экран ройствами: консоль вн. память, допускал непосредственный анализ

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

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

8

метаязык позволяет, в основном, справиться с проблемами пользователя. В основном. В сложных ситуациях все-таки используется некоторая модификация подходящего языка программирования, приспособленная для работы в данном пакете, которая позволяет пользователю "общаться" лишь с объектами этого пакета, его структурами (так назаваемое объектное программирование). Поэтому Visual Basic различается в указанных выше пакетах на объектном уровне, сохраняя свое принципиальное ядро от DOS-Basic. Это дает повод рассматривать элементы программирования в параллели Basic – Visual BASIC. Отметим, что наиболее интенсивно Visual BASIC используется в офисном пакете EXCEL, так что последний повсюду будет выполнять роль "носителя" этого языка, конкретную реализацию которого будем называть VBA (Visual Basic for Applications) в отличие от QB (Quick Basic) – распространенной DOS-версии языка. По этой причине в пособии не будут рассматриваться некоторые особенности языка QB, связанные, прежде всего, с прямым воздействием на оперативную пямять, на буфер обмена, с использованием команд ассемблера, с графическим режимом дисплея, использованием стэков, воспроизведением (музыкальных) звуков, сегментированием программ.

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

9

1. Общая часть

1.1.ОСНОВНЫЕ СТРУКТУРЫ

Сточки зрения обычной грамматики в языке BASIC естественно выделить следующие структуры (ниже в уголках – название

программной части, в [ ] – необязательная часть).

Структура: алфавит

слово

предложение программа

Алфавит: латинский алфавит кириллица

десятичные цифры

арифметические знаки

знаки сравнения

разделители специальные символы

Латинский алфавит, кириллица и десятичные цифры не требуют пояснения. Полезно лишь заметить, что поскольку рассматриваемые программные средства имеют происхождение в англоязычных странах, то основные языковые структуры описаны в терминах латинского алфавита, использование кириллицы неестественно, в некоторых случаях даже недопустимо. Арифметические знаки = {+, -, *, \, /, ^}, где "\" -

знак целочисленного деления, " ^ " - знак возведения в степень. Знаки сравнения = {<, =, >, =>, <=, <>}. Разделители = {"пробел", "enter –

перевод строки", =, .,",", ;, :, [, ], (, )} и др. (начало строки тоже можно считать разделителем). Специальные символы = { %, !, #, $, &, @, ?, ', _} и др. (первые пять символов позволяют явно указать тип переменной). Последовательность символов, не содержащую разделителей, следует называть словом или лексемой.

10

Слово:

 

число

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

строка

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

имя

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

служебное слово

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

метка

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

оператор

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

арифметическое выражение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

комментарий

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Число

 

 

 

 

 

 

 

 

 

целое без знака

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

знак: -,+

 

 

 

 

вещественное без знака

 

 

 

 

 

 

 

 

 

Целое без знака есть конечная последовательность цифр (длина последовательности определяется форматом соответствующего типа). Целое число может иметь предваряющий знак "+" или "-". Вещественное без знака – целое без знака, либо два целых без знака, разделенных (десятичной) точкой. Вещественное без знака может заканчиватьсч масштабным множителем вида EN, где N – целое со знаком, обозначающим степень десяти. Например, 2.381E-3 представляет вещественное число 2.38110-3 = 0.002381.

Вещественное число может иметь перед собой знак "-".

Строка есть произвольная последовательность символов (кроме кавычек), заключенная в кавычки.

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

Служебное слово – слово, участвующее в формировании операторов и управлении вычислительным процессом; смысл служебного слова не может быть изменен в программе.

Примеры некоторых служебных слов: AND, AS, BEEP, OR, XOR, NOT, CASE, DO, ELSE, FOR, GET, GO, IF, IN, IS, LIST, NEXT, OPEN, PUT, RUN, SET, и др.