Категория
Информатика
Тип
реферат
Страницы
29 стр.
Дата
11.07.2013
Формат файла
.doc — Microsoft Word
Архив
759051.zip — 163.55 kb
  • obzor-jelementov-jazyka-programmirovanija_759051_1.doc — 606 Kb
  • Readme_docus.me.txt — 125 Bytes
Оцените работу
Хорошо  или  Плохо


Текст работы

<</table>

 

 


   
Содержание 

   
  

Введение …………………………………………………………………………….
5
 

   
1. Общая

часть …………………………………………………………………………6

         

1.1. Обзор элементов языка программирования………………………………….
.6
 

   
2. Специальная

часть ………………………………………………………………….8

         

2.1. Общая постановка задачи ……………………………………………………..8

         
2.2.

Описание программ комплекса ……………………………………………...10

         
2.2.

Макро блок- схема комплекса………………………………………………..
12

         
2.4.

Таблица идентификаторов комплекса ………………………………............13

         
2.5.

Описание наборов данных ……………………………………………….......14

         
2.6.

Структура записей файлов …………………………………………………...14

         
2.7.

Постановка проблемной программы (процедуры)

…………………………16

         
      

2.7.1. Описание проблемной программы ……………………………………16

         
      

2.7.2. Блок – схема проблемной программы

………………………………...16
 

   
3. Организация

производства ………………………………………………………..17

         

3.1. Комплекс технических средств, необходимый

для решения задачи……....17

         
3.2.

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

……………………….18
 

   
  Заключение

…………………………………………………………………………20
 

   
  Приложения

…………………………………………………………………………21
 

   
  

Список используемых источников ………………………………………………..35

Выполнил  

Муханов А.
  05.12.09 КР 

3706002 000009 ПЗ
лист
Проверила Енсепова 

Г.К.
  07.12.09  

4
изм лист

докум
Подпись Дата

 

 

 

Введение
 

 

            

Цель выполнения курсовой работы состоит

в том, чтобы научиться описывать предметную

область реального мира – объект и его

атрибуты, закрепить навыки использования

основных процедур, способов их описания

и основных операции над ними.

     
Действительно,

при помощи Turbo Pascal достаточно не просто

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

работу с ПК, создать всё-таки основу и

саму сущность формирования вывода звука

для встроенного динамика, расположенного

в системном блоке компьютера.

     
В

этой курсовой работе рассмотрим программирование

звука и видео. В начале рассмотрим, как

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

динамика и видео, для вывода изображения

на монитор. Затем познакомимся с основными

принципами программирования для звуковой

и видео карты.

     
Невозможно 

представить себе современный персональный

компьютер без устройств вывода

звука и видео. Нормой стало оснащение 

компьютера специальным устройством 

– звуковой картой, позволяющей 

творить со звуком самые настоящие 

чудеса. «Озвученный» компьютер – это

полноценный музыкальный центр. Он даёт

пользователю возможность превратиться

в исполнителя, играющего на различных

музыкальных инструментах, он может даже

стать неплохим рассказчиком, «проговаривая»

набранный в электронном формате текст.

     
Персональные

компьютеры за последние годы значительно

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

процессорами эволюционировали и остальные

компоненты компьютера. Соответственно,

требования пользователей к компьютеру

постоянно повышается. И если 20-25 лет назад

был хрипящий звук встроенного в корпус

маленького динамика (РС – спикер), то

сегодня непременным атрибутом персонального

компьютера является специализированная

звуковая подсистема.

     
Для

того, чтобы уверенно ориентироваться 

в современном разнообразии различных

устройств, служащих цели «озвучить» персональный

компьютер, необходимо четко и на достаточном

уровне представить себе все процессы,

происходящие внутри компьютера, которые

были связаны звуком.   


      
Выполнил  

Муханов А.
  05.12.09. КР 

3706002 000009 ПЗ
лист
Проверила Енсепова 

Г. К.
  07.12.09   

5

изм лист

докум
Подпись Дата

 

 

     
1

Общая часть
 

  1. Обзор

    элементов языка 

    программирования

 

 

     
Что

представляет собой звук?

     
Свое 

знакомство с программированием 

звука на Турбо Паскале мы начнем

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

