
Контрольная работа 1 / 1-27_Информатика_2
.docКонтрольная работа №1
по дисциплине «информатика-1»
Вариант 27.
1.Ответы на контрольные вопросы.
-
Оператор присваивания может присваивать переменные одного и того же типа, за исключением: вещественному можно присвоить целочисленный, строковому – символьный тип.
-
В языке PASCAL к порядковому относятся все скалярные типы, кроме вещественных, т.е. к порядковому типу относятся все целочисленные типы, символьный, логический и ограниченные типы. Ещё интервальный (диапазон) и перечисляемый.
-
Отличие символьного типа от строкового:
а) для описания символьного типа используется зарезервированное слово CHAR, а для определения данных строкового типа используется слово STRING.
б) символьный тип определяется множеством значений кодовой таблицы компьютера, а строковый тип последовательностью символов кодовой таблицы компьютера, в том числе и символа пробела.
в) в строковом типе можно производить операции сложения.
-
Допустимые диапазоны значений у целочисленных типов:
Byte 0…255
Word 0…65535
Integer - 32768…+32767
Shortint - 128…+127
Longint -2147483648…+2147483647
Допустимые диапазоны значений у вещественных типов:
Real 2.9E-39…1.7E38
Single 1.5E-45…3.4E38
Double 5.0E-324…1.7E308
Extended 3.4E-4932…1.1E4932
Comp 9.2E-18…9.2E18
-
С логическим (BOOLEAN) типом можно использовать все операторы, где есть логическое выражение REPEAT. Возвращают значение логического типа операторы or, and.
-
Переменные перечислимого типа задаются перечислением предметов и относятся к порядковым типам.
-
Максимальное число элементов перечислимого типа составляет не более 256, т.к. данные этих типов в памяти занимают 1 байт.
-
index – ограниченный тип данных.
-
Нельзя использовать вещественные числа в качестве элементов ограниченного типа.
-
Максимально возможна длина строки 255. Вообще под строку отводят 256, но первый - нулевой.
-
Порядок выполнения арифметических операций таков: * / + - <>.
-
not, and, or, xor.
-
or, and, not – у логических операций, у операций отношения: =; <>; >; < ;>=; <=.
-
В программе, содержащей строку IF Z THEN Y:=A=B; Y и Z логического типа, т.к. А=В. Если Z – истина, тогда положим в ячейку Y- истину, а если Z – ложь, тогда ничего не произойдёт.
-
В качестве параметров цикла FOR…TO…DO можно использовать все порядковые типы: целые, символьные, логический и ограниченный (диапазон) и перечислимый, интервальный.
-
Отличие циклов WHILE…DO и REPEAT…UNTIL таков: оператор цикла с предусловием WHILE работает следующим образом, пока условие имеет логическое значение истина (TRUE), происходит циклическое выполнение оператора до тех пор, пока значение условия не станет ложным (FALSE). Поэтому в теле цикла есть условие вывода из цикла, для того, чтобы цикл не выполнялся бесконечно. А у оператора REPEAT проверка условия осуществляется после выполнения оператора и выход из цикла происходит, если значение условия – истина. Ещё в операторе WHILE тело цикла может не выполняться, то в REPEAT оно выполняется хотя бы один раз.
-
Присвоение переменной цикла FOR…TO…DO какого либо значения – ГРЕХ.
-
Массив – это агрегативная структура данных, состоящая из элементов одного и того же типа, каждый из которых имеет упорядоченный индекс.
-
В качестве индексов можно использовать: целые типы, логический, CHAR и т.д. (главное, чтобы они были порядковые).
-
Индекс можно задавать значениями, константой, переменной, выражением и функцией (главное, чтобы все они имели целочисленное значение, не превосходящего диапазон изменения индекса, заданного массива).
-
Структура программы:
Program<имя>; {заголовок программы}
Uses<список подключаемых модулей>; {*раздел описаний подключаемых модулей}
Const<имя>=<значение>; {раздел описаний констант}
Type<имя>=<тип>; {раздел описаний типов определяемых пользователем}
Var<имя>:<тип>; {раздел описаний переменных}
Begin
<операторы>;
End.
22.Составной (оператор скобки) оператор нужен, чтобы объединить группу операторов в единое целое, т.е. используется в качестве составной части других операторов, где требуется применение нескольких операторов вместо одного.
23.Операторы цикла используются и для организации циклических действий. Для организации ветвления алгоритма используется логический (условный) оператор.
2. Переведите числа 83 и 482 в двоичный и шестнадцатеричный вид.
-
83
2
82
41
2
1
40
20
2
1
20
10
2
0
10
5
2
0
4
2
2
1
2
1
0
-
83
16
80
5
3
-
482
2
482
241
2
0
240
120
2
1
120
60
2
0
60
30
2
0
30
15
2
0
14
7
2
1
6
3
2
1
2
1
1
482 |
16 |
|
480 |
30 |
16 |
2 |
16 |
1 |
|
14 |
|
|
|
|
3.
Составить программу в которой с помощью
оператора WHILE
посчитать сумму ряда
до тех пор, пока член ряда не будет меньше
0.005.
Программа.
CONST Eps = 0.005;
VAR summa, sl: Real;
Begin
Summa:=0; I:=6;
Sl:=(I+1)/(I-3)/(sqr(I)*I+10);
While Sl>Eps Do
Begin
Summa:=summa+sl;
I:=I+1;
Sl:=(I+1)/(I-3)/(sqr(I)*I+10);
End;
Write (Summa);
End.
Summa=0,
I=6, Sl=(I+1)/(I-3)/(sqr(I)*I+10) Eps=0.005
Нет
Да
Summa=summa+sl
4.
Составить программу, в которой с помощью
оператора WHILE организовать
цикл в которой значения параметра t
менялись от 0.5 до 5 с шагом h
= 0.1. Вывести на экран значения t
и функции
1/sin
(t) для t
y =
t для t > 3
Программа.
CONST Start = 0.5;
Finish = 5;
Step = 0.1;
VAR T, Y: Real;
Begin
T:= Start;
While T<= Finish Do
Begin
IF T<=3 Then Y:= 1/sin(T);
Else Y:=T;
Write ln (T:3:1,’’,Y:11:8);
T:= T+Step;
End;
End.
Y=T T = T+Step
Нет
Да
Нет
Д
5.
Составить программу, в которой с помощью
оператора FOR
подсчитать сумму ряда
.
Программа.
VAR Summa: Real;
I: Byte;
Begin
Summa:= 0;
For I:= 2 To 77 Do
Summa:= Summa + (1-I)/(1-sqr(I));
Write (‘S =’, Summa);
End.
Summa:= 0 I:= 2
Нет
Да
6. Составить программу, в которой с помощью оператора REPEAT протабулировать функцию y = 1+exp(2*x) в диапазоне от 1 до 5 с шагом 0.25.
Программа.
СОNST Start = 1;
Finish = 5;
Step = 0.25;
VAR X, Y: Real;
Begin
X:= Start;
Repeat
Y:= 1+ exp(2*X)
Write ln (X:3:1,’’,Y:11:8);
X:= X+Step;
Until (X>5);
End.
Нет
Да
7. Составить программу, в которой сформировать одномерный массив А [1..100] из случайных чисел. Скопировать массив А в массив В [1..100] таким образом, чтобы B [1] = A [51], B [2] = A [52],… B [50] = A [100], B [51] = =A[1], B [52] = A [2],… B [100] = A [50].
Программа.
USES CRT;
CONST n = 100;
TYPE Index = 1..n;
Massiv = array [1..n] of Integer;
VAR A, B: Massiv;
I: Index;
Begin
CLRSCR; Randomize;
For I:= 1 TO N DO A [I]:= Random (100);
For I:= 1 TO N DIV 2 DO B [I]:= A [50+I];
For I:= n DIV 2 +1 TO n DO B [I]:= A [I-50];
For I:= 1 TO n DO Write (‘B [’, I:2),’] = B [I]”);
End.
N = 100 I:= 1
I:= 1
I:= I+1
Да
Да
I:= n
div 2 + 1 B [I]:=A
[I - 50] I:= I +
1
Нет
I:= 1
I:= I +1
Да
Да
Нет
8. Составить программу, в которой сформировать двумерный целочисленный массив A [1..50, 1..30] из случайных чисел и определить максимальное и минимальное числа в массиве.
Программа.
USES CRT;
CONST
N = 50;
M = 30;
TYPE
Massiv = Array [1..N, 1..M] of Real;
VAR
A: Massiv;
I: 1..N;
J: 1..M;
Min, max: Real;
Begin
CLRSCR; Randomize;
FOR I:= 1 TO n DO
Begin
FOR J:= 1 TO m DO
Begin
A [I, J]:= Random (100);
Write (A [I, J]: 3);
End;
Write ln;
End;
Min:= A[1,1]; Max:= A[1,1];
FOR I:=1 TO n DO
FOR J:=1 TO m DO
Begin
IF A[I, J] > max then max:= A[I, J];
IF A[I, J] < min then min:= A[I, J];
End;
Write (‘max=’, max, ‘min=’, min);
End.
I:= 1 J:= 1 A[I]:=
Random J:= J +
1 I:= I +
1
Max:=
A[1,1] Min:=
A[1,1]
Нет
Да
I:= 1
Нет
J:= J
+ 1
Да
Да
I:= I + 1
Да
Max:=
A[I,J]
Нет
Да
Min:=A[I,J]
Нет