Реферат: Контрольные по информатике

Примеры логических выражений:

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.

Список литературы

  1. А.М. Епанешников. Программирование в среде Turbo Pascal 7.0. М., 1997.

  2. Турбо паскаль 7.0. Киев, 1996.

  3. В.В. Качала. Основы программирования на языке Турбо-паскаль. Мурманск, 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 имеются три существенных отличия.

  1. В конструкции WHILE ... DO проверка условия выхода выполняется в начале, а не в конце цикла, поэтому, если условие не удовлетворяется до начала выполнения цикла, то тело цикла игнорируется и выполняется оператор, стоящий сразу же после окончания тела цикла.

  2. В конструкции WHILE ... DO условие выхода из цикла удовлетворяется, если выражение, определяющее условие выхода, ложно, а в конструкции REPEAT ... UNTIL — если это выражение истинно.

  3. Между зарезервированными словами REPEAT и UNTIL может размещаться несколько инструкций, в то время как конструкция WHILE ... DO может содержать максимум одну инструкцию.


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

’*’ do

begin

i:= i+1;

read (c[i]);

end;

...

  1. ввод массива

...

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 имеются три существенных отличия.

  1. В конструкции WHILE ... DO проверка условия выхода выполняется в начале, а не в конце цикла, поэтому, если условие не удовлетворяется до начала выполнения цикла, то тело цикла игнорируется и выполняется оператор, стоящий сразу же после окончания тела цикла.

  2. В конструкции WHILE ... DO условие выхода из цикла удовлетворяется, если выражение, определяющее условие выхода, ложно, а в конструкции REPEAT ... UNTIL — если это выражение истинно.

  3. Между зарезервированными словами REPEAT и UNTIL может размещаться несколько инструкций, в то время как конструкция WHILE ... DO может содержать максимум одну инструкцию.


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

’*’ do

begin

i:= i+1;

read (c[i]);

end;

...

  1. ввод массива

...

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.

6.

uses crt;

var

z,m,n:real;

x,i:integer;


Begin

clrscr;

write ('Введите x:');

readln (x);

m:=1;

for i:=1 to x do

m:=m*3;

m:=1/m;

n:=sqrt(sqrt(abs(x)));

n:=x+n;

n:=sqrt(n);

z:=m*n;

writeln ('z=',z:8:4);

end.

Задание 3-а.

0.

uses crt;

var

ar:array[1..100] of integer;

i,am,num:integer;

Begin

num:=0;

clrscr;

write ('Введите размерность массива:');

readln (am);

writeln ('Введите массив:');

for i:=1 to am do readln (ar[i]);

clrscr;

i:=0;

for i:=1 to am do

if ar[i]<0 then num:=i;

for i:=1 to am do

write (ar[i]:3,';');

writeln;

if num<>0 then writeln ('Первый отрицательный элемент:',num);

end.


Задание 4.

6.

uses crt;

type tpat=record

name:string[50];

diag:string;

num,temp:integer;

sost:string;

end;

var

pat:tpat;

f:file of tpat;

t:text;

i:integer;

ch:char;


Begin

clrscr;

assign (f,'1.dat');

assign (t,'1.txt');

rewrite (f);

rewrite (t);

while ch<>'*' do

begin

write ('Введите фамилию пациента:');

readln (pat.name);

write ('Введите номер палаты:');

readln (pat.num);

write ('Введите температуру больного:');

readln (pat.temp);

write ('Введите диагноз:');

readln (pat.diag);

write ('Введите состояние больного:');

readln (pat.sost);

write (f,pat);

clrscr;

write ('Продолжить ввод? *-нет');

readln (ch);

end;

while not eof(f) do

begin

read (f,pat);

if pat.num=10 then writeln (t,pat.name,pat.diag,pat.sost,pat.temp);

end;

end.


Задание 1.

№1.

  1. z = -(1 / 2) ^ -2

  2. b = 13.2 * 10 ^ -3

  3. g = 25000

  4. y = ((m * c - 1) / 11) ^ (1 / 5)

  5. f = (SIN(x)) / (x + EXP(x))

  6. t = (SIN(x) - a * COS(x)) / (COS(x) + b)

№2.

  1. Постановка задачи

Найти радиус основания цилиндра, имеющего при данном объеме наименьшую поверхность,

R=, V= 750 см3

Константы: V,

Выходные данные: R

  1. Математическая модель задачи


R=

  1. Схема алгоритма


1.Начало



