Контрольные по информатике
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.
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.
z = -(1 / 2) ^ -2
b = 13.2 * 10 ^ -3
g = 25000
y = ((m * c - 1) / 11) ^ (1 / 5)
f = (SIN(x)) / (x + EXP(x))
t = (SIN(x) - a * COS(x)) / (COS(x) + b)
№2.
Постановка задачи
Найти радиус основания цилиндра, имеющего при данном объеме наименьшую поверхность,
R=,
V=
750 см3
Константы:
V,
Выходные данные: R
Математическая модель задачи
R=
Схема алгоритма
1.Начало
2.Вычисление R
3. Вывод R
4. Конец
4. Текст программы.
CLS
v = 750
pi = 3.14
r = (v / 2 * pi) ^ (1 / 3)
PRINT r
Задание №2.
Постановка задачи
x3+3x, если x>0
Вычислить значение функции y= 0, если x=0
x3-3x, если x<0
для произвольных значений аргумента
Входные данные: x
Выходные: y
Математическая модель задачи
y=x3+3x, если x>0
y=0, если x=0
y=x3-3x, если x<0
Схема алгоритма
1. Начало
2. Ввод x
3. x=0 4. y=0
y=x3-3x 5. x<0
7.
y=x3+3x
8.
Вывод
y
9.Конец
Текст программы
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
Отладка программы
Контрольный вариант: при x=0 y=0
при x=-1 y=2
при x=2 y=14
№2.
Постановка задачи
q1=,
если l>1
Вычислить
значение функции
q1=,
если l<1
q1=,
если l=1
Входные данные: l
Выходные данные: q1
Математическая модель задачи
q1=,
если l>1
q1=,
если l<1
q1=,
если l=1
Схема алгоритма
1.Начало
2.Ввод l
4.
q1=
3.l=1
5.l<1 6. q1=
7.q1=
8.Вывод q1
9.Конец
Текст программы
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
Отладка программы
Контрольный вариант: при l=2 y=-0.5
при l=1 y=1.414214
при l=-2 y=2.236068
Задание№3.
№1.
Постановка задачи
Как изменяется центростремительное ускорение поезда, движущегося по закруглению дороги со скоростью V, в зависимости от радиуса r?
a=,
где r=60
км/ч; 200<=r<=1000
м с шагом
100 м.
Математическая модель задачи
a=,
где r={200..1000}
Схема алгоритма
1.Начало
2.a1=
3.a=200,1000,100
4.Вывод a
5.Вывод изменения ускорения
6.Конец
Текст программы
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.
Постановка задачи
Определить статический и динамический прогибы балки по формулам
fcт
=,fд=
fcт+
E=2*106 кг/см2; J=2500 см4; Q=4 т;
6<=l<=12 м c шагом 3 м;
1<=h<=5 м с шагом 1м.
Математическая модель задачи
fcт
=,fд=
fcт+
l={6..12};
h={1..5}.
Схема алгоритма
1.Начало
2.l=6,12,3 7.
fcт
=
8.
Вывод fcт
3.fcт
=
9. Конец
4.h=1,5,1
fд = fcт+
6.
Вывод
fд
Текст программы
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 Instruction Code, которая дословно переводится как многоцелевой код (язык) символических инструкций для начинающих. Авторство и первая реализация языка Бейсик принадлежат группе преподавателей и студентов Дартмутского колледжа во главе с профессорами Дж. Кемени и Т. Куртцем, которые 1 мая 1964 вдохнули жизнь в первый Бейсик-интерпретатор.
Бейсик открыл эру диалогового программирования. До него культивировался пакетный
режим, при котором бумажные или магнитны носители с программами сдавались дежурному оператору и упорядочивались в соответствии с приоритетами их владельцев. Составленный таким образом пакет программ поступал в ЭВМ на последовательную обработку. При этом достигалась максимальная загрузка оборудования, но каждая программа выполнялась либо до первой автоматически обнаруженной ошиб. ки, либо до истечения лимита заказанного времени. Информация о результатах прохождения программ выдавалась их авторам 2-3 раза в сутки. Поэтому календарные сроки создания программ затягивались на многие месяцы.
Системы коллективного доступа, работавшие в диалоговом режиме, обеспечивали одновременное обслуживание нескольких пользователей, запускавших свои программы с электромеханических или электронных терминалов. Оперативно получив сообщение об очередной ошибке, пользователь имел возможность тут же исправить текст исходной программы и снова выполнить её. Диалоговый режим, естественно, был связан с дополнительными накладными расходами на многотерминальное обслуживание. Загрузка ЭВМ при этом снижалась, но оперативность в отладке программ приводила к существенному сокращению календарных сроков их разработки.
Бейсик был одним из первых алгоритмических языков, в составе которого изначально присутствовали операторы общения пользователя с пошагово выполняющейся программой. Одновременно с текстом сообщения об ошибке Бейсик-система сообщала номер строки программы, нарушившей синтаксис языка или приведшей к аварийной ситуации. Первые Бейсик-системы, совмещавшие в себе возможности ввода, редактирования, исполнения и отладки программ, послужили прототипами современных интегрированных сред.
Вторая особенность, привлекающая массового потребителя к Бейсику, кроется в простоте начального освоения и краткости его изобразительных средств. Попробуйте найти хотя бы еще один язык, на котором программа, отвечающая на вопрос, чему равно 2-2, состоит всего из четырёх символов1:
?2*2
Аналогичная программа на Паскале содержит, минимум, три строки, а её длина превышает 20 символов:
begin
(writein 2*2);
end.
Примерно вдвое больше символов требуется для аналога на Си:
#include
{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 одному из авторов, вышедшему из состава