417-Информатика 1 Муравьев
.pdf71
17.В каких операторах цикла допускается изменять параметр цикла, а в каких нет?
18.Определение массива.
19.Переменные какого типа можно использовать в качестве индексов?
20.Какие объекты (переменные, выражения и т.д.) можно использовать в качестве индексов массивов?
21.Какова структура программы?
22.Для чего используется составной оператор?
23.Для чего используются операторы цикла и логический (условный) оператор?
Если в программе необходимо вводить большое число данных, например, если задан массив большого размера, можно использовать задание в цикле случайных величин. Существует встроенная функция RANDOM(I), возвращающая псевдослучайное вещественное число от 0 до заданного параметра I , тип функции целочисленный (word). Для задания случайного символа можно использовать функцию CHR(Random(S)). Если запустить программу несколько раз, псевдослучайные числа будут повторяться. Чтобы это исключить рекомендуется изменить базу (привязать ее к системному времени), для этого в начале текста программы (после слова BEGIN) нужно включить процедуру RANDOMIZE.
Пример программы занесения в массив А размерностью от 1 до 100 целочисленного типа случайных величин от 0 до 50 и вывода их на экран:
PROGRAM Matrix; |
|
|
|
Const |
|
{задание размер-ти массива} |
|
Mar=100; |
|||
Var |
|
|
|
A:array[1..Mar] of integer; |
|
||
i:integer; |
|
|
|
begin |
|
{изменение базы} |
|
RANDOMIZE; |
{цикл от 1 до |
||
FOR |
i:=1 to Mar do A[i]:=RANDOM(50); |
||
100} |
i:=1 to Mar do |
|
|
FOR |
|
WRITELN('A=[',I:3,’]=’,A[i]:3); {Вывод массива в цикле} end.
72
Пример программы занесения в массив W размерностью от 1 до 70 символьного типа случайных символов и вывода их на экран:
PROGRAM Simvol; |
|
|
Const |
|
{задание размер-ти массива} |
M_s=70; |
||
Var |
|
|
W:array[1..M_s] of Char; |
||
k:integer; |
|
|
begin |
|
{изменение базы} |
RANDOMIZE; |
||
FOR |
k:=1 to M_s do W[k]:=Chr(RANDOM(255));{цикл от 1 |
|
FOR |
|
до100} |
k:=1 to M_s do |
||
WRITELN(k:5,' |
W=',W[k]); {Вывод массива в цикле} |
|
end. |
|
|
Пример выполнения и оформления задания "Составить программу вычисления сумм положительных и отрицательных значений вещественного массива А размерностью 80". Здесь в задании подразумевается, что студент должен сам сформировать в программе массив с отрицательными и положительными числами, подсчитать суммы
ивывести их на экран. Составим блок схему:
Начало программы формирование массива А (поскольку задание массива не несет функции выполнения задания, в полном виде не приводится)
задание начальных значений сумм полож-х и отрицат-х чисел S_P и S_O и параметров цикла i
задание цикла от 1 до 200
проверка элемента массива А на отрицательное значение
суммирование с S_P и S_O в зависимости от результата
увеличение параметра цикла
Пример самой программы
|
|
73 |
PROGRAM Sum; |
{Задание размерности массива} |
|
Const Matr=80; |
||
Var |
|
{Описание переменных} |
A:array[1..Matr] of real; |
||
i:integer; |
|
|
S_P,S_O:real; |
|
|
begin |
|
|
Randomize; |
{присвоение начальных значений сумм} |
|
S_P:=0; S_O:=0; |
||
FOR i:=1 TO Matr DO A[i]:=-50+RANDOM*100; {цикл от 1 |
||
до80, формирование матрицы вещественного типа} |
||
FOR i:=1 TO Matr DO |
{цикл от 1 до 80} |
|
IF A[i]<0 |
|
{проверка A[i]} |
THEN S_O:=S_O+A[i] |
{добавление к сумме A[i]} |
ELSE S_P:=S_P+A[i]; {добавление к сумме A[i]} Writeln('Сумма положительных чисел равна=',S_P:7:4);
{Печать}
Writeln('Сумма отрицательных чисел равна=',S_O:7:4); {Печать}
end.
Номер варианта выбирается по формуле
V=(30*k) div 100
где:
V – искомый номер варианта (при V=0 выбирается номер варианта 30); k – значение двух последних цифр пароля (число от 00 до 99);
div – целочисленное деление.
При отправке заданий диспетчеру кафедры указывайте номер варианта. При выполнении задания 5 и выше нужно в текст программы включать блок-схему в фигурных скобках.
Для формирования и при работе с одномерными массивами используйте оператор цикла FOR, для формирования двумерных массивов используйте вложенные структуры операторов FOR к примеру
FOR i:=1 to N1 DO FOR j:=1 to N2 DO <тело цикла>.
Для задания случайных числовых значений воспользуйтесь функцией RANDOM(N), где N-максимальное формируемое случайное число (от 0 до
N).
Для задания символьных случайных массивов в некотором диапазоне CHR(N1)- CHR(N2) можно воспользоваться функцией
CHR(RANDOM(N2-N1)+N1+1).
74
Протабулировать функцию - значит для каждого значения аргумента функции вычислить ее значение и вывести это значение и аргумента на экран.
При вычислении суммы ряда нужно учесть, что частичная сумма ряда
n2
∑ai представляет сумму числовой последовательности:
i=n1
n2
∑ai = an1 +an1+1 +an1+2 +...+an2−2 +an2−1 +an2 ; i=n1
75
ЛИТЕРАТУРА
1.Фигурнов А.Ф. TURBO PASCAL 6.0 1992.
2.Боон К. Паскаль для всех/пер. с гол. - М., "Мир",1982.
3.Семашко Г.Л., Салтыков А.И. Программирование на языке Паскаль.
-М., "Наука" , 1988.
4.Перминов О.Н. Язык программирования Паскаль. - М., "Радио и связь", 1983.
5.Йодан Э. Структурное программирование и конструирование программ. - М., "Мир", 1989.
6.Абрамов В.Г. и др. Введение в язык Паскаль. - М., "Наука", 1988.
7.Абрамов С.А. Зима Е.В. Начала программирования на языке Паскаль. - "Наука", 1987.
8.Белецкий Я. TURBO-PASCAL с графикой для персональных компьютеров - М.,"Машиностроение",1991.
9.Горогоно П. Программирование на языке Паскаль. - М., "Мир",
1982.
10.Джонс Ж.,Харроу К. Решение задач в системе ТУРБО ПАСКАЛЬ.- М., "Финансы и статистика", 1991.
76
ПРИЛОЖЕНИЕ
Контрольная работа №1
---------- ВАРИАНТ N 1 -------------------
1.Составьте ответы по контрольным вопросам, заданным в методических указаниях.
2.Перевести числа 465 и 2954 в двоичный и шестнадцатеричный вид.
3.Составить программу, в которой c помощью оператора WHILE подсчитать сумму ряда
∑ i +5
i=3 i3 +i2 +10 до тех пор, пока член ряда не будет меньше 0.005.
4. Cоставить программу, в которой c помощью оператора WHILE организовать цикл, в котором значения параметра t менялись от 0.5 до 5 с шагом h=0.1. Вывести на экран значения t и функции
sin(t) для t ≤ 3 y = cos(t - 3) для t > 3
5. Cоставить программу, в которой c помощью оператора FOR подсчитать сумму ряда
100
∑i 2 + i +1 .
1
6.Составить программу, в которой с помощью оператора REPEAT протабулировать функцию y=sin(2*x+1) в диапазоне параметра от 0 до 4 с шагом 0.2
7.Составить программу, в которой сформировать одномерный массив A[1..100] из случайных целых чисел. Скопировать массив A в массив B[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].
8.Составить программу, в которой сформировать двумерный целочисленный массив А[1..50,1..30] из случайных чисел и определить максимальное и минимальное числа в массиве.
---------- ВАРИАНТ N 2 -------------------
1.Составьте ответы по контрольным вопросам, заданным в методических указаниях.
2.Перевести числа 762 и 1874 в двоичный и шестнадцатеричный вид.
3.Составить программу, в которой c помощью оператора WHILE подсчитать сумму ряда
∑ |
|
|
i |
|
до тех пор, пока член ряда не будет меньше 0.005. |
i |
2 |
+ 5 |
|||
i=2 |
|
|
|||
4. |
Cоставить программу, в которой c помощью оператора WHILE организовать цикл, в |
котором значения параметра t менялись от 0.5 до 5 с шагом h=0.1. Вывести на экран значения t и функции
1/ t |
для t ≤3 |
y = |
для t > 3 |
t |
|
|
|
5. Cоставить программу, в которой c помощью оператора FOR подсчитать сумму ряда
50 |
1 |
|
|||
∑i 2 + |
+1 . |
||||
|
i |
|
|||
22 |
|
|
77
6.Составить программу, в которой с помощью оператора REPEAT протабулировать функцию y=sin(2*x+1) в диапазоне параметра от 0 до 4 с шагом 0.2.
7.Составить программу, в которой сформировать массив A[1..80] из случайных целых чисел. Определить суммы четных и нечетных чисел. Функция логического типа
ODD(x)=false, если x четное и ODD(x)=true, если нечетное.
8.Составить программу, в которой сформировать двумерный целочисленный массив А[1..50,1..30] из случайных целых чисел и определить максимальное и минимальное числа в массиве.
---------- ВАРИАНТ N 3 -------------------
1.Составьте ответы по контрольным вопросам, заданным в методических указаниях.
2.Перевести числа 68 и 4365 в двоичный и шестнадцатеричный вид.
3.Составить программу, в которой c помощью оператора WHILE подсчитать сумму ряда
∑ |
|
|
i + |
1 / i |
|
|
до тех пор, пока член ряда не будет меньше 0.005. |
|
3 |
+ i |
2 |
20 |
|||
i=2 i |
|
+ |
|
4. Cоставить программу, в которой c помощью оператора WHILE организовать цикл, в котором значения параметра t менялись от 0.5 до 5 с шагом h=0.1. Вывести на экран значения t и функции
1/ sin(t) |
для t ≤3 |
y = |
для t > 3 |
cos(3−t) |
|
|
|
5. Cоставить программу, в которой c помощью оператора FOR подсчитать сумму ряда
100
∑i +1 / i .
1
6.Составить программу, в которой с помощью оператора REPEAT протабулировать функцию y=exp(-x) в диапазоне параметра от 1 до 5 с шагом 0.25.
7.Составить программу, в которой составить массив C[1..100] из псевдослучайных символов из диапазона CHR(65)-CHR(90) и определить количество символов 'A','B','C' и 'D'.
8.Составить программу, в которой сформировать двумерный целочисленный массив А[1..50,1..50] c случайными отрицательными и положительными числами и подсчитать количество элементов массива с отрицательными и положительными числами.
---------- ВАРИАНТ N 4 -------------------
1.Составьте ответы по контрольным вопросам, заданным в методических указаниях.
2.Перевести числа 79 и 1111 в двоичный и шестнадцатеричный вид.
3.Составить программу, в которой c помощью оператора WHILE подсчитать сумму ряда
i +1 |
|
∑i=1 i 3 + i2 + i + 3 |
до тех пор, пока член ряда не будет меньше 0.005. |
4. Cоставить программу, в которой c помощью оператора WHILE организовать цикл, в котором значения параметра t менялись от 0.5 до 5 с шагом h=0.1. Вывести на экран значения t и функции
78
|
2 |
+t +1 |
для t ≤3 |
y = t |
|
||
t −3 |
для t > 3 |
||
|
|
|
|
5. Cоставить программу, в которой c помощью оператора FOR подсчитать сумму ряда
120
∑1 / i + 6 .
15
6.Составить программу, в которой с помощью оператора REPEAT протабулировать функцию y=exp(2/x) в диапазоне параметра от 1 до 5 с шагом 0.3.
7.Составить программу, в которой сформировать массив A[1..80] из случайных целых чисел. Определить суммы четных и нечетных чисел. Функция логического типа
ODD(x)=false, если x четное и ODD(x)=true, если нечетное.
8.Составить программу, в которой сформировать двумерный целочисленный массив А[1..10,1..10] из случайных целых чисел и подсчитать суммы строк массива
---------- ВАРИАНТ N 5 -------------------
1.Составьте ответы по контрольным вопросам, заданным в методических указаниях.
2.Перевести числа 111 и 874 в двоичный и шестнадцатеричный вид.
3.Составить программу, в которой c помощью оператора WHILE подсчитать сумму ряда
∑ |
|
|
5 |
|
до тех пор, пока член ряда не будет меньше 0.005. |
|
2 |
−1 |
|||
i=4 i |
|
|
4. Cоставить программу, в которой c помощью оператора WHILE организовать цикл в котором значения параметра t менялись от 0.5 до 5 с шагом h=0.1. Вывести на экран значения t и функции
1/ t |
для t ≤3 |
y = |
для t > 3 |
t |
|
|
|
5. Cоставить программу, в которой c помощью оператора FOR подсчитать сумму ряда
80
∑i 3 + i + 5.
3
6.Составить программу, в которой с помощью оператора REPEAT протабулировать функцию y=2*x+0.33 в диапазоне параметра от 1 до 5 с шагом 0.25.
7.Составить программу,, в которой сформировать в массиве А[1..100] числа Фибоначчи, a[1]=1,a[2]=1,a[3]=2,a[4]=3,a[5]=5,a[6]=8,.. т.е. начиная со третьего элемента значения элементов равны сумме двух предыдущих.
8.Составить программу,, в которой сформировать двумерный целочисленный массив А[1..50,1..50] из случайных целых чисел и определить максимальное и минимальное числа в массиве.
---------- ВАРИАНТ N 6 -------------------
1.Составьте ответы по контрольным вопросам, заданным в методических указаниях.
2.Перевести числа 712 и 2222 в двоичный и шестнадцатеричный вид.
79
3. Составить программу,, в которой c помощью оператора WHILE подсчитать сумму ряда
∑ |
3 |
|
|
|
до тех пор, пока член ряда не будет меньше 0.005. |
|
|
1 |
|
||||
i=5 i 3 + i2 + |
+10 |
|
||||
i |
|
|||||
|
|
|
|
4. Cоставить программу, в которой c помощью оператора WHILE организовать цикл, в котором значения параметра t менялись от 0.5 до 5 с шагом h=0.1. Вывести на экран значения t и функции
t −1 |
для t ≤3 |
y = |
для t > 3 |
cos(t / 3) |
|
|
|
5. Cоставить программу в которой c помощью оператора FOR подсчитать сумму ряда
100 1
∑1 i 2 + i +1
6. Составить программу, в которой с помощью оператора REPEAT протабулировать функцию y=2.5+sin(-x) в диапазоне параметра от 1 до 10 с шагом 0.5.
7.Составить программу, в которой сформировать одномерный массив A[1..100] из случайных челых чисел. Скопировать массив A в массив B[1..100] таким образом,
чтобы B[1]=A[100] ,B[2]=A[99], B[3]=A[98],. .B[100]=A[1].
8.Составить программу, в которой сформировать двумерный целочисленный массив А[1..50,1..50] и подсчитать количество элементов массива, значения которых находятся в диапазоне от 10 до 20.
---------- ВАРИАНТ N 7 -------------------
1.Составьте ответы по контрольным вопросам, заданным в методических указаниях.
2.Перевести числа 64 и 1023 в двоичный и шестнадцатеричный вид.
3.Составить программу, в которой c помощью оператора WHILE подсчитать сумму ряда
∑ |
i +1 / i − 3 |
|
до тех пор, пока член ряда не будет меньше 0.005. |
3 |
|||
i=6 |
i +10 |
|
4. Cоставить программу в которой c помощью оператора WHILE организовать цикл в котором значения параметра t менялись от 0.5 до 5 с шагом h=0.1. Вывести на экран значения t и функции
1/ sin(t) |
для t ≤3 |
y = |
для t > 3 |
ln(t) |
|
|
|
5. Cоставить программу, в которой c помощью оператора FOR подсчитать сумму ряда
77 |
1 − i |
|
|
∑ |
|
. |
|
1 + i 2 |
|||
2 |
|
6.Составить программу, в которой с помощью оператора REPEAT протабулировать функцию y=2*x+0.33 в диапазоне параметра от 1 до 5 с шагом 0.25.
7.Составить программу, в которой составить массив C[1..100] из псевдослучайных символов из диапазона CHR(128)-CHR(159) и определить, можно ли из этих символов составить слово "ТОМСК".
80
8. Составить программу, в которой сформировать двумерный целочисленный массив А[1..20,1..20] из случайных целых чисел и подсчитать суммы диагоналей массива.
---------- ВАРИАНТ N 8 -------------------
1.Составьте ответы по контрольным вопросам, заданным в методических указаниях.
2.Перевести числа 1234 и 4321 в двоичный и шестнадцатеричный вид.
3.Составить программу, в которой c помощью оператора WHILE подсчитать сумму ряда
∑ |
|
5 |
|
до тех пор, пока член ряда не будет меньше 0.005. |
|
i |
+ |
10 |
|||
i=5 |
|
4. Cоставить программу, в которой c помощью оператора WHILE организовать цикл, в котором значения параметра t менялись от 0.5 до 5 с шагом h=0.1. Вывести на экран значения t и функции
y = sin(t)
tg(t −3)
для t ≤3 для t > 3
5. Cоставить программу, в которой c помощью оператора FOR подсчитать сумму ряда
100
∑i 2 −1 / i .
12
6.Составить программу, в которой с помощью оператора REPEAT протабулировать функцию y=2*x+0.33 в диапазоне параметра от 1 до 5 с шагом 0.25.
7.Составить программу, в которой составить массив C[1..100] из псевдослучайных символов из диапазона CHR(65)-CHR(90) и определить количество символов 'A','B','C' и 'D'.
8.Составить программу, в которой сформировать двумерный целочисленный массив А[1..30,1..30] из случайных целых чисел и определить количество элементов массива, значения которых больше 20.
---------- ВАРИАНТ N 9 -------------------
1.Составьте ответы по контрольным вопросам, заданным в методических указаниях.
2.Перевести числа 234 и 2048 в двоичный и шестнадцатеричный вид.
3.Составить программу, в которой c помощью оператора WHILE подсчитать сумму ряда
∑ |
|
i + 5 |
до тех пор, пока член ряда не будет меньше 0.005. |
|
2 |
||
i=3 i |
+10 |
|
4. Cоставить программу в которой c помощью оператора WHILE организовать цикл в котором значения параметра t менялись от 0.5 до 5 с шагом h=0.1. Вывести на экран значения t и функции
sin(t) для t ≤ 3 y = cos(t - 3) для t > 3
5. Cоставить программу, в которой c помощью оператора FOR подсчитать сумму ряда
100
∑1 / i 2 + i +1.
1