2.Вычисление R




3. Вывод R



4. Конец


4. Текст программы.

CLS

v = 750

pi = 3.14

r = (v / 2 * pi) ^ (1 / 3)

PRINT r


Задание №2.

  1. Постановка задачи

x3+3x, если x>0

Вычислить значение функции y= 0, если x=0

x3-3x, если x<0

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

Входные данные: x

Выходные: y

  1. Математическая модель задачи

y=x3+3x, если x>0

y=0, если x=0

y=x3-3x, если x<0

  1. Схема алгоритма


1. Начало




2. Ввод x





3. x=0 4. y=0




  1. y=x3-3x 5. x<0




7. y=x3+3x


8. Вывод y


9.Конец


  1. Текст программы

10 CLS

20 INPUT x

30 IF x = 0 THEN y = 0

40 IF x <= 0 THEN y = x ^ 3 - 3 * x ELSE y = x ^ 3 + 3 * x

50 PRINT y

  1. Отладка программы

Контрольный вариант: при x=0 y=0

при x=-1 y=2

при x=2 y=14


№2.

  1. Постановка задачи

q1=, если l>1

Вычислить значение функции q1=, если l<1

q1=, если l=1

Входные данные: l

Выходные данные: q1

  1. Математическая модель задачи

q1=, если l>1

q1=, если l<1

q1=, если l=1

  1. Схема алгоритма

1.Начало




2.Ввод l



4. q1= 3.l=1




5.l<1 6. q1=



7.q1=



8.Вывод q1




9.Конец


  1. Текст программы

10 CLS

20 INPUT l

30 IF l = 1 THEN q1 = (l ^ 2 + 1) ^ (1 / 3)

40 IF l <= 1 THEN q1 = SQR(l ^ 2 + 1) ELSE q1 = 2.5 / (l - 7)

50 PRINT q1

  1. Отладка программы

Контрольный вариант: при l=2 y=-0.5

при l=1 y=1.414214

при l=-2 y=2.236068

Задание№3.

№1.

  1. Постановка задачи

Как изменяется центростремительное ускорение поезда, движущегося по закруглению дороги со скоростью V, в зависимости от радиуса r?

a=, где r=60 км/ч; 200<=r<=1000 м с шагом 100 м.

  1. Математическая модель задачи

a=, где r={200..1000}


  1. Схема алгоритма


1.Начало



2.a1=


3.a=200,1000,100



4.Вывод a



5.Вывод изменения ускорения




6.Конец


  1. Текст программы

10 CLS

20 v = 60

30 a1 = v ^ 2 / 200

40 FOR r = 200 TO 1000 STEP 100

50 a = v ^ 2 / r

60 PRINT a

70 NEXT r

80 ax = v ^ 2 / 1000

90 ax = ax - a1

100 PRINT ax

5. Отладка программы

При радиусе равном: 200 ускорение равно: 18

1000 3.6

изменение равно: 14.4

№2.

  1. Постановка задачи

Определить статический и динамический прогибы балки по формулам

fcт =,fд= fcт+


E=2*106 кг/см2; J=2500 см4; Q=4 т;

6<=l<=12 м c шагом 3 м;

1<=h<=5 м с шагом 1м.

  1. Математическая модель задачи

fcт =,fд= fcт+


l={6..12};

h={1..5}.

  1. Схема алгоритма



1.Начало



2.l=6,12,3 7. fcт =



8. Вывод fcт

3.fcт =


9. Конец


4.h=1,5,1




  1. fд = fcт+


6. Вывод fд

  1. Текст программы

10 CLS

20 e = 2 * 10 ^ 6

30 j = 2500

40 q = 4000

50 FOR l = 6 TO 12 STEP 3

60 fs = q * l ^ 3 / 48 * e * j

70 FOR h = 1 TO 5

80 fd = fs + SQR(fd ^ 2 + 2 * fd * h)

90 PRINT fd

100 NEXT h

110 NEXT l

120 fs = q * l ^ 3 / 48 * e * j

130 PRINT fs


Отечественное программирование зародилось в 50-х годах 20 века в крупных научных центрах, осваивавших первые советские вычислительные машины БЭСМ и «Стрела».

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

Бэйсик — первая ступень, школьная информатика;

Паскаль — вторая ступень, информатика в специализированных школах и большинстве ВУЗов;

Си, Си++ — третья ступень, стандартное профессиональное образование;

Visual Basic — четвертая ступень, программирование в среде Windows.