Прежде всего замечу, что модуль Crt содержит

две процедуры, предназначенные для работы

с динамиком. Первая из них- Sound(Hz)  - включает

динамик на звуковой частоте, задаваемой

значением параметра Hz (типа Word) в герцах.

Динамик генерирует звук до тех пор, пока

он не будет отключен вызовом процедуры

NoSound, не имеющей параметров Процедура

Sound обеспечивает довольно бедную интонацию,

потому что она использует только целочисленные

частоты. Да и встроенный динамик, к сожалению,

дает звук самого низкого качества Он

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

по-разному резонирует на разных частотах.

Не ждите от него многого' Тем не менее,

мы постараемся хотя бы частично исправить

положение и разработаем свои собственные

процедуры для модуля Speaker.

     
Прежде 

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

встроенного динамика. Источником 

звуковых  акустических колебаний 

является его диффузор. Он может 

находиться в одном из двух возможных 

положений. Для управления работой 

динамика ему посылаются прямоугольные

импульсы определенной частоты. В течение

первой половины каждого цикла  диффузор 

перемещается в одно положение, а затем,

в течение второй половины цикла, в другое.

Это вызывает движение воздуха. В процессе

генерации акустических колебаний прямоугольный

импульс, который порождает неприятно

звучащую ноту, несколько сглаживается.

Так возникает звуковой сигнал.

     
Теперь 

несколько слов о технических 

деталях. Компьютер содержит микросхему

8255, которую называют «программируемым

периферийным интерфейсом» (PPI — Programmable

Peripheral Interface). PPI управляет работой динамика,

используя микросхему таймера 8254 (PIT —

Programming Interval Timer). Микросхема 8255 имеет различные

порты, включая порт ввода\вывода $61 размером

(«шириной») в один байт с битами b7…b0. Запись

в порт $61 нулевого либо единичного значения

бита b0 позволяет установить режим управления

динамиком. Если b0 = 1, то динамиком управляет

второй канал микросхемы таймера. Микросхема

таймера имеет 3 канала, каждый из которых

предназначен для решения своих задач.

Нулевой канал обслуживает системные

часы, первый канал обслуживает микросхему

прямого доступа к памяти (DMA). Второй канал

связан со встроенным динамиком. Обычно

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

прямоугольных импульсов, что дает при

включении динамика непрерывный тон определенной

частоты. Управление встроенным динамиком

связано прежде всего с программированием

второго канала таймера.

     
Для

работы с таймером  используются

порты (всего 4), на которых для нас 

интерес  представляют порт $42 (порт

второго канала таймера) и порт $43 (порт

управляющего слова — открыт только для

записи). Каждый канал имеет свой

Выполнил  

Муханов А.
  05.12.09. КР 

3706002 000009 ПЗ
лист
Проверила Енсепова 

Г.К.
  07.12.09.   

6

изм лист

докум
Подпись Дата

 

счетчик, содержимое

которого уменьшается от некоторого максимального

значения. Для второго канала определена

константа $1234DD. Это значение представляет

собой число, которое нужно разделить

на частоту в герцах, чтобы получить значение

счётчика  для таймера.

     
Итак,

мы выяснили, что единичное значение

управляющего бита b0 означает, что динамик 

подключён к каналу, а нулевое 

значение – что он отключён от 

канала. Динамик включён, если бит b1равен 

единице. Таким образом, прежде всего 

надо научиться «включать» биты b0 и b1,

записывая в них единичные значение, не

изменяя значений всех прочих битов. Чтобы

сообщить таймеру о том, что следующие

два байта являются значением типа Word,

обратно пропорциональным частоте, и что

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

в порт микросхемы таймера $43 должно быть

записано значение $86. После этого таймер

будет включать и выключать динамик с

определённой частотой.

Выполнил  

Муханов А.
  05.12.09. КР 

3706002 000009 ПЗ
лист
Проверила Енсепова 

Г. К.
  07.12.09.   

7

изм лист

докум
Подпись Дата

 

 

     
2

Специальная часть

     
2.1

Общая постановка задачи

     
Темой

данной курсовой работы, который был 

выполнен в ходе изучения курса “Основы 

алгоритмизации и программирования” 

