Контрольные по информатике
Задание №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,’ позиции.’);
...
2. Как формируется имя переменной файлового типа в тексте
программы? По каким правилам формируется имя файла в операционной системе 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а.
9. Ввести одномерный массив 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б.
9. Написать программу анализа динамики поквартального роста
дохода различных социальных слоев населения в течении года. Для этого ввести
количество категорий слоев населения, название категорий населения и величину
дохода каждой категории по кварталам. Определить средний доход по всем
категориям за каждый квартал и во сколько раз увеличился доход в четвертом
квартале по сравнению с первым. Исходные данные и результаты расчетов
представить в виде таблицы.
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
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.