Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

417-Информатика 1 Муравьев

.pdf
Скачиваний:
18
Добавлен:
11.05.2015
Размер:
1.04 Mб
Скачать

71

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 +...+an22 +an21 +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(3t)

 

 

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