Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы по информатике.doc
Скачиваний:
115
Добавлен:
20.09.2019
Размер:
1.29 Mб
Скачать

11. Программная обработка данных

Основной функцией компьютера является обработка информации. Выше была рассмотрена аппаратная реализация компьютера. Рассмотрим теперь, каким образом компьютер обрабатывает информацию.

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

В 70-е годы компьютер "научился" работать с текстом. Пользователь получил возможность редактировать и форматировать текстовые документы. В настоящее время большая часть компьютеров и большая часть времени используется для работы именно с текстовыми данными.

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

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

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

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

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

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

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

На заре компьютерной эры, в 40-50-е годы, программы разрабатывались непосредственно на машинном языке, то есть на том языке, который "понимает" процессор. Такие программы представляли собой очень длинные последовательности нулей и единиц, в которых человеку разобраться было очень трудно.

В 60-е годы началась разработка языков программирования высокого уровня (Алгол, Фортран, Basic, Pascal и др.), которые позволили существенно облегчить работу программистов. В настоящее время с появлением систем визуального программирования (Visual Basic, Delphi и др.) создание программ стало доступно даже для начинающих пользователей компьютера.

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

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

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

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

В процессе выполнения программы процессор может запрашивать данные с устройств ввода информации и пересылать данные на устройства вывода информации

12.принципы процедурного программировния

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

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

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

Синтаксис и языковые конструкции

Паскаль, в его первоначальном виде, представляет собою чисто процедурный язык и включает в себя множество Алголоподобных структур и конструкций с зарезервированными словами наподобие if, then, else, while, for, и т. д. Тем не менее, Паскаль также содержит большое количество возможностей для структурирования информации и абстракций, которые отсутствуют в изначальном Алголе-60, такие как определение типов, записи, указатели, перечисления, и множества. Эти конструкции были частично унаследованы или инспирированы от языков Симула-67, Алгол-68, созданного Никлаусом Виртом AlgolW и предложены Хоаром. В современных диалектах (Free Pascal) доступны такие операции как перегрузка операторов и функций.

Передача параметров

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

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

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

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

Рекурсивные функции и процедуры

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

n! = n*(n-1)!

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

if n < 2 then fact:=l else fact:=n*fact(n-1);

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

А -> В -> А -> В -> А ...

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

{ Опережающее объявление первой в цепочке процедуры А }

procedure А(<список параметров>);

forward; { Описание последней в цепочке рекурсивной процедуры В }

procedure В(<список параметров>);

begin

А(...); { Вызов рекурсивной процедуры А }

end; { Описание первой в цепочке рекурсивной процедуры А }

procedure A; { Здесь можно не повторять список аргументов } begin

В (...); { Вызов рекурсивной процедуры В } end;

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

Р = =1;

for i:=l to n do p:=p*i;

fact:=p;