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

инфопособие2013

.pdf
Скачиваний:
14
Добавлен:
04.06.2015
Размер:
6.14 Mб
Скачать

Рис. 8.7 Иллюстрация RGB и HSVкодирования

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

отводимый под запись значения амплитуды. Например, при записи на компакт-диски (CD) используются 16-разрядные значения, а частота дискретизации равна 44 032 Гц. Эти параметры обеспечивают превосходное качество звучания речи и музыки.

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

123

неотличимо от тишины. Чтобы на каждом периоде дискретизации записывалось два значения, нужна вдвое большая частота дискретизации, а именно 44 кГц. Когда высокое качество не требуется, можно использовать меньшие частоты дискретизации: 11 кГц, 5,5 кГц и т. д.Как и всякий звук, музыка является ни чем иным, как звуковыми колебаниями, и, закодировав их достаточно точно, еѐ .можно будет потом воспроизвести.

Контрольные вопросы и задания

1.Почему информация в ЭВМ представляется в виде 0 и 1?

2.Какие имена носят логические элементы?

3.Какие системы исчисления кроме двоичной вам известны?

4.Где сегодня применяют двенадцатеричную систему счисления?

5.Когда и где применялась алфавитная система счисления?

6.Какие системы счисления относятся к позиционным?

7.Переведите в двоичную систему число текущего года, вашего года рождения, номер вашего студенческого билета.

8.Сложите, затем перемножьте следующие числа в двоичной

системе: 1000111011100; 1000111111, а результаты переведите

вдесятичную

9.Что называется основанием системы счисления?

10.Какое число называют основанием десятеричной системы счисления?

11.Приведите примеры алфавитных систем счисления.

12 Зачем понадобилось использовать родственные двоичной системы счисления?

13.Почему понадобилось использовать родственные двоичной системы счисления?

14.Какие символы используются в двоичной, восьмеричной, шестнадцатеричной системах счисления?

15.Какие названия могут носить ячейки памяти?

16.Что из себя представляет система ASCII, для чего она нужна?

17.Какие существуют кодировки кириллицы?

18.Что нужно сделать при сбое представления веб-страницы?

19.На какой теории основано компьютерное кодирование изображений?

20.Что такое растр?

21.Что называется пикселем?

22.Какое количество информации тратится на растр?

23.Какой процесс называется дискретизацией?

24.Какие параметры влияют на качество звука при кодировании?

124

Глава 9. ЯЗЫКИ ПРОГРАММИРОВАНИЯ. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММ

9.1. Понятие программы

Общение людей друг с другом не отличается большой конкретностью, так, если кто-нибудь на улице спросит вас, где находится «Булочная», вы можете ответить: «Пройдите вон до того дома, и поверните налево». Или, показав рукой направление, сказать: «Вон за тем домом» и спрашивающему в большинстве случаев, будет достаточно этого , чтобы найти нужный объект. Если бы мы обладали компьютерным мышлением, то нам нужно было бы объяснять дорогу более подробно, учитывая последовательность выполнения этой задачи. Например: «Вам необходимо сделать такое-то количество шагов, чтобы дойти до конца пятого дома, считая от того места, где мы находимся, затем совершить поворот на 90о влево и пройти еще 10 метров, затем, прочтя вывески на здании, которое окажется у вас по правую руку, идентифицировать (т.е. определить) «Булочную» и т. д.

С компьютером общение происходит примерно так же, т .е. чтобы он выполнял необходимые операции, для него необходимо составлять программы. В «Математической энциклопедии», понятие программы определяется так: «Программа – план действий, подлежащих выполнению некоторым устройством, чаще всего ЭВМ. Предписание, алгоритм программы представляется в виде конечной совокупности команд (инструкций), каждая из которых побуждает выполнить некоторую элементарную операцию над данными, хранящимися в памяти исполнителя и имена которых являются параметрами команды». [14]

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

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

125

кодах, что было, конечно,

неудобно и занимало много времени.

Для облегчения своего труда

и повышения его производительности,

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

9.2. Машинный язык и языки программирования высокого уровня

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

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

Но одних команд для работы ЭВМ мало, так как она сама «не знает» никаких чисел и все требуемые программой числа (константы), должны быть введены в память вместе с программой (это называется описанием констант). Например, при необходимости умножить что-либо на 5 в программе должны быть указаны адреса ячеек памяти, где хранится число 5, числа которое нужно умножить на 5 , а также, адрес ячейки в которую следует занести результат. При обращении к этой ячейке константа становится операндом, т.е. числом, с которым работает оператор. Программа для ЭВМ, написанная на машинном языке, представляет собой длинную колонку команд, каждая из которых состоит из трех элементов-чисел: номера кода, оператора и адресов первого и второго операндов, над которыми производится операция. Результат отправляется или по первому адресу (А), или в специальный регистр – хранилище промежуточных результатов.

