русс | укр

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

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ВВЕДЕНИЕ


Дата добавления: 2013-12-23; просмотров: 750; Нарушение авторских прав


ФАЙЛЫ

ЗАПИСИ

 

Запись – это структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. Очень часто возникает необходимость описать характеристики некоторого объекта, представляемого и обрабатываемого в программе. Таким объектом может быть человек, автомобиль, журнал и т.д. В отличие от массива, компоненты (поля) записи могут быть различного типа. Для описания объекта "автомобиль" могут понадобится, например, следующие характеристики:

* марка и тип кузова автомобиля (символьные строки);

* год выпуска автомобиля (целый тип);

* был ли капитальный ремонт (логический тип).

Чтобы можно было ссылаться на то или иное поле записи, поля именуются.

Структура объявления типа записи:

< имя типа > = record < сп. полей > end ;

здесь < имя типа > – правильный идентификатор;

record, end – ключевые слова (пер. с англ.: запись, конец);

< сп. полей > – список полей, представляет собой последовательность разделов записи, между которыми ставится точка с запятой.

Каждый раздел записи состоит из одного или нескольких идентификаторов, отделяемых друг от друга запятыми. За идентификатором (идентификаторами) ставится двоеточие и тип, например :

type auto = record

mark , typ : string [10];

date : integer;

remont : boolean

end;

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

Используя описанный выше тип, напишем фрагмент программы:

var mashine : auto;

begin

mashine.mark: = 'volvo';

mashine.date = 1996;

mashine.typ: = 'car';

mashine.remont: = false;

writeln (mashine. mark);



writeln (mashine. date);

writeln (mashine.typ);

writeln (mashine. remont);

end.

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

var mash1, mash2 : auto;

Это означает, что переменная mash1 содержит поля mark, typ, date, remont, точно такие же поля содержит и переменная mash2. Следующий оператор присваивания устанавливает равенство значений записей mash1 и mash2:

mash1:=mash2;

Это присваивание эквивалентно последовательности операторов:

mash1.mark := mash2.mark;

mash1.date := mash2.date;

mash1.typ := mash2.typ;

mash1.remont:= mash2.remont;

Для переменных одного типа можно проверить выполнение отношения равенства или неравенства. Как и в случае массивов, допустимы операции сравнения = и <> .

Язык Турбо-Паскаль дает возможность сократить запись, если использовать оператор присоединения with. Структура оператора with :

with < сп. записей > do < оператор > ,

где with, do - ключевые слова (пер. с англ. с, делать),

< сп. записей > – список из одной или нескольких переменных типа запись, разделенных запятыми.

< оператор > - любой оператор языка турбо-паскаля.

В рамках оператора, определяемого внутри оператора with (или составного оператора), к полям переменной можно обращаться просто по имени:

with mashine do

begin

mark: = 'volvo';

date: = 1996;

typ: = 'car';

remont: = false;

end;

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

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

Приведем описание такого массива:

var mashine : array [1..100] of auto;

Принимая во внимание предыдущее описание auto, можно сделать вывод, что описана таблица, в которой могут содержаться данные на 100 автомобилей.

 

марка дата выпуска тип кузова ремонт
VOLVO CAR Не был
ВАЗ СAR Был
...... ...... ...... ......
...... ...... ...... ......
ЗИЛ LORRY Не был

 

Теперь можно записать следующие операторы: для обращения к первому элементу массива:

mashine [1].mark := 'ваз';

для чтения первого элемента:

read (mashine [1].mark) ;

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

mashine[1]:=mashine[2];

Поле записи само может быть записью.В примере записи auto введем дату приобретения автомобиля.

type

auto = record

mark, typ : string[10];

date1 : record

den : integer;

mes : string[10];

god : integer;

end;

date : integer;

remont : boolean

end;

var mashine : auto;

При обращении к полю god необходимо продолжать уточнения:

mashine.date1.god: = 1949;

В этом случае можно использовать оператор with следующим образом:

with mashine.date1 do

if god = 1944 then begin.....

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

В программе использованы следующие обозначения :

n1– максимальное количество студентов в группе;

n – реальное количество студентов в группе;

student– идентификатор типа, представляющий запись с полями fam, fiz, mat, pr и ss;

