Контрольные по информатике
автоматически освобождает всю память, отведенную приложению, после того, как оно заканчивает работу. В Windows 3+ некорректно написанные приложения нередко освобождали не всю запрошенную ими память. Время от времени памяти оказывалось настолько мало, что единственным выходом оставался перезапуск системы (а иногда и перезагрузка машины). Такая неприятность носит название «утечка памяти» («memory leak») и случается с программными произведениями даже известнейших фирм. При завершении приложения в Windows 95 вся память, занимаемая им, освобождается автоматически, и таких проблем не возникает.Разумеется, на свете не бывает ничего бесплатного (кроме сыра в мышеловках). За удобства объектно-ориентированного подхода и быстродействие приходится платить огромным размером кода операционной системы (она занимает десятки мегабайт) и временем, затраченным программистами на создание ее компонентов. Кроме этого, для большинства используемых приложений должны быть созданы 32-разрядные версии. Только тогда они в полной мере смогут использовать преимущества Windows 95.
Новая система оказалась также весьма чувствительной к аппаратуре, на которой она работает. Хочется верить, что это временные трудности, которые в дальнейшем удастся преодолеть. Проблемы выбора аппаратных средств подробно рассмотрены в последней главе, а сейчас мы поговорим о совместимости приложений DOS и Windows 3+ с новой операционной системой.
6. Отличительные особенности Windows 95.
Объектно-ориентированный подход реализуется через модель рабочего стола. Windows 95 обходится без привычного в Windows 3+ диспетчера программ (program manager). Пользователь работает с задачами и приложениями так же, как с документами на своем письменном столе.
Это удобно для людей, которые первый раз увидели компьютер, но создает некоторые трудности «переходного периода» для тех, кто привык считать программу основой всего сущего в машине.
Итак, одно из главных отличий Windows 95 от Windows 3+ (и от подавляющего большинства других операционных систем) состоит в том, что основной упор в ней делается на документ, а программа, задача, приложение или программный код вообще рассматриваются только как инструмент для работы с документом.
Другая принципиальная особенность Windows 95 состоит в том, что она, в отличие от Windows 3+, является «настоящей» операционной системой (а не операционной оболочкой, выполняемой под управлением MS-DOS). Под словом «настоящая» мы подразумеваем то, что при включении машины сразу выполняется загрузка Windows 95. Для пользователя это оборачивается некоторыми неудобствами. Он должен привыкнуть к тому, что прежде чем выключить машину, нужно корректно завершить работу с Windows 95, поскольку новая операционная система создает буфера в оперативной памяти, и их содержимое должно быть сброшено на диск.
Список литературы
А.В. Потапкин. Операционная система Windows 95. М., 1996.
Г.В. Саенко. Курс пользователя ПК. Донецк, 1997.
В. Фигурнов. IBM PC для пользователя. М., 1998.
Задание 1.
(вариант Б)
1.Значение логического типа обозначаются встроенными идентификаторами констант TRUE (истина) и FALSE (ложь). При внутреннем представлении они занимают 1 байт памяти. Справедливо условие: True>FALSE.
Логические выражения имеют значения типа boolean, т.е. TRUE или FALSE.
Для операндов типа boolean определены следующие логические операции:
NOT— логическое НЕ;
AND— логическое И;
OR— логическое ИЛИ;
XOR— логическое исключающее ИЛИ.
Для операндов простых типов данных и строк применимы операции отношения: =,<,<=,>,>=,<>,in.
Примеры логических выражений:
1 3 2
if (i>0) and (j<0) or (i<0 ) and (j>0) then i:=2;
В данном примере проверяется два условия либо одновременно i положительно и j отрицательно, либо наоборот— i отрицательно и j положительно, при истинности одного из этих условий переменной i присваивается значение 2.
1 2
If not a then b:=false;
В данном примере если переменная a имеет значение false переменной b присваивается значение false.
1 2 3
If not a or b then a:=b;
В данном примере переменной а присваивается значение, содержащееся в переменной b, при условии, что а имеет значение false или b true.
2. В языке Паскаль ввод-вывод информации осуществляется через файловые переменные.
Перед тем, как осуществить ввод-вывод, файловая переменная должна быть связана с конкретным внешним файлом с помощью процедуры ASSIGN. Этим файлом может быть файл на магнитном диске, а также устройство вычислительного комплекса. Затем файл должен быть открыт для чтения и/или записи. После этого можно осуществлять организацию ввода-вывода.
После работы с файлом он, как правило, должен быть закрыт с помощью процедуры CLOSE. Это требование обязательно должно соблюдаться для файла, в который производилась запись.
Процедура ASSIGN (Var_file, Road): с помощью этой процедуры вы связываете файловую переменную Var_file с некоторым именем файла, которое хранится в переменной Road.
Var
Var_file: file of integer;
Road: string[14];
...
Road:=’Data.dat’;
Assign (Var_file, Road);
Вы не можете связывать некоторую файловую переменную с файлом посредством этой процедуры в том случае, если данный файл уже открыт.
Процедура Reset: данная процедура открывает существующий файл данных, имя которого перед этим было связано при помощи процедуры Assign с некоторой файловой переменной, указанной в процедуре Reset как параметр.
Assign (var_file, ‘Data.dat’);
Reset (Var_file);
Данная процедура содержит необязательный параметр Size целого типа, который используется только с файлами без типа и задает размер пересылаемого элемента информации в байтах. По умолчанию этот параметр равен 128. Файл текстового типа может быть открыт либо для чтения процедурой Reset, либо для записи процедурой Rewrite или Append.
Процедура Rewrite: создает новый файл и открывает его для записи или чтения. Если файл с таким именем уже существует, его содержимое стирается, а сам файл открывается заново.
Rewrite (Var_file);
открывает существующий файл, связанный с файловой переменной Var_file.
Процедура Close: закрывает ранее открытый файл, связанный с указанной переменной в качестве параметра файловой переменной.
Close (Var_file);
При попытке закрыть файл, который не был до этого открыт или который уже закрыт, возникает ошибочная ситуация.
Процедура Rename: позволяет переименовать существующий файл, связанный с указанной в качестве параметра файловой переменной. Данная процедура применяется только к закрытым файлам.
Assign (Var_file, ‘Data.dat’);
Rename (Var_file, ‘Text.dat’);
Процедура Erase: стирает существующий файл с диска. При этом файловая переменная должна быть предварительно связана с реально существующим файлом.
Assign (Var_file, ‘Data.dat’);
Erase (Var_file);
Функция EOF: используя данную логическую функцию, в процессе считывания информации Вы можете проверить, достигнут ли конец файла, т.е. находится ли указатель файла за последним элементом или нет.
While not EOF (Var_file) do
read (Var_file, m[i]);
данный фрагмент программы иллюстрирует процесс чтения элементов массива из файла, связанного с переменной Var_file, до тех пор, пока не будет достигнут конец файла.
Функция IOResult: предназначена для поиска ошибок, возникающих при работе с файлами. Эта функция возвращает результат последней операции ввода-вывода, если автоматический контроль за ошибками, возникающими в процессе операций ввода-вывода, отключен с помощью директивы компилятора {$I-}. При безошибочном выполнении операций ввода-вывода данная функция возвращает ноль, если же ошибка имела место, то данная функция возвращает код ошибки.
{$I-}
Reset (‘C:data.dat’);
if IOResult <>0 then writeln (‘ Ошибка при открытии файла’);
{$I+}
Тип файл представляет собой последовательность компонент одного типа, расположенных на внешнем устройстве. Компоненты могут быть любого типа, за исключением типа файл (или содержащего компоненты типа файл) и типа объекта. Число компонент в файле не объявляется.
Для задания типа файл следует использовать зарезервированные слова file и of, после чего указать тип компонент файла.
Type
number = file of integer;
symb = file of ‘A’..’Z’;
Стандартный тип Text определяет тип файла, содержащий символы, объединенные в строки. Следует иметь ввиду, что тип Text в Турбо-Паскале не эквивалентен тину file of char.
Введя файловый тип, можно определять переменные файлового типа:
Var
F1:number;
F2:Text;
В Турбо-Паскале можно использовать файл без типа, при определении которого не указывается тип компонент. В этом случае работа с файлом осуществляется на физическом уровне в соответствии с внутренним форматом его данных. При этом реальные компоненты файла могут иметь и различный тип.
Тип файл можно определять и непосредственно при введении файловых переменных.
Файловые переменные имеют специфическое применение. Над ними нельзя выполнять никаких операций (присваивание значений, сравнивание и т.д.). Кроме того, через файловую переменную можно получить информацию о конкретном файле (тип, параметры, имя и т.д.).
Задание 2.
(вариант 7)
uses crt;
var x,z:real;
begin
clrscr;
write ('Введите x:');
readln (x);
z:=sqrt(abs(x*cos(x))+sin(x/2)*sqr(sin(x/2)));
clrscr;
writeln ('x=',x:5:2,' z=',z:5:2);
end.
Задание 3а.
(вариант 6)
uses crt;
var x:array[1..10] of integer;
y:array[1..10] of boolean;
z:real;
i:integer;
begin
clrscr;
for i:=1 to 10 do
begin
y[i]:=false;
x[i]:=random(100);
end;
for i:=1 to 10 do
if frac(x[i]/2)=0 then y[i]:=true;
for i:=1 to 10 do write (x[i]:4,';');
writeln;
for i:=1 to 10 do
if y[i]=true then write (i:4);
end.
Задание 4.
(вариант 7)
uses crt;
type traz=record
city:string[50];
dat:string[8];
tor:string[5];
dr:integer;
price:real;
end;
var f1:file of traz;
f2:text;
raz:traz;
n:char;
flag:boolean;
function chek(s:string):boolean;
var i:integer;
begin
chek:=true;
for i:=1 to 5 do
if not((s[i] in ['0'..'9']) or (s[i]=':')) then chek:=false;
end;
begin
clrscr;
assign (f1,'1.dat');
assign (f2,'1.txt');
rewrite (f1);
append (f2);
repeat
clrscr;
write ('Введите город:');
readln(raz.city);
write (' Введите дату разговора:');
readln(raz.dat);
write (' Введите время разговора');
repeat
readln (raz.tor);
flag:=chek(raz.tor);
if flag=false then writeln ('Ошибка!!! Повторите ввод:');
until flag;
write(' Введите длительность разговора:');
readln (raz.dr);
write ('Введите стоимость:');
readln (raz.price);
write ('Продолжить? «*»- закончить ввод!');
readln (n);
write (f1,raz);
until n='*';
reset (f1);
while not eof(f1) do
begin
read (f1,raz);
if raz.city='Санкт-Петербург' then write (f2,raz.dat:9,raz.tor:6,raz.dr:5,raz.price:6:2);
end;
close (f1);
close (f2);
end.
Список литературы
А.М. Епанешников. Программирование в среде Turbo Pascal 7.0. М., 1997.
Турбо паскаль 7.0. Киев, 1996.
В.В. Качала. Основы программирования на языке Турбо-паскаль. Мурманск, 1994.
Задание 1.
Вариант П.
1. Операторы цикла позволяют многократно выполнять отдельный оператор или последовательность операторов, причет при этом нет необходимости записывать в тексте программы одинаковые операторы несколько раз.
Оператор цикла REPEAT организует выполнение цикла, состоящего из любого числа операторов, с неизвестным заранее числом повторений. Тело цикла выполняется хотя бы один раз. Выход из цикла осуществляется при истинности некоторого логического выражения. Структура этого оператора:
repeat
operator1;
operator2;
operator3;
. . .
operatorN
until S;
В этой структуре:
operator1..N - выполняемые операторы, составляющие тело цикла;
S - логическое выражение, истинность которого проверяется в конце каждой итерации.
Так как слова repeat и until являются своеобразными операторными скобками, точку с запятой перед словом until ставить необязательно.
Оператор цикла WHILE организует выполнение одного оператора неизвестное заранее число раз. Выход из цикла осуществляется, если некоторое логическое выражение окажется ложным. Так как истинность логического выражение проверяется в начале каждой итерации, тело цикла может не выполняться ни разу. Структура данного оператора цикла имеет вид:
while S do
operator;
В данной структуре:
S - логическое выражение, истинность которого проверяется в начале каждой итерации;
operator - выполняемы оператор цикла.
Между конструкциями REPEAT ... UNTIL и WHILE ... DO имеются три существенных отличия.
В конструкции WHILE ... DO проверка условия выхода выполняется в начале, а не в конце цикла, поэтому, если условие не удовлетворяется до начала выполнения цикла, то тело цикла игнорируется и выполняется оператор, стоящий сразу же после окончания тела цикла.
В конструкции WHILE ... DO условие выхода из цикла удовлетворяется, если выражение, определяющее условие выхода, ложно, а в конструкции REPEAT ... UNTIL — если это выражение истинно.
Между зарезервированными словами REPEAT и UNTIL может размещаться несколько инструкций, в то время как конструкция WHILE ... DO может содержать максимум одну инструкцию.
Примеры использования операторов цикла:
WHILE ... DO |
REPEAT ... UNTIL |
1) нахождение суммы чисел от 1 до 50 ... sum:=0; i:=0; while i<50 do begin i:=i+1; sum: = sum + i; end; .... |
1) нахождение суммы чисел от 1 до 50 ... sum:=0; i:=0; repeat i:=i+1; sum: = sum + i; until i=50; ... |
... while not eof(f) do begin read (f,i); writeln (i); end; ... |
... repeat read (f,i); writeln (i); until eof(f); ... |
... i:=0; while c<>’*’ do begin i:= i+1; read (c[i]); end; ... |
... i:=0; repeat i:=i+1; read(c[i]); until c=’*’; ... |
2. В языке Паскаль ввод-вывод информации осуществляется через файловые переменные.
Перед тем, как осуществить ввод-вывод, файловая переменная должна быть связана с конкретным внешним файлом с помощью процедуры ASSIGN. Этим файлом может быть файл на магнитном диске, а также устройство вычислительного комплекса. Затем файл должен быть открыт для чтения и/или записи. После этого можно осуществлять организацию ввода-вывода.
После работы с файлом он, как правило, должен быть закрыт с помощью процедуры CLOSE. Это требование обязательно должно соблюдаться для файла, в который производилась запись.
Процедура ASSIGN (Var_file, Road): с помощью этой процедуры вы связываете файловую переменную Var_file с некоторым именем файла, которое хранится в переменной Road.
Var
Var_file: file of integer;
Road: string[14];
...
Road:=’Data.dat’;
Assign (Var_file, Road);
Вы не можете связывать некоторую файловую переменную с файлом посредством этой процедуры в том случае, если данный файл уже открыт.
Процедура Reset: данная процедура открывает существующий файл данных, имя которого перед этим было связано при помощи процедуры Assign с некоторой файловой переменной, указанной в процедуре Reset как параметр.
Assign (var_file, ‘Data.dat’);
Reset (Var_file);
Данная процедура содержит необязательный параметр Size целого типа, который используется только с файлами без типа и задает размер пересылаемого элемента информации в байтах. По умолчанию этот параметр равен 128. Файл текстового типа может быть открыт либо для чтения процедурой Reset, либо для записи процедурой Rewrite или Append.
Процедура Rewrite: создает новый файл и открывает его для записи или чтения. Если файл с таким именем уже существует, его содержимое стирается, а сам файл открывается заново.
Rewrite (Var_file);
открывает существующий файл, связанный с файловой переменной Var_file.
Процедура Close: закрывает ранее открытый файл, связанный с указанной переменной в качестве параметра файловой переменной.
Close (Var_file);
При попытке закрыть файл, который не был до этого открыт или который уже закрыт, возникает ошибочная ситуация.
Процедура Rename: позволяет переименовать существующий файл, связанный с указанной в качестве параметра файловой переменной. Данная процедура применяется только к закрытым файлам.
Assign (Var_file, ‘Data.dat’);
Rename (Var_file, ‘Text.dat’);
Процедура Erase: стирает существующий файл с диска. При этом файловая переменная должна быть предварительно связана с реально существующим файлом.
Assign (Var_file, ‘Data.dat’);
Erase (Var_file);
Функция EOF: используя данную логическую функцию, в процессе считывания информации Вы можете проверить, достигнут ли конец файла, т.е. находится ли указатель файла за последним элементом или нет.
While not EOF (Var_file) do
read (Var_file, m[i]);
данный фрагмент программы иллюстрирует процесс чтения элементов массива из файла, связанного с переменной Var_file, до тех пор, пока не будет достигнут конец файла.
Функция IOResult: предназначена для поиска ошибок, возникающих при работе с файлами. Эта функция возвращает результат последней операции ввода-вывода, если автоматический контроль за ошибками, возникающими в процессе операций ввода-вывода, отключен с помощью директивы компилятора {$I-}. При безошибочном выполнении операций ввода-вывода данная функция возвращает ноль, если же ошибка имела место, то данная функция возвращает код ошибки.
{$I-}
Reset (‘C:data.dat’);
if IOResult <>0 then writeln (‘ Ошибка при открытии файла’);
{$I+}
Задание 2.
3.
Var
a,b,x,y:real;
Begin
write (‘Введите значение a’);
readln (a);
write (‘Введите значение b’);
readln (b);
write (‘Введите значение x’);
readln (x);
y:=(a+b)/(sqr(x)*sqr(x)*x+round(sqr(x)*x));
writeln (‘y=’,y:7:2);
End.
Задание 3а.
2.
Var
a:array[1..20] of integer;
i,n,b:integer;
m:real;
Begin
for i:=1 to 20 do
begin
readln (a[i]);
m:=m+a[i];
end;
m:=m/20;
b:=a[1];
for i:=1 to 20 do
if
a[i]
begin
n:=i;
break;
end;
for i:=1 to 20 do
write (a[i]);
writeln
(‘Среднее
арифмитическое
равно
’,m);
writeln
(‘Номер
элемента-’,n); End.
Задание 4.
3. Uses
crt; Type tch=record num:string[5]; name:string[50]; adress:string[80];
am:byte; end; Var
ch:tch; f1:file
of tch; f2:text; m:char; Begin clrscr;
assign
(f1,’1.dat’);
assign
(f2,’2.dat’); rewrite
(f1); rewrite
(f2); repeat clrscr;
write(‘Введите
номер читательского
билета:’);
readln
(ch.num);
write(‘Введите
фамилию:’);
readln
(ch.name);
write(‘Введите
адрес:’);
readln
(ch.adress);
write(‘Введите
количество
книг на руках:’);
readln
(ch.am);
write
(f1,ch);
write
(‘Для
прекращения
ввода нажмите
*’); readln
(m);
until
m=’*’; close
(f1);
reset
(f1); while
not eof(f1) do begin
read
(f1,ch); if
ch.am>5 then write (f2,ch.num,ch.name,ch.adress,ch.am);
end;
close (f1);
close (f2); End. Задание
1. Вариант
П.
1. Операторы
цикла позволяют
многократно
выполнять
отдельный
оператор или
последовательность
операторов,
причет при этом
нет необходимости
записывать
в тексте программы
одинаковые
операторы
несколько раз.
Оператор цикла
REPEAT
организует
выполнение
цикла, состоящего
из любого числа
операторов,
с неизвестным
заранее числом
повторений.
Тело цикла
выполняется
хотя бы один
раз. Выход из
цикла осуществляется
при истинности
некоторого
логического
выражения.
Структура этого
оператора:
repeat
operator1; operator2; operator3;
. . . operatorN until
S;
В этой структуре:
operator1..N -
выполняемые
операторы,
составляющие
тело цикла;
S
- логическое
выражение,
истинность
которого проверяется
в конце каждой
итерации.
Так как слова
repeat
и until
являются
своеобразными
операторными
скобками, точку
с запятой перед
словом
until ставить
необязательно.
Оператор цикла
WHILE
организует
выполнение
одного оператора
неизвестное
заранее число
раз. Выход из
цикла осуществляется,
если некоторое
логическое
выражение
окажется ложным.
Так как истинность
логического
выражение
проверяется
в начале каждой
итерации, тело
цикла может
не выполняться
ни разу. Структура
данного оператора
цикла имеет
вид:
while S do operator;
В данной структуре:
S
-
логическое
выражение,
истинность
которого проверяется
в начале каждой
итерации;
operator
- выполняемы
оператор цикла.
Между конструкциями
REPEAT ...
UNTIL и
WHILE ... DO имеются
три существенных
отличия.
В конструкции
WHILE ... DO
проверка
условия выхода
выполняется
в начале, а не
в конце цикла,
поэтому, если
условие не
удовлетворяется
до начала выполнения
цикла, то тело
цикла игнорируется
и выполняется
оператор, стоящий
сразу же после
окончания тела
цикла.
В конструкции
WHILE ... DO
условие выхода
из цикла удовлетворяется,
если выражение,
определяющее
условие выхода,
ложно, а в конструкции
REPEAT ...
UNTIL — если это
выражение
истинно.
Между зарезервированными
словами
REPEAT и UNTIL
может размещаться
несколько
инструкций,
в то время как
конструкция
WHILE ... DO
может содержать
максимум одну
инструкцию.
Примеры использования
операторов
цикла: WHILE
... DO REPEAT
... UNTIL
1) нахождение
суммы чисел
от 1 до 50
...
sum:=0;
i:=0;
while i<50 do
begin
i:=i+1;
sum: = sum + i;
end; ....
1) нахождение
суммы чисел
от 1 до 50
...
sum:=0;
i:=0;
repeat
i:=i+1;
sum: = sum + i;
until i=50;
...
вывод на экран
информации
из файла
...
while not eof(f) do
begin
read (f,i);
writeln (i);
end; ...
вывод на экран
информации
из файла
...
repeat
read (f,i);