Однако при более глубоком анализе можно заметить очень тесное взаимопроникновение со­временных версий алгоритмических языков и сближение их функциональных возможностей. В развитых современных системах программи­рования предлагаются примерно эквивалентные возможности. Там, где трудно обойтись стандар­тными средствами алгоритмического языка вы­сокого уровня, используют вставки из ассемб­лерных строк (т. е. команд машинного языка). Иногда тот или иной язык вырывается вперёд. Например, появление и развитие элементов объ­ектно-ориентированного программирования в Си++ моментально вызвало к жизни аналогич­ные изменения в других языках. Революцион­ная идея общедоступного «визуального» про­граммирования, предложенная в системе Visual BASIC, сразу же была подхвачена в среде Visual Сив той или иной мере нашла своё отражение в новых версиях Borland C++.

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

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

Своим названием BASIC обязан сокращению фразы Beginner's All-purpose Symbolic Instruc­tion Code, которая дословно переводится как многоцелевой код (язык) символических инст­рукций для начинающих. Авторство и первая реализация языка Бейсик принадлежат груп­пе преподавателей и студентов Дартмутского колледжа во главе с профессорами Дж. Кемени и Т. Куртцем, которые 1 мая 1964 вдохнули жизнь в первый Бейсик-интерпретатор.

Бейсик открыл эру диалогового программи­рования. До него культивировался пакетный


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

Системы коллективного доступа, работавшие в диалоговом режиме, обеспечивали одновре­менное обслуживание нескольких пользовате­лей, запускавших свои программы с электроме­ханических или электронных терминалов. Опе­ративно получив сообщение об очередной ошибке, пользователь имел возможность тут же исправить текст исходной программы и снова выполнить её. Диалоговый режим, естествен­но, был связан с дополнительными накладными расходами на многотерминальное обслужива­ние. Загрузка ЭВМ при этом снижалась, но оперативность в отладке программ приводила к существенному сокращению календарных сро­ков их разработки.

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

Вторая особенность, привлекающая массово­го потребителя к Бейсику, кроется в простоте начального освоения и краткости его изобрази­тельных средств. Попробуйте найти хотя бы еще один язык, на котором программа, отвечаю­щая на вопрос, чему равно 2-2, состоит всего из четырёх символов1:

?2*2

Аналогичная программа на Паскале содер­жит, минимум, три строки, а её длина превы­шает 20 символов:

begin

(writein 2*2);

end.

Примерно вдвое больше символов требуется для аналога на Си:

#include main()

{printf("%d",2*2);

}

Второе поколение Бейсик-систем ведёт свой отсчёт от появления первых ПК на базе 8-раз­рядных микропроцессоров Intel-8080 и Z-80, для которых в середине 70-х гг. был разработан ком­пактный интерпретатор BASIC-80. Именно с не­го началась карьера самого молодого амер. мил­лиардера Б. Гейтса, основавшего корпорацию Microsoft.

Появление 16-разрядных IBM-совместимых ПК ознаменовалось конкурентной борьбой меж­ду компаниями Borland International и Microsoft Corporation. Первая из них выпустила на рынок удобную интегрированную среду с компилято­ром Turbo BASIC, которая быстро привлекла на свою сторону многочисленных любителей Бей­сика. Однако вторая, более мощная компания, не могла смириться с таким положением. На смену тихоходному интерпретатору GW-BASIC пришла целая серия скоростных систем Quick 'BASIC, в составе которых наряду с интегриро­ванной средой поставлялись автономные ком­пиляторы и достаточно мощные библиотеки про­грамм. Соревнование Бейсик-систем третьего поколения закончилось поражением фирмы Borland, прекратившей свои разработки и пере­давшей права на Turbo BASIC одному из авто­ров, вышедшему из состава компании. О даль­нейших попытках реанимировать Turbo BASIC под названием Power BASIC (Мощный Бейсик) кроме рекламных сообщений ничего не изве­стно.

А фирма Microsoft продолжила совершенство­вание своего любимого детища, выпустив в кон­це 80-х гг. мощные системы для профессиональ­ных разработок (Professional Development Sys­tem) BASIC PDS-6 и PDS-7.

Наконец, четвёртое поколение Бейсика свя­зано с появлением в 1991 системы программи­рования Visual BASIC и её последующим совер­шенствованием сотрудниками Microsoft. К на­чалу 1995 поступили сообщения об опытной эксплуатации версии 4.0.