fam – поле записи, содержащее фамилию студента;

fiz, mat, pr – поле записи, содержащее оценки по физике, математике и программированию соответственно;

ss – поле записи, содержащее средний балл студента;

ved – массив, содержащий элементы типа student;

sg – средний балл группы;

i – индекс элемента массива ved;

Программа выглядит следующим образом:

program pr29;

const n1=30;

type student=record

fam:string[10];

fiz,mat,pr:integer;

ss:real;

end;

var ved:array[1..n1] of student;

i,n:integer;

sg:real;

begin

writeln('сколько студентов в группе?');

read(n);

for i:=1 to n do

with ved[i] do

begin

writeln('введите фамилию студента');

read(fam);

writeln('введите оценки');

read(fiz,mat,pr)

end;

sg:=0;

for i:=1 to n do

with ved[i] do

begin

ss:=(fiz+mat+pr)/3; {вычисление среднего балла

студента}

sg:=sg+ss;

end;

sg:=sg/n;{вычисление среднего балла группы}

writeln('ведомость группы');

write('! фамилия ! физика ! мат !

прогр !');

writeln('! cp. балл !')

for i:=1 to n do

with ved[i] do

begin

write('!',fam:10,'!',fiz:10,'!',mat:10,'!',pr:10);

writeln('!',ss:10:2,'!');

end;

writeln('средний балл в группе =',sg);

end.

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

* время прохождения очередных военных сборов;

* род войск, в которых проходил военный сбор;

или же:

* любимые цветы.

Для таких случаев в Турбо-Паскале предусмотрены записи с вариантами. Такие записи содержат фиксированную и вариантную часть, которая начинается с ключевого слова case. Рассмотрим пример:

type personsex=(male,female);

person = record

name,secondname,surname : string[20];

birthday : date;

case sex : personsex of

male : ( army1 : date;

army2 : string[20]);

female : (flower : srting[20]);

end;

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

 

 

Под файлом понимается именованная область внешней памяти или логическое устройство – потенциальный источник или приемник информации[2]. Основное отличие внешней памяти ЭВМ от оперативной памяти - возможность сохранения информации при отключении ЭВМ. Информация сохраняется в виде файлов, доступ к которым поддерживает операционная система ЭВМ. Поддержка операционной системы состоит в том, что в ней имеются средства:

* создания файлов;

* уничтожения файлов ;

* поиска файлов на внешнем носителе ;

* чтения и записи из файлов и в файлы ;

* открытия файлов ;

* закрытия файлов ;

* позиционирования файлов.

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

Любой файл в Турбо-Паскале имеет три характерные особенности:

1) у файла есть имя, это дает возможность работать с несколькими файлами одновременно;

2) содержит компоненты одного типа (типом может быть любой тип, кроме файлового);

3) длина вновь создаваемого файла никак не ограничена при объявлении и ограничивается лишь емкостью внешних устройств памяти.

Обращение к файлу производится через файловую переменную, которую можно описать следующим образом:

type

< имя > = file of < тип >;

< имя > = text;

< имя > = file;

где < имя > – имя файлового типа или файловой переменной (правильный идентификатор);

file, of, text – ключевые слова (пер.с англ.: файл, из, текст);

< тип > – любой тип языка Турбо-Паскаль, кроме файлового.

Например, можно привести такие описания:

type student = record

mark:string(10);

fiz,mat,pr: integer;

end;

text1 = file of string[80];

var f1 : file of char;

f2 : text;

f4 : text1;

f3 : file of student;

f6 : file;

В зависимости от способа описания можно выделить текстовые (text) файлы, двоичные или типизированные (file of) и нетипизированные (file). Вид файла определяет способ хранения информации в файле.

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

Cначала рассмотрим текстовые файлы.

Каждой программе доступны два стандартных файла input (клавиатура) и output (экран). Это - текстовые файлы. Любые другие файлы становятся доступными после выполнения специальных процедур. Рассмотрим основные процедуры для работы с текстовыми файлами.

Связывание файловой переменной с именем файла осуществляется с помощью встроенной процедуры assign:

assign(<ф.п.>,<имя файла или лог.уст-во>)

Здесь <ф.п.> – правильный идентификатор, объявленный в программе как переменная файлового типа;