является, - «Обработка потока, поступающего

с видео и аудио устройства».

     
Далее

мы обсудим: что такое DirectShow, для

чего он предназначен, как он работает

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

звука. Потом нам предстоит написать программу,

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

прямоугольных звуковых импульсов (стр.

21-22)

     
DirectShow

– это архитектура для 
воспроизведения, 

перехвата и обработки потоков 

мультимедиа. С помощью этого 

API можно:

  • проигрывать

    мультимедийные файлы различного формата,

    такие как MPEG (Motion Picture Experts Group), AVI (Audio-Video

    Interleaved), MP2 (MPEG Audio Layer-2), DVD и конечно WAV;
  • перехватывать

    видео-поток с различного рода TV-карт,

    видеокамер и т.п.;
  • создавать

    нестандартные обработчики мультимедиа-потоков

    и свои собственные форматы файлов;
  • обращаться

    непосредственно к видео и аудио потокам,

    чтобы выводить их на Surface DirectDraw.

     
DirectShow

интегрирован с DirectX так, что использует

DirectDraw и DirectSound для вывода изображения

и звука, и, при наличии аппаратного ускорения,

автоматически им воспользуется.

     
В

концепции DirectShow мультимедийные данные

– это поток, который проходит через несколько

обрабатывающих блоков. Блоки, обрабатывающие

поток данных, передают данные по цепочке

друг другу, таким образом можно представить

себе несколько “устройств”, каждое из

которых выполняет какую-то обработку

данных и передает их соседнему “устройству”.

Эти “устройства” или “блоки обработки”

данных называют фильтрами. Цепочка, по

которой передаются данные, содержит несколько

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

     
В

DirectShow имеются готовые фильтры, из которых,

словно из детских кубиков, программист

может выстроить ту или иную цепочку обработку

данных, кроме того, конечно, можно создать

свои, нестандартные фильтры.

     
Для

создания такой “цепочки обработки”

(которая, кстати, официально называются

Filter Graph – “граф фильтров” или, в несколько

вольном переводе - “схема соединения

фильтров”), так вот для создания схемы

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

базовый и лежащий в основе всех основ

компонент DirectShow, под названием Filter Graph

Manager – Менеджер Графа Фильтров.

     
Например,

программа показывающая видео из

AVI-файла может построить 
такой 

граф фильтров:


     
Выполнил  

Муханов А.
  05.12.09. КР 

3706002 000009 ПЗ
лист
Проверила Енсепова 

Г.К.
  07.12.09   

8

изм лист

докум
Подпись Дата

       

 

     
В

этом примере пять фильтров, первый

(File Source) просто читает данные с диска,

второй фильтр (AVI Splitter) разделяет данные

на кадры и передает упакованные 

видео данные фильтру AVI Decompressor, который 

их распаковывает и передает фильтру

Default DirectSound Device, выводящему звук. AVI Decompressor

передает распакованные данные фильтру

Video Renderer, который выводит кадры видео

на экран.

     
Фильтры

делятся на три типа:

     
Фильтры-источники

(Source filters)  - эти фильтры просто получают

данные из какого-то источника, с диска

(как фильтр File Source (Async) на рисунке), с CD

или DVD дисковода или с TV – карты или карты,

к которой подключена цифровая видеокамера.

     
Фильтры-преобразователи

(Transform filters) – эти фильтры как 

видно из названия преобразуют поток

данных, проходящий через них каким-либо

образом, например – разделяет поток данных

на кадры, производят декомпрессию и т.п.

На нашем рисунке к таким фильтрам относятся

AVI Splitter и AVI Decompressor.

     
Фильтры

вывода (Renderer filters) – фильтры, которые

получают полностью обработанные данные

и выводят их на монитор, звуковую карту,

пишут на диск или выводят на еще какое-нибудь

устройство.

     
Итак 

из фильтров-кубиков можно 
выстраивать 

граф. Делается это с помощью интерфейса

IGraphBuilder. Создать объект типа IGraphBuilder можно

так:
 

     
CoCreateInstance(CLSID_
FilterGraph,
nil ,CLSCTX_INPROC_
SERVER,IID_IG 

raphBuilder,MyGraphBuilder);
 

     
Здесь