Алгоритмический язык Паскаль был приду­ман в 1968 профессором Института информати­ки при Швейцарской высшей технической школе Н. Виртом. В 1970 под его руководством оыл разработан первый компилятор, а в следу­ющем году появилась и первая публикация. Своё название язык получил в честь известного Франц. математика Б. Паскаля, который в 19-летнем возрасте изобрёл первую суммирую-щую машину.

1

Новый язык, являясь продолжателем тради­ций алгоритмического языка АЛГОЛ-60, был ориентирован, главным образом, на обучение курсу систематического программирования. В Паскале были представлены наиболее распрост­ранённые типы данных и средства для создания пользовательских структур. К числу элементов, способствующих созданию надёжных про­грамм, относились блочные конструкции и тре­бование обязательного описания (объявления) всех объектов - типов данных, констант, пере­менных, меток, функций и процедур.

Заметную роль в разработке стандарта языка Паскаль и совершенствовании его средств вво­да/вывода сыграла рабочая группа Британского института стандартов во главе с А. Эддиманом. Британский стандарт был принят в 1982, а несколько позднее его утвердила международ­ная организация ISO. Однако к этому времени Н. Вирт, недовольный предложениями рабо­чей группы, отказался от сотрудничества по совершенствованию Паскаля и переключился на новый проект Модула.

Язык Паскаль довольно долго оставался средством для изучения программирования в университетах, т. к. ни одна серьёзная компь­ютерная фирма его не поддерживала. Пере­лом в отношении к этому языку наметился в 1984, когда молодой француз Ф. Кан привёз в США необычайно скоростной компилятор Turbo-Pascal для IBM-совместимых ПК и начал торговать им по цене 49 долларов 95 центов. Удачная реклама и «бросовая» цена позволили ему продать за первый месяц более 3000 копий системы и заложить основы фирмы Borland In­ternational. Последующие 8 лет Turbo Pascal ос­тавался наиболее опекаемым продуктом фир­мы, которая сумела выпустить более 9 различ­ных версий. Самая свежая из них (7.0; 1992) включает две системы - Turbo Pascal, функци­онирующую под управлением MS-DOS, и рас­ширенную версию Borland Pascal, работающую в среде Windows. Возможно, что после ухода в 1995 Кана с поста президента фирма Borland изменит свою политику в отношении языка Пас­каль.

Язык Си был придуман в 1972 сотрудником Bell Laboratories (отделение известной телефон­ной компании AT&T) Д. Ритчи, одним из пер­вых пользователей операционной системы Unix, и задумывался не как универсальный алгоритмический язык, а, скорее, как инстру­мент для развития операционной системы и создания новых обслуживающих программ (утилит). Такой подход характерен для боль­шинства системных программистов, разрабаты­вающих сложные проекты и придумывающих для облегчения своего труда различные сервис­ные процедуры, макрокоманды и т. п. По завер-я

i

t шению разработки эти инструментальные набо­ры, как правило, предаются забвению или, в | лучшем случае, остаются в личных архивах | авторов. Язык Си, однако, эта участь миновала. § Вполне возможно, что его становлению способ-| ствовало- последующее всемирное признание •^ операционной системы Unix.

Как алгоритмический язык сравнительно низкого уровня, т. е. достаточно близкий к ас­семблеру, Си имел предшественников в лице . аналогичных инструментальных средств - язы-; ков CPL, BCPL (сокр. от Basic Combined Pro-| gramming Language - базовый комбинирован-i ный язык программирования) и В. Два первых языка разрабатывались в конце 60-х гг. в Кемб­риджском университете в качестве машинно-не­зависимых языков для создания трансляторов1. Последний был придуман К. Томпсоном - со­трудником Bell Laboratories и автором операци­онной системы Unix. В отличие от своих пред­шественников, Ритчи наряду с машинно-ориен­тированными типами данных (байт, слово) ввёл в состав Си объекты и операторы, присущие универсальным языкам (числовые и символь­ные переменные, структурные блоки), сохра­нив при этом элементы, характерные для мак­роассемблера MACRO-11 (логические операции над битами, сдвиги, работа с адресами и реги­страми).