<имя файла или лог. уст-ва> – текстовое выражение, содержащее имя файла или логического устройства. Если имя файла задается в виде пустой строки, например assign(f,''), то файловая переменная связывается со стандартным файлом input или output.

Процедура открытия файла по чтению :

reset (<ф.п.>);

reset – ключевое слово (пер. с англ.: устанавливать);

<ф.п.> – файловая переменная.

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

Процедура открытия файла по записи:

rewrite(<ф.п.>);

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

Для чтения и записи информации из файла или в файл используются известные процедуры: read, readln и write, writeln в которых в качестве первого параметра выступает файловая переменная. Например:

write(f,x1,x2,x3) – процедура записи в файл f компонентов x1,x2,x3. Процедура записывает выражения х1, х2, х3 по одному в файл f, начиная с того места, куда был установлен указатель файла в момент обращения к процедуре write. Аналогично работают остальные процедуры ввода и вывода.

При заполнении файла после последней записи автоматически помещается специальный невидимый признак "конец файла" (end of file). Существует функция eof(f), тестирующая конец файла, связанного с файловой переменной f. Функция eof(f) возвращает значение true, если действительно встретился признак конец файла; пока это не произойдет значение eof(f) будет false.

Функция eoln(f) тестирует, встретился ли конец строки (end of line) в файле, связанном с файловой переменной f. При заполнении строки после последней записи автоматически помещается специальный признак конец строки. Функция eoln(f) возвращает значение true, если действительно встретился признак " конец строки". Этот признак формируется при нажатии клавиши "ввод".

close(f) – процедура закрытия файла, связанного с файловой переменной f. Функции процедуры close выполняются автоматически по отношению ко всем открытым файлам при нормальном завершении программы.

Процедура append(f) инициирует запись в ранее существовавший текстовый файл, связанный с файловой переменной f, для добавления новых строк в конец файла.

Рассмотрим пример. В произвольной непустой последовательности чисел, хранящейся в текстовом файле f, подсчитать количество положительных компонент.

{В текстовом файле хранятся вещественные числа, разделенные пробелами.}

program pr30;

var f:text;{Файловая пеpеменная}

a:real;{Буфеpная пеpеменная}

k:integer;{Количество положительных компонент}

begin

assign(f,'f.dat');

reset(f); {Откpыть файл по чтению}

while not eof(f) do {Пока не конец файла}

begin

read(f,a);{Читаем число из файла}

if a>0 then k:=k+1; {Вычисляем количество

положительных компонент}

if eoln(f) then readln(f);{Если конец стpоки,

то пеpеводим указатель файла на следующую стpоку }

end;

writeln('k=',k);

end.

Следующая программа работает с двумя текстовыми файлами: один из них открывается по чтению, а другой - по записи. Строки первого файла кодируются путем замены кода символа следующим кодом из таблицы ASCII и записываются во второй файл [5].

program pr31;

var oldf,newf:text;{Файловые пеpеменные для

стаpого и нового файлов}

oldn,newn:string;{Стpоковые пеpеменные, для хранения

имен нового и стаpого файлов}

line:string;{Буфеpная пеpеменная для

хpанения кодиpуемой стpоки}

c:integer;{Пеpеменная цикла}

begin

writeln('Введите имя кодиpуемого файла');

readln(oldn);

writeln('Введите новое имя');

readln(newn);

assign(oldf,oldn);

assign(newf,newn);

reset(oldf); {Откpыть стаpый файл по чтению}

rewrite(newf); {Откpыть новый файл по записи}

while not eof(oldf) do

begin

readln(oldf,line);{Читаем стpоку из стаpого файла}

for c:=1 to length(line) do {Кодиpуем стpоку}

if ord(line[c])=255 then line[c]:=chr(0)

else

line[c]:=succ(line[c]);

writeln(newf,line); {Закодиpованную стpоку пишем в файл}

end;

close(newf)

end.

Следующий пример демонстрирует работу с текстовыми файлами, содержащими данные типа record.

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

Текст программы предлагается в примере pr32.

program pr32;

type student = record

fam:string[10];

fiz,mat,prog:byte;

end;

var ved: student;{Буфеpная пеpеменная для

хpанения данных о студенте}