переменная MyGraphBuilder имеет тип IGraphBuilder;

идентификатор класса CLSID_FilterGraph и IID_IGraphBuilder

обьявлены в файле DShow.pas, поэтому не забудьте

добавить:

     
uses
DShow.pas

     
Итак,

интерфейс IGraphBuilder получен. Можно построить 

граф фильтров, такой, какой нам нужно.

Впрочем, все не так сложно, IGraphBuilder

достаточно интеллектуален, он может 

сам, автоматически, построить граф, в

зависимости от

      
того 

какие файлы мы собираемся воспроизводить.

Интерфейс IGraphBuilder имеет метод RenderFile,

который получает имя файла в 

качестве параметра и, в зависимости 

от типа файла (которое определяется

по расширению и по

специальным

сигнатурам в файле), сканирует реестр,

в поисках необходимой для 

построения графа информации, создает

необходимые фильтры и строит

Выполнил  

Муханов А.
  05.12.09. КР 

3706002 000009 ПЗ
лист
Проверила Енсепова 

Г. К.
  07.12.09.   

9

изм лист

докум
Подпись Дата

 

граф, предназначенный 

для воспроизведения файлов этого 

типа (WAV, AVI, MP2, MPG и т.д.).
 

     
2.2

Описание программ комплекса
 

     
После

построения графа, DirectShow готов к 

воспроизведению. Для управления потоком 

данных через граф обработки предназначен

интерфейс IMediaControl – он имеет методы Run,

Pause и Stop.
 

     
Пример: 

     
uses

     
 

... DShow, ActiveX,ComObj;
 

     
var

     
 

MyGraphBuilder : IGraphBuilder;

     
 