Первым программным продуктом, написан­ным почти полностью на Си, был компилятор с языка Си в код машинных команд PDP-11/20 (прототип СМ-4). В 1973 Ритчи и Томпсон пере­писали на Си большую часть операционной си­стемы Unix. Из 13000 машинных команд для PDP-7, на которой появилась первая версия Unix, только 800 пришлось вручную перевести в ассемблер PDP-11. В процессе перевода Unix из однопользовательской операционной систе­мы, ориентированной на работу в конкретной ЭВМ, превратилась в мобильную операционную систему коллективного пользования. Успех этой операции в значительной мере предопре­делил популярность новой операционной систе­мы и её базового инструмента - языка Си. Б 1976 Ритчи и Томпсон перенесли Unix с ЭВМ фирмы DEC на компьютеры другой архитекту­ры (Interdata 8/32), практически ничего не изменив в ядре операционной системы, напи­санном на Си. Точно таким же образом Unix распространялся на десятках машин различных типов.

В 1978 появилась первая книга, посвящённая описанию Си и технике программирования не

этом языке, которая с большим запозданя была переведена на русский язык (Ken»81* ган Б., Ритчи Д., Фьюэр А. Язык программ^ рования Си. Задачи на языке Си. М.: Фиван и статистика, 1985). От фамилий двух перв^* авторов произошло сокращённое обозначенм* первого, никем не утверждавшегося, но пpивяe того всеми программистами стандарта язык Си - K&R. а

Дальнейшая работа по совершенствованию языка Си и принятию в 1987 первого настояше го стандарта ANSI С была выполнена на обще­ственных началах рабочей группой при Амери­канском национальном институте стандартов Возглавлял эту работу сотрудник Bell Labs Л. Рослер. Наиболее серьёзный вклад в разви­тие языка Си за последние годы внёс ещё один представитель той же лаборатории Б. Страуст-руп, который ввёл в обращение новые объек­ты - классы, объединяющие данные и обраба­тывающие их функции.. С 1983 за расширенной версией языка Си с классами закрепилось назва­ние C++.

Первые версии Си подвергались серьёзной критике за отсутствие достаточной строго­сти, что приводило к многочисленным ошиб­кам из-за работы с неинициализированными переменными, отсутствия контроля за выходом индексов у элементов массивов за установлен­ные пределы, несоответствия типов формаль­ных и фактических параметров функций и т. п. Перед системными программистами Bell Labs эти проблемы остро не стояли, т. к. они пользо­вались специальной программой Lint, которая проводила тщательный анализ программ, напи­санных на Си, перед их трансляцией и выпол­нением. Для рядовых пользователей ситуация изменилась с появлением интегрированных сред, среди которых наибольшую популярность приобрели Турбо-системы фирмы Borland. Пер­вая версия Turbo С, работавшая в среде MS-DOS, была выпущена в 1987. К середине 1995 фирма Borland вышла на рынок с вер­сией 4.5, предназначенной для работы под уп­равлением Windows. Известны и другие реали­зации языка Си на IBM-совместимых ПК - Mi­crosoft С, Lattice С, Zortech С, Symantec С. Но в нашей стране продукция фирмы Borland по­лучила наибольшее распространение.


Задание 1.

Вариант В.


1.

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

Объявление констант начинается зарезервированным словом CONST. Затем следует имя константы, символ равенства и значение этой константы. Например:


CONST Name=’Alex’;


CONST Age=18;


После объявления константы ее можно вызывать по объявленному имени из произвольного места программы.

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

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


CONST

Year:INTEGER=2000;

Mon:String=’December’;


2.

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

Для задания типа файл следует использовать зарезервированные слова file и of, после чего указать тип компонент файла.

Type

number = file of integer;

symb = file of ‘A’..’Z’;


Стандартный тип Text определяет тип файла, содержащий символы, объединенные в строки. Следует иметь ввиду, что тип Text в Турбо-Паскале не эквивалентен тину file of char.

Введя файловый тип, можно определять переменные файлового типа:


Var

F1:number;

F2:Text;


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

Тип файл можно определять и непосредственно при введении файловых переменных.

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

Задание 2(8).


Var

x,a,b,c,y:real;


Begin

write (‘Введите 2 числа’ );

readln ( y,b);

c:=y+b;

a:=sqr (sin(c*c*c)/cos(c*c*c));

b:=sqrt (y+b)/(y*pi);

x:=a+b;

writeln (‘x=’,x:7:2);

End.


Задание 3-а(5).

Uses crt;

Var

a,b:array[1..10] of integer;

i,m:byte;

Begin

clrscr;

m:=1;

for i:=1 to 10 do

begin

write (‘Введите ’,i,‘-ый элемент массива:’);

readln (a[i]);