k:integer;{Количество студентов в гpуппе}

ss,{Сpедний балл каждого студента}

sg,{Сpедний балл гpуппы судентов}

max:real;{Максимальный сpедний балл студента}

f4:text;{Файловая пеpеменная}

maxfam:string[10];{Фамилия студента

с максимальным сpедним баллом}

begin

assign (f4,'f4.dat');

reset (f4);{Откpыть файл по чтению}

sg:=0;k:=0;max:=0;

while not eof (f4) do {Пока не конец файла}

with ved do

begin

read (f4,fam); {Чтение файла}

readln (f4,fiz,mat,prog);

ss:=(fiz+mat+prog)/3; {Вычисляем сpедний балл

каждого студента}

if ss>max then {Опpеделяем фамилию студента}

begin { с максимальным сpедним баллом}

max:=ss;

maxfam:=fam;

end;

sg:=sg+ss;

k:=k+1

end;

sg:=sg/k;

writeln('Сpедний балл в гpуппе=',sg);

writeln('Максимальный сpедний балл у студента', maxfam)

end.

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

seek(<ф.п.>,<n компонента>)

Здесь <n компонента> – выражение типа longint, указывающее номер компонента.

Файловая переменная должна быть объявлена предложением file of и связана с именем файла процедурой assing. Файл необходимо открыть процедурой rewrite или reset. Для чтения и записи в типизированный файл используются известные процедуры read и write.

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

Функция filesize возвращает значение типа longint, содержащее количество компонентов файла:

filesize(<ф.п.>)

Функция filepos возвращает значение типа longint, содержащее порядковый номер того компонента файла, который будет обрабатываться следующей операцией ввода-вывода:

filepos(<ф.п.>)

В двух последних функциях файловая переменная должна быть объявлена как file of ... и связана с именем файла процедурой assing; файл необходимо открыть процедурой rewrite или reset. Первый компонент типизированного файла имеет порядковый номер 0. Кроме того, следует отметить, что типизированные файлы создать с помощью текстовых редакторов нельзя. Типизированные файлы создаются только в процессе работы программы. Турбо-Паскаль допускает обращаться к типизированным файлам, открытым процедурой reset для чтения информации, с помощью процедуры write (т.е. для записи информации), а к типизированным файлам, открытым по чтению процедурой rewrite, – с помощью процедуры read (т.е. для чтения информации).

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

program pr33;

type student=record{Тип компонентов, хpанящихся

в двоичном файле}

fam:string[10];

fiz,mat,pr:byte;

sr:real;

end;

var f:file of student;{Файловая пеpеменная двоичного файла}

f0: text;{Файловая пеpеменная текстового файла}

ved,ved1,min:student;{Буфеpные пеpеменные}

n, {Количество компонент двоичного файла}

minn: longint;{Hомеp компонента с минимальным

сpедним баллом}

i, j: integer;

begin

assign( f,'f.dat');

assign( f0,'f0.dat');

reset( f0 ); {Откpытие текстового файла по чтению}

rewrite (f ); {Откpытие двоичного файла по записи}

while not eof (f0) do {Цикл, оpганизован для }

begin

with ved do

begin

read (f0,fam); {чтения из текстового файла,}

readln(f0,fiz,mat,pr);

sr:=( fiz+mat+pr)/3;{вычисления сpеднего балла и }

end;

write (f,ved){записи в двоичный файл

по одной компонете}

end;

{___Соpтиpовка____}

n:=filesize (f);{Количество компонент двоичного файла}

for i:=0 to n-2 do

begin

seek (f,i);

read (f,ved);

min:=ved;{Пpедполагаем, что i-я компонента файла }

minn:=i; { имеет минимальный сpедний балл, сpеди компонент, следующих за i-1}

for j:=i+1 to n-1 do{Цикл, позволяющий опpеделить, есть}

begin { ли далее в файле компоненты с меньшим}

read (f,ved1); { сpедним баллом}

if min.sr>ved1.sr then

begin

min:=ved1;

minn:=j;

end;

end;

seek ( f,minn); { Меняем местами}

write ( f,ved); {в двоичном файле}

seek ( f,i); {i-ю компоненту}

write (f,min); {и минимальную компоненту}

end;

seek ( f,0);