MyMediaControl : IMediaControl;

     
begin

     
CoInitialize(nil);

     
{получаем

интерфейс IGraphBuilder}

     
CoCreateInstance(CLSID_
FilterGraph,nil,CLSCTX_INPROC_
SERVER,IID_I 

GraphBuilder,MyGraphBuilder);

     
{вызываем

RenderFile - граф фильтров 

строится автоматически}

     
MyGraphBuilder.
RenderFile(cool.avi',nil);
 

     
{получаем

интерфейс ImediaControl}

     
MyGraphBuilder.
QueryInterface(IID_
IMediaControl,MyMediaControl);

     
{Примечание

- MyMediaControl - переменная

типа IMediaControl}

     
{проигрываем 

видео}

     
MyMediaControl.Run;  

     
{ждем 

пока пользователь 

не нажмет ОК (видео 

воспроизводится 

в отдельном (thread)

потоке)}

     
ShowMessage('Нажмите

OК');
 

     
CoUninitialize;  

     
end;  

     
Интерфейс

IVideoWindow содержит методы для управления

заголовком, стилем, местоположением и

размерами окошка в котором проигрывается

видео.

     
Давайте

попробуем переделать наш пример

так, чтобы видео выводилось не в 

отдельном окошке, а, скажем на компоненте

TPanel, расположенном в нашей форме. Добавьте

на форму компонент TPanel, пусть он называется

Panel1.


     
Выполнил  

Муханов А.
  05.12.09. КР 

3706002 000009 ПЗ
лист
Проверила ЕнсеповаГ.К.   07.12.09   

10

изм лист

докум
Подпись Дата

 

     
uses

     
 

... DShow, ActiveX,ComObj;
 

     
procedure TForm1.Button1Click(Sender: TObject);

     
var

     
 

MyGraphBuilder : IGraphBuilder;

     
 

MyMediaControl : IMediaControl;

     
 

VideoWindow : IVideoWindow;
 

     
begin  

     
CoInitialize(nil);

     
{получаем 

интерфейс IGraphBuilder}

     
CoCreateInstance(CLSID_
FilterGraph,nil,CLSCTX_INPROC_
SERVER,IID_I

GraphBuilder,MyGraphBuilder);
 

     
{вызываем

RenderFile - граф фильтров 

строится автоматически}

     
MyGraphBuilder.
RenderFile('C:\Program

Files\Borland\Pascal\Demos\
Coolstuf\cool.avi',nil);
 

     
{получаем 

интерфейс ImediaControl}

     
MyGraphBuilder.
QueryInterface(IID_
IMediaControl,MyMediaControl);

     
{Примечание

- MyMediaControl - переменная

типа IMediaControl}

     
{получаем 

интерфейс IVideoWindow}

     
MyGraphBuilder.
QueryInterface(IID_
IVideoWindow,VideoWindow);

     
{Примечание

- VideoWindow - переменная

типа IVideoWindow}

     
{располагаем 

окошко с видео 

на панель}

     
VideoWindow.Set_Owner(
Self.Panel1.Handle);

     
VideoWindow.Set_
WindowStyle(WS_CHILD

OR WS_CLIPSIBLINGS);

     
VideoWindow.
SetWindowPosition(0,0,Panel1.
ClientRect.Right,Panel1.
ClientR

ect.Bottom);

     
{проигрываем 

видео}

     
MyMediaControl.Run;  

     
ShowMessage('Нажмите 

OК');
 

     
CoUninitialize;

     
end ;

     
Программа

Speaker1 предназначена для генерации последовательности

прямоугольных звуковых импульсов:

     
Двоичное 

представление 
шестнадцатеричного

значения #FC имеет вид 11111100. Вначале определяются

значение, находящееся в порте динамика,

и два младших бита обнуляются (благодаря

использованию операции and и маски $FC).

В цикле динамик включается (в бит b1 записывается

единица), затем, после

небольшой

задержки, отключается и так повторяется 

до нажатия произвольной

Выполнил  

Муханов А.
  05.12.09. КР 

3706002 000009 ПЗ
лист
Проверила Енсепова 

Г.К.
  07.12.09.   

11

изм лист

докум
Подпись Дата

 

клавиши. После 

нажатия клавиши выполнение цикла

прекращается. Важно то, что оба младших

бита будут содержать нулевые значения,

и при всех последующих обращениях к динамику

других программ он будет работать правильно.

Программа генерирует тон частотой примерно

100Гц.
 

     
2.3

Макро блок - схема комплекса
 

     
Существует

много способов описания, представления

алгоритмов. Мы остановимся на четырех:

естественном языке, графическом языке,

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

     
Каждый

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

алгоритмов, ориентированные на своего

исполнителя:

  • естественный

    язык
    - слова на естественном языке общения;
  • графический

    язык -
    графические схемы (блок-схемы)

    с описанием действий;

     
- 

алгоритмический язык -

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

которым придается значение действия

или команды для исполнителя;

     
-   

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

команды языка программирования.

     
Во

всех предложенных способах представления

алгоритма, кроме последнего исполнителем

является человек, а в последнем четвертом

случае исполнитель-компьютер.

     
Алгоритмический

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

для единообразной и точной записи алгоритмов

и их исполнения.

     
Алгоритмический

язык, с одной стороны, близок к обычному

языку, поэтому читается и записывается

как обыкновенный текст. С другой стороны,

по своей форме алгоритмический язык приближается

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

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

для ЭВМ.

     
Алгоритмический

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

команды этого языка. В алгоритмическом

языке также используются слова, смысл

и способ употребления которых не изменяется.

Они называются
служебными словами.

     
Служебные

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

и записываются, как правило, в сокращенной

форме и предназначены для оформления

алгоритма.

     
Синтаксические

конструкции языка подразделяются на

два типа: описания данных (величин) и операторов

(команд).

     
Представление

алгоритмов в виде блок-схем. Наиболее

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

является его графическое представление

в виде блок-схем.

     
Блок-схема

- это графическое представление алгоритма,

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

соответствующей геометрической фигурой.
 

Выполнил  

Муханов А.
  05.12.09. КР 

3706002 000009 ПЗ
лист
Проверила Енсепова 

Г. К.
  07.12.09   

12

изм лист

докум
Подпись Дата
 

Условное

обозначение
Пояснение
 

                    

 

 

Начало алгоритма; 

Конец

алгоритма;
 

Процесс

или группа действий;

Выбор

действия в зависимости от истинности

или ложности;
 

Повторение

действии заданное количество раз

Ввод (вывод)

значений переменных;
 

Направление

вычисления.



Ваше мнение



CAPTCHA