if a[i]<0 then begin

b[m]:=a[i];

inc(m);

end;

end;

clrscr;

writeln (‘Исходный массив:’);

for i:=1 to 10 do write (a[i]);

writeln;

writeln (‘Массив, состоящий из отрицательных чисел:’);

for i:=1 to m do write (b[i]);


End.

Задание 4(8).

Uses crt;

Type

tcm=record

name: string[50];

amountw:integer;

amountwo:integer;

date:string[8];

Var

cm=tcm;

F1:file of tcm;

F2: text;

m:char;

Begin

clrscr;

assign (F1,’1.dat’);

assign (F2,’1.txt’);

rewrite (F1);

rewrite (F2);

repeat

clrscr;

write (‘Введите фамилию и инициалы ’);

readln (cm.name);

write (‘Введите количество голосующих акций ’);

readln (cm.amountw);

write (‘Введите количество неголосующих акций ’);

readln (cm.amountwo);

write (‘Введите дату регистрации ’);

readln (cm.date);

write (F1,cm);

writeln (‘Чтобы закончить ввод, введите *’);

readln (m);

until m=’*’;

while not eof(F1) do

begin

read (F1,cm);

if cm.amountw>100 then write (F2, cm.name, cm.amountw, cm.amountwo, cm.date);

end;

close (F1);

close (F2);

End.


6. Языки программирования и их классификация.

Отечественное программирование зародилось в 50-х годах 20 века в крупных научных центрах, осваивавших первые советские вычислительные машины БЭСМ и «Стрела».

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

Бэйсик — первая ступень, школьная информатика;

Паскаль — вторая ступень, информатика в специализированных школах и большинстве ВУЗов;

Си, Си++ — третья ступень, стандартное профессиональное образование;

Visual Basic — четвертая ступень, программирование в среде Windows.

Однако при более глубоком анализе можно заметить очень тесное взаимопроникновение со­временных версий алгоритмических языков и сближение их функциональных возможностей. В развитых современных системах программи­рования предлагаются примерно эквивалентные возможности. Там, где трудно обойтись стандар­тными средствами алгоритмического языка вы­сокого уровня, используют вставки из ассемб­лерных строк (т. е. команд машинного языка). Иногда тот или иной язык вырывается вперёд. Например, появление и развитие элементов объ­ектно-ориентированного программирования в Си++ моментально вызвало к жизни аналогич­ные изменения в других языках. Революцион­ная идея общедоступного «визуального» про­граммирования, предложенная в системе Visual BASIC, сразу же была подхвачена в среде Visual С и в той или иной мере нашла своё отражение в новых версиях Borland C++.

Своим названием BASIC обязан сокращению фразы Beginner's All-purpose Symbolic Instruc­tion Code, которая дословно переводится как многоцелевой код (язык) символических инст­рукций для начинающих. Авторство и первая реализация языка Бейсик принадлежат груп­пе преподавателей и студентов Дартмутского колледжа во главе с профессорами Дж. Кемени и Т. Куртцем, которые 1 мая 1964 вдохнули жизнь в первый Бейсик-интерпретатор.

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

Заметную роль в разработке стандарта языка Паскаль и совершенствовании его средств вво­да/вывода сыграла рабочая группа Британского института стандартов во главе с А. Эддиманом. Британский стандарт был принят в 1982, а несколько позднее его утвердила международ­ная организация ISO. Однако к этому времени Н. Вирт, недовольный предложениями рабо­чей группы, отказался от сотрудничества по совершенствованию Паскаля и переключился на новый проект Модула.

Язык Паскаль довольно долго оставался средством для изучения программирования в университетах, т. к. ни одна серьёзная компь­ютерная фирма его не поддерживала. Пере­лом в отношении к этому языку наметился в 1984, когда молодой француз Ф. Кан привёз в США необычайно скоростной компилятор Turbo-Pascal для IBM-совместимых ПК.

Язык Си был придуман в 1972 сотрудником Bell Laboratories (отделение известной телефон­ной компании AT&T) Д. Ритчи, одним из пер­вых пользователей операционной системы Unix, и задумывался не как универсальный алгоритмический язык, а, скорее, как инстру­мент для развития операционной системы и создания новых обслуживающих программ (утилит).