Например: 0010000001010 машина прочитает так: «Сложить число

из ячейки

номер десять в оперативной памяти с числом, стоящим

в сумматоре».

Чтобы

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

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

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

126

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

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

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

Вот пример программы, записанной с помощью символьных обозначений:

СЛЖ

П№ 1,

П№ 2

> П№ 3

ДЕЛ

П№ 3,

2

> П№ 3

Что означает СЛоЖить ячейки Памяти № 1 и № 2, результат поместить в ячейку Памяти № 3. Потом хранимое в ячейке Памяти № 3 разДЕЛить на 2 и результат снова поместить и ячейку Памяти № 3.

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

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

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

127

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

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

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

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

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

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

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

128

Рис. 9.1. Генеалогическое древо первых языков программирования

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

используется

в основном вычислительная функция компьютера.

Но в настоящее

время потребность в невычислительных функциях ЭВМ

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

Вновь создаваемые языки являются развитием других языков. Приведем краткие характеристики наиболее известных языков высокого уровня.

129

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

Название этого языка составлено из сокращения двух слов ФОРмульный ТРАНслятор, т. е. формульный переводчик. Он был создан в 1956 г.

За более, чем пятидесятилетнюю историю ФОРТРАНА на нем было написано огромное количество прикладных программ, поэтому отказываться от него было бы нецелесообразно. Существует даже такой лозунг: «Настоящие программисты пишут только на ФОРТРАНЕ».

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

Внастоящее время Fortran переживает ренессанс. Он вновь популярен у программистов.

Язык Fortran изначально был предназначен для программистов, хорошо владеющих математическим аппаратом, поэтому для тех, кто только осваивает азы программирования на основе языка Fortran был разработан язык BASIC (сокращение от англ. Beginner’s All-purpose Symbolic Instruction Code — универсальный код символических инструкций для начинающих). Это многоцелевой язык символических инструкций для начинающих. Научиться работе на языке BASIC можно за час. Но, несмотря на свою простоту, он позволяет решать сложные программы. Проблемы с применением этого языка могут возникнуть из-за большого количества его диалектов. Поэтому, переходя от одной машины

кдругой всегда нужно интересоваться особенностями BASIC для этой машины.

Все операторы BASIC нумеруются, и выполнение их происходит в порядке нумерации.

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

BASIC сейчас настолько популярен, что его модификации VBA Visual BASIK for Application встраиваются в приложения Microsoft Office.

Algol (algorithmic — алгоритмический и language — язык). Этот язык был создан в 1960 г., поэтому его иногда называют Algol-60, Его

130

применяли в научно-технических расчетах и научно-исследовательских работах. Существует более поздняя разработка Algol – Algol -68.

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

К алголоподобным языкам относятся языки Pascal и Ada.

Pascal, названный в честь знаменитого математика и создателя первых вычислительных машин Блэза Паскаля. Он является прямым развитием направлений Algol’а, создан в 1969 г. Очень популярен

внастоящее время. В связи с простотой, его часто используют для обучения приемам программирования. Транслятор с Pascal также прост и занимает мало места в памяти, что особенно важно для мини- и микроЭВМ, имеющих оперативную память малой емкости. Кроме того,

вPascal есть достаточно сильные средства для написания так называемых системных программ, для чего обычно используют язык Assembler. Такая универсальность и компактность Паскаля сделала его наряду с BASIC очень популярным, особенно для персональных компьютеров.

Язык Ada назван в честь Ады Лавлейс, создан в 1979 г., является следующим продолжением направления Algol в программировании. Его основное назначение – программирование работы самых разнообразных систем управления на ЭВМ и вообще сложных программных систем. Создание больших программных систем затрудняется тем, что они ненадежны ввиду неизбежных ошибок, допускаемых при программировании. В Ada большое внимание уделяется обеспечению надежности программ даже в ущерб легкости их написания. Поэтому основным элементом программы на язык Ada являются подпрограммы. В отличие от других языков, где подпрограммы играют вспомогательную,

вAda они играют главную.

Кболее поздним разработкам алголоподобных языков относятся модификации популярного сегодня языка С – С+, С++ и С#.

COBOL (Common Business-Oriented Language) создан в 1959 г. Это язык, ориентированный на экономическое применение для обработки больших массивов данных. Кобол-программа выглядит как ряд предложений из английских слов, что значительно облегчает его применение пользователям-экономистам, администраторам и др., поэтому

он пригоден для

обработки деловой информации и используется

в правительственных

учреждениях, страховых компаниях, банках.

Несмотря на свою громоздкость, преимущества COBOL при решении определенного рода задач, являются стимулом к развитию его современных модификаций (Visual COBOL R4).

131

Рис. 9.2. Генеалогическое древо, включающее современные языки программирования

132