for i:=0 to n-1 do{Вывод двоичного файла на экpан}

begin

read (f,ved);

writeln(ved.fam,ved.mat,ved.fiz,ved.pr,ved.sr);

end;

end.

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

 

 

"... недостойно совершенства человеческого подобно рабам тратить часы на вычисления."

Лейбниц

 

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

Созданием языков программирования занимаются в большинстве случаев очень квалифицированные специалисты, часто группы программистов, а иногда даже международные коллективы. Однако подавляющее большинство языков программирования умирало, едва родившись. Лишь к немногим из них был проявлен интерес, и буквально единицы получили действительно широкое распространение. К таким "счастливым" языкам принадлежит язык Паскаль, разработанный Никлаусом Виртом в 1968-1971гг. в Цюрихском Институте информатики (Швейцария). Первоначальная цель разработки языка диктовалась необходимостью инструмента "для обучения программированию как системной дисциплине". Однако очень скоро обнаружилась чрезвычайная эффективность языка Паскаль в самых разнообразных приложениях: от решения небольших задач численного характера до разработки сложных программных систем – компиляторов, баз данных, операционных систем и т.д. Существуют многочисленные реализации языка практически для всех машинных архитектур; разработаны десятки диалектов и проблемно-ориентированных расширений языка Паскаль; обучение программированию и научно-технические публикации часто базируются на этом языке.

Для того чтобы хорошо овладеть программированием, необходимо знать, что такое компьютер. Слово "компьютер" означает "вычислитель", т.е. устройство для вычислений. Потребность в автоматизации обработки данных, в том числе вычислений, возникла очень давно. Многие тысячи лет назад для счета использовались счетные палочки, камешки и т.д. В дальнейшем стали использовать счеты. В 1642 г. Блез Паскаль разработал устройство, механически выполняющее сложение чисел, а в 1673 г. Готфрид Вильгельм Лейбниц сконструировал арифмометр, позволяющий механически выполнять четыре арифметических действия. В в. математик Чарльз Беббидж попытался построить вычислительное устройство, которое должнобыло выполнять вычисления без участия человека, т.е. уметь исполнять программы. Но осуществить эту мечту удалось ученым только в ХХ в., когда для построения вычислительных устройств стали использовать электромеханические реле. С 1943 г. группа специалистов под руководством Джона Мочли и Преспера Экерта в США начала конструировать вычислительную машину на основе электронных ламп. Машина работала достаточно быстро, но для задания её программы приходилось в течение нескольких часов или даже нескольких дней соединять провода. Вот тогда и стали конструировать машину, которая могла бы хранить программу в своей памяти. К этой работе был привлечен знаменитый математик Джон фон Нейман, который ясно и просто сформулировал основные принципы функционирования универсальных вычислительных устройств. Первый компьютер, в котором воплощены принципы фон Неймана, был построен в 1949 г. английским исследователем Морисом Уилксом. С той поры компьютеры стали гораздо более мощными, но подавляющее большинство из них работает в соответствии с принципами фон Неймана.

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

Рис. 1

процессор, осуществляющий арифметические и логические операции, а также организующий процесс выполнения программ;

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

внешние (периферийные) устройства для ввода/вывода информации.

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

На рис.1 одинарные линии показывают управляющие связи, двойные – информационные.

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

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

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

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

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

Совокупность программных средств можно разделить на три категории:

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

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

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

Рассмотрим некоторые системные программы. Одной из важнейших системных программ является операционная система. Операционная система – это программа, которая загружается при включении компьютера. Она осуществляет диалог с пользователем, управление компьютером, его ресурсами (оперативной памятью, местом на дисках и т.д.), запускает другие (прикладные) программы на выполнение. Операционная система обеспечивает пользователю и прикладным программам удобный способ общения (интерфейс) с устройствами компьютера. Для компьютеров типа IBM PC чаще всего используется операционная система MS DOS, UNIX, OS/2.

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

Турбо-Паскаль относится к инструментальным системам и включает в себя как язык программирования – одно из расширений языка Паскаль для ЭВМ типа IBM, так и среду, предназначенную для написания, отладки и запуска программ.

 



<== предыдущая лекция | следующая лекция ==>
СТРОКИ СИМВОЛОВ | 


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.022 сек.