Первым программным продуктом, написан­ным почти полностью на Си, был компилятор с языка Си в код машинных команд PDP-11/20 (прототип СМ-4). В 1973 Ритчи и Томпсон пере­писали на Си большую часть операционной си­стемы Unix. Из 13000 машинных команд для PDP-7, на которой появилась первая версия Unix, только 800 пришлось вручную перевести в ассемблер PDP-11. В процессе перевода Unix из однопользовательской операционной систе­мы, ориентированной на работу в конкретной ЭВМ, превратилась в мобильную операционную систему коллективного пользования. Успех этой операции в значительной мере предопре­делил популярность новой операционной систе­мы и её базового инструмента - языка Си. Б 1976 Ритчи и Томпсон перенесли Unix с ЭВМ фирмы DEC на компьютеры другой архитекту­ры (Interdata 8/32), практически ничего не изменив в ядре операционной системы, напи­санном на Си. Точно таким же образом Unix распространялся на десятках машин различных типов.

Дальнейшая работа по совершенствованию языка Си и принятию в 1987 первого настоящего стандарта ANSI С была выполнена на обще­ственных началах рабочей группой при Амери­канском национальном институте стандартов Возглавлял эту работу сотрудник Bell Labs Л. Рослер. Наиболее серьёзный вклад в разви­тие языка Си за последние годы внёс ещё один представитель той же лаборатории Б. Страуструп, который ввёл в обращение новые объек­ты - классы, объединяющие данные и обраба­тывающие их функции.. С 1983 за расширенной версией языка Си с классами закрепилось назва­ние C++.

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

языки программирования бывают — высокого (Паскаль, Бэйсик) и низкого уровня (Ассемблер); строго типизированными (Паскаль) и нестрого типизированными (Бэйсик); с поддержкой объектно-ориентированного программирования (Си++) и без и т.д.


Задание №1.

Вариант Р.


  1. Какие строковые функции используются в Турбо-Паскале? Задайте какие-либо строковые переменные и примените к ним строковые функции.


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

Переменная типа String состоит из цепочки символов, т.е. элементов типа Char. Строки могут выводиться на экран монитора посредством стандартных процедур Write и WriteLn и вводиться с помощью стандартной процедуры ReadLn или Read. В большинстве случаев переменные типа String используются для хранения слов и сообщений, состоящих из нескольких символов.

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

Length — позволяет определить фактическую длину текстовой строки, хранящейся в указанной переменной.

Var

Words: String;

Begin

Write (‘ Введите слово:’);

ReadLn (Words);

WriteLn;

WriteLn (‘Это слово состоит из ‘, Length (Words),’букв’);

End.

UpCase — позволяет преобразовать любой символ из строчного в прописной. Эта функция рассчитана на обработку отдельного символа. Русские литеры не могут обрабатываться этой функцией.

Var

S: String;

I: Integer;

Begin

S:=’alex’;

For I=1 to 4 do S[I]:=UpCase (S[I]);

WriteLn (S);

End.

На экран будет выведена надпись: ALEX.

Copy — позволяет копировать фрагмент некоторой строки из одной переменной в другую. Вызывая данную функцию необходимо указать следующие параметры:

  1. имя строки, из которой должен извлекаться копируемый фрагмент;

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

  3. число копируемых символов.

Var

s:string[8];

s1:string[3];

Begin

s:=’домашний’;

s1:=Copy (s,1,3);

writeln (s1); {на экран выводится: дом}

End.

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

...

s:=’машина’;

i:=pos (‘шина’,s);

if i=0 then writeln (‘ данный фрагмент не содержится в строке’) else

writeln (‘ данный фрагмент содержиться в строке начиная с ‘,i:3,’ позиции.’);

...


  1. Как формируется имя переменной файлового типа в тексте программы? По каким правилам формируется имя файла в операционной системе MS-DOS? Какая процедура используется для связывания конкретной файловой переменной программы с конкретным файлом на внешнем устройстве? Приведите примеры имен файловой переменной и имен файла на внешнем устройстве.


Правила формирования файловой переменой в языке Турбо-Паскаль совпадают с правилами формирования обычной переменной:

  1. переменная должна состоять из латинских строчных и/или прописных букв, а также арабских цифр от 0 до 9 (цифры можно использовать наряду с буквами начиная со второй позиции) и символа подчеркивания (ASCII-код 95);

  2. имя переменной должно начинаться с латинской буквы или символа подчеркивания;

  3. пробел в Турбо-Паскале является разделителем и не может быть использован в имени переменной;

  4. применение других символов в именах переменных не допускается;

  5. зарезервированные слова также не могут быть использованы в качестве имен переменных.


Имена файлов в системе MS-DOS.

Каждый файл на диске имеет обозначение, которое состоит из двух частей: имени и расширения ( часто имя и расширение вместе также называют именем, как правило, это не приводит к путанице). В имени файла может быть от 1 до 8 символов. Расширение начинается с точки, за которой следует от 1 до 3 символов. Например:

command.com

autoexec.bat

config.sys

paper.doc

Имя и расширение могут состоять из прописных и строчных латинских букв, цифр и символов: - _ $ # & @ ! % () {} ’ ~ ^

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

В имени и расширении имени файла прописные и строчные латинские буквы являются эквивалентами, так как DOS переводит все строчные буквы в соответствующие прописные буквы.


Процедурой, которая связывает имя файловой переменной с конкретным файлом на диске, является процедура Assign(<имя файловой переменной>,<имя файла на диске>).

Var

filename: file of integer;

path:string;

Begin

write (‘ Введите имя файла на диске:’);

readln (path);

assign (filename,path);

...


Задание №2.

9.Вычислить значение переменной по расчетной формуле и исходным данным. На экран вывести значение исходных данных и результаты расчетов.

Q=


uses crt;

var

q,b,s,x:real;

begin

clrscr;

write ('Введите значение x:');

readln (x);

write ('Введите значение b:');

readln (b);

write ('Введите значение s:');

readln (s);

clrscr;

q:=(b*sqrt(x)-s)/(exp(s*x)-1);

writeln ('Исходные данные');

writeln ('x=',x:5:2,',b=',b:5:2,',s=',s:5:2);

writeln ('Результат');

writeln ('Q=',q:8:2);

readln;

end.


Задание №3а.

  1. Ввести одномерный массив X вещественных чисел. Размерность массива 7. Переписать элементы этого массива в обратном порядке в массив Y. Вывести на экран массивы X и Y.


uses crt;

var

x,y:array [1..7] of real;

i:integer;

begin

clrscr;

writeln ('Ввод элементов массива');

for i:=1 to 7 do

begin

gotoxy (29,2);

writeln (' ');

gotoxy (1,2);

write ('Введите ',i,'-й элемент массива:');

readln (x[i]);

end;

for i:=7 downto 1 do y[i]:=x[8-i];

clrscr;

writeln ('Массив X:');

for i:=1 to 7 do

begin

write (x[i]:3:2,';');

end;

writeln;

writeln ('Массив Y:');

for i:=1 to 7 do

begin

write (y[i]:3:2,';');

end;

end.


Задание №3б.

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


uses crt;

type

tkat_inf=record

name:string[30];

income:array [1..4] of real;

end;


var

num,int:integer;

kat_inf:array [1..100] of tkat_inf;

first,second,third,forth:real;


procedure input_data(var n:tkat_inf);

var i:integer;

begin

clrscr;

write ('Введите название категории:');

readln (n.name);

for i:=1 to 4 do

begin

gotoxy (44,2);

writeln (' ');

gotoxy (1,2);

write ('Введите доход данной группы за ',i,'-й квартал:');

readln (n.income[i]);

end;

end;


procedure output_data (b:tkat_inf);

var i:integer;

begin

writeln

(b.name:30,'|',b.income[1]:7:2,'|',b.income[2]:7:2,'|',b.income[3]:7:2,'|',b.income[4]:8:2,'|',b.income[4]/b.income[1]:15:2);

writeln ('------------------------------+-------+-------+-------+--------+---------------');

end;

Begin

clrscr;

num:=101;

while num>100 do

begin

write ('Введите количество категорий населения (<=100):');

readln (num);

end;

for int:=1 to num do input_data (kat_inf[int]);

clrscr;

writeln ('-----------------------------------------------------------------------------------------');

writeln ('Название категории | Средний доход | Увеличение ');

writeln (' |----------------------------------| дохода ');

writeln (' | I | II | III | IV | за год ');

writeln ('----------------------------------+-------+-------+-------+-------+------------------');

for int:=1 to num do

begin

output_data (kat_inf[int]);

first:=first+kat_inf[int].income[1];

second:=second+kat_inf[int].income[2];

third:=third+kat_inf[int].income[3];

forth:=forth+kat_inf[int].income[4];

end;

writeln ('средний доход за квартал |',first/num:7:2,'|',second/num:7:2,'|',third/num:7:2,'|',forth/num:8:2,'| -');

writeln ('-------------------------------------------------------------------------------');

End.