Подпрограммы. Процедуры и функции




Основы алгоритмизации и программирования

Рабочая тетрадь

 

 

Содержание

Введение …………………………………...……………….………  
1. Стандартные типы данных и выражения...…………………  
1.1 Задания …..…………………………………………….……..  
1.2 Самостоятельная работа.……………………………….…...  
1.3 Вариант 1...……………………………………………………..  
1.4 Вариант 2.……………………………………………………...  
2. Линейные структуры ………………..………………………..  
2.1 Задания………………….……………………………………...  
2.2 Самостоятельная работа...…………………………………..  
2.3 Вариант 1 ………………..……………………………………...  
2.4 Вариант 2 …………………………………………………..…...  
3. Разветвляющиеся структуры……………………………..…  
3.1 Задания……………………………………………………..…  
3.2 Самостоятельная работа …………………………………….  
3.3 Вариант 1 ……………………………………………………….  
3.4 Вариант 2 ………………………………………………….....  
4. Циклические структуры…………………………………..…  
4.1 Задания……………………………………………………..…  
4.2 Самостоятельная работа ………………………………...…..  
4.3 Вариант 1 ………………………………………………..……...  
4.4 Вариант 2 ………………………………………………….....  
5. Подпрограммы. Процедуры и функции.………………… …  
5.1 Задания……………………………………………………..…  
5.2 Самостоятельная работа ……………………………………..  
5.3 Вариант 1 ………………………………………………….....  
5.4 Вариант 2 …………………………………………………..…...  
6. Массивы одномерные…………………………………..……  
6.1 Задания…………………………………………………..……  
6.2 Самостоятельная работа ……………………………………..  
6.3 Вариант 1 ………………………………………………..…..  
6.4 Вариант 2 …………………………………………………….....  
7. Массивы двумерные …………………………………..….  
7.1 Задания …..……………………………………………...…  
7.2 Самостоятельная работа..…………………………………..  
7.3 Вариант 1 …..…………………………………………………...  
7.4 Вариант 2 ………………………..…………………………...  
Список использованных источников..…………………………  

 

Введение

Применение рабочей тетради в обучении улучшает качество образования, повышает эффективность учебного процесса на основе его индивидуализации, появляется возможность реализации перспективных методов обучения. Сложность проектирования занятий заключается в том, что программ специального целевого дидактического назначения мало, и преподавателю приходится использовать в основном те, которые предлагаются для широкого круга пользователей (электронные энциклопедии, справочники) или программы для профессиональной подготовки (компьютерные учебники, моделирующие среды) и адаптировать их к конкретным условиям. Актуальность рабочей тетради заключается в оптимальном сочетании содержания информационной подготовки студентов на занятиях с возможностью выявить направление движения формирования мыслительной деятельности. Рабочие тетради используются для текущего контроля преподавателем знаний и умений студентов применять знания при решении учебных задач. Поскольку учебные пособия содержат пошаговое описание задач, то студент имеет возможность самостоятельно проверить правильность решения задач в рабочих тетрадях. Практическая значимость заключается в применении листов рабочей тетради для облегчения освоения студентами трудной для них, но очень важной дисциплины и в ее личностно-формирующей ориентации.

Разработка по дисциплине «Основы алгоритмизации и программирования» весьма актуальна на нынешний день. Благодаря листам рабочей тетради, можно осуществить более лёгкое усвоение материала, и проверку усвоения этого материала.

В заключении можно отметить, что разработка рабочей тетради является вполне современным способом ведения учебного процесса. Несомненные преимущества налицо: проверка усвоения материала, контроль мыслительной деятельности учащихся, проверка полученных знаний, сами лекции проходят более разнообразно и как следствие этого повышенный интерес аудитории, возможность исправлять ошибки в момент, когда они делаются.

 

Стандартные типы данных и выражения

Задания

1. Идентификатор Почему он недопустим?

5Summa _________________________

Begin _________________________

D'Artanyan _________________________

Сумма _________________________

Summa Dohoda _________________________

A*B _________________________

Nomer.Doma _________________________

2. Зачеркните числа, записанные не по правилам языка Turbo Pascal

1)3.14159 5)16. 9) 12.SE.3

2)150 6)15.0Е-04 10) 12Е+5

3)0,005 7)2.345Е2 11) Л23ЕЗ

4).12345 8) 1.15Е-3 12) 1.15Е-3

3. Подберите подходящий тип данных:

Количество учеников в классе___________________________________

Площадь круга________________________________________________

Количество автомобилей в регионе______________________________

Количество автомобилей у одного владельца______________________

Первая буква фамилии_________________________________________

Количество жителей в государстве_______________________________

Плотность населения в государстве

Произведение цифр двузначного числа________________________ __

Произведение цифр трехзначного числа_________________

Фамилия сотрудника фирмы ____________________________________

Заработная плата сотрудника фирмы____________________

 

4. Записать выражение на языке программирования Pascal.

1) ____________________________________________

2) __________________________________________

3) ______________________________________________

4) __________________________________________

5) __________________________________________

6) ________________________________________________

7) _______________________________________________

8) ________________________________________________

9) _____________________________________________

10) ____________________________________________

11) _____________________________________

12) ____________________________________________

13) _______________________________________

 

5. Определить тип результата, если: X-integer, Y-real, C-char.

Al:=sqrt(X) ______ A7:=A6<X____________

A2:= sqrt (Y) _______ A8:=23 mod 4______

A3:=2.5*X _______ A9:=7 div 2/3_________

A4:=X-A1 _______ A10:=pred(C)__________

A5:=A4>A3 _______ A11:=A8/y____________

A6:=ord(C) _______ A12:=chr(X)____________

6. Найти значение выражения:

1) 25/2= _____________

2) 25 div 2 = ___________

3) 25 mod 2 = __________

4) 15+21 div 2= _________

5) 2 div 3 = ____________

6) 2 mod 3 = ___________

7) 11 mod 5 = ___________

8) 14 mod (5 + 3) = ___________

7. Записать в виде обычной математической формулы

1) y:=2*sin(x)*sqrt(x+sqrt(abs(x)))_________________________________

 

2) y:= sqrt(sin(x)+sin(sqrt(x)))_____________________________________

 

3) y:= sqrt(abs(x-1)+sqrt(sin(x)))__________________________________

 

4) y:=(5*sin(x) +4)/2*15*sin(sqrt(x))_______________________________

 

5) y:=k+15*x/(2*sin(x)) _________________________________________

 

6) y:=sin(sqr(x)+sqr(sin(x))______________________________________

 

7) y:=a+b/b+c__________________________________________________

 

8) у:=a*b*sin(x)_______________________________________________

 

8. Вычислить значение выражения:

1) abs(-40)= _____ 7) trunc (12.19) = _____

2) trunc(-13.6)= ____ 8) abs(trunc(-6.32)) = _____

3) round(-13.6) = ____ 9) round(6.8)+sqr(3)=_____

4) frac(3.428)= _____ 10) trunc(12.2)*sqr(2) = _____

5) ргеd('Л') = _____ 11) sqrt(abs(round(-12.6))) = _____

6) round(12.19) = _____ 12) sqrt(sqr(trunc(-3.32)) = _______

 

9. Выберите для каждого значения наиболее подходящий тип данных из таблиц типов и укажите ниже.

  'X' '*' -5
       
  -999 '5' '-5'
       
True False 5.0 -5.0
       

Самостоятельная работа

Вариант 1

  1. Найти значение выражения:

1) 220 div 10 mod 3 = ________

2) -16 mod 11 * 3 = __________

3) 3 div (5+3) = __________

4) (16 mod 6) / (2 div 1) = ______

  1. Записать выражение на языке программирования Pascal:

 

Вариант 2

1. Найти значение выражения:

1) 220 mod 10 div 3 = ________

2) 3 div 5 + 3 = _________

3) (-19+9) div -5 = ________

4) 16 mod 6 / 2 div 1 __________

2. Записать выражение на языке программирования Pascal:

Линейные структуры

Задания

1. Установите соответствие между служебными словами и названиями разделов программы:

1) Var 2) Program 3) Uses 4) Begin … end 1) Раздел операторов 2) Раздел имени программы 3) Раздел описания переменных 4) Раздел описания библиотечных модулей

2. Напишите заголовок программы и объявите переменные в разделе описания переменных к задачам:

Задача 1. Найти корни квадратного уравнения ах2+вх+с=0

Задача 2. Даны координаты двух точек. Найти расстояние между ними.

 

Задача 3. Вычислить площадь прямоугольного треугольника, если известны его стороны

 

3. Напишите инструкцию вывода на экран:

 

а) вашего имени;

б) числа 400;

в) значения выражения 7,3(3,22+8,61).

 

4. Найдите значение S после выполнения следующих операторов:

 

S:=18; S:=8; S:=113; Write(S); S:=27; S:=S+19; S:=76; Write(S); S:=3; S:=S+1; S:=S+3; Write(S); S:=7; S:=S+S; S:=S+S; Write(S);
________ _________ __________ ___________

5. Расположите в правильном порядке строки программы, вычисляющей периметр и площадь параллелограмма:

1) S:=a*h;  
2) end.  
3) program pr;  
4) p:=2*(a+b);  
5) Uses crt;  
6) var a,b,h,p,s: integer;  
7) readln;  
8) Writeln(‘p=’,p,’ s=’,s);  
9) a:=6;b:=3;h:=4;  
10) clrscr;  
11) begin  

6. Дан текст программы в таблице с ошибками:

Ÿ исправьте ошибки в программе;

Ÿ что выведется на экран в результате выполнения программы?

Программа с ошибками Программа без ошибок На экране будет напечатано:
  War: a,b,c – integer, x: real; Bigin A=7, b=3,2, c:=a+b; Writln (summa=, c); C:=c/2; x:=a-c; Writeln(‘x=’, x, ‘kvadrat=’, x*x); And    
Program Ошибки2; Begin Var X:integer; X:=6+8; Write(X); End;    

7. Перевести блок-схему вычисление расстояния между точками А и B на язык Паскаль.

 

 
 

8. Напишите программы для следующих задач, организуя экран пользователя по предложенному варианту.

Задача Экран пользователя Программа
1. Написать программу вычисления площади поверхности параллелепипеда. S=2*(A*B+B*C+C*A) (Запустите программу, введите данные: А=9, В=7.5, С=5. Если правильно составлена программа, то вы получите результат S=300.00) Вычисление S поверхности параллелепипеда. Введите исходные данные: Длина (см)? 9 Ширина (см)? 7.5 Высота (см)? 5 Площадь поверхности: 300.00 кв.см.    
2. Написать программу вычисления стоимости покупки, состоящей из нескольких тетрадей и карандашей. Вычисление стоимости покупки. Введите исходные данные: Цена тетради (руб.)? 2.75 Количество тетрадей? 5 Цена карандаша (руб.)? 0.85 Количество карандашей? 2 Стоимость покупки: 15.45 руб.    

9. Заполните таблицу. Пробел перед числом обозначайте _

 

Значение Формат Вывод
3.14159 3.14159 0.1234 -0.006 25.876 -0.006 ‘***’ ‘*’ 3.14159 3.14159 3.14159 -0.006 -0.006 -124.3123 -3.14159 ‘*’ ‘мышь’   :5:2 :5:3 :4:2 :8:3 :3:1 :9 :7 :7 ________________ ________________ ________________ ________________ ________________ ________________ ________________ ________________ ________________ ________________ ________________ ________________ ________________ ________________ ________________ ________________ ________________ 3.14 _ _ 3.1 _ 3.14159 -0.01 -0.00600 -124.31 -3.14Е+00 _ _ _ * _ _ _ мышь

Самостоятельная работа

Вариант 1

1. Представить результат работы процедуры (по позициям и строкам)

WriteLn (r, ':', a:8);

WriteLn (s, x, d:9:3);

WriteLn ('i =', i:3);

WriteLn (t, d);

WriteLn (z).

2. Составить линейный алгоритм вычисления у по формуле:

y= 6x (x + 2) – (x + 4), при x = 2

Вариант 2

1. Представить результат работы процедуры (по позициям и строкам)

WriteLn (y, d:10:3);

WriteLn ('Введите к', k:3);

WriteLn (y, t, a);

WriteLn (' При к = ',k, s, g);

WriteLn (s:3, d).

2. Составить линейный алгоритм вычисления у по формуле:

y = 3x – (2x + 1), при x =3

3 Разветвляющие структуры. Оператор варианта

Задания

1. Отметьте те выражения, результат которых вычислен правильно:

 

a) 60>20 = true

b) not (30> 10) = false

c) (3>2) and (5>6) = true

d) (60>70) or (100<90) = true

e) (60>70) and (100<90) = true.

 

2. Предположим А:=5; B:=10; C:=15.

Вычислите значение выражения (true, false):

 

Выражение Результат Выражение   Результат  
(А=В) or (A<=B)   Not (A>=5)  
(А=В) and (A<=B)   (С=А+В) or (B>C)  
not(A=B) and (A<B)   (С<=А-В) or (B<C)  
(В<=12)ог(С=15)   (С<=А+В) or (B>C)  
(B<=12)and(C=15)   (С=А+В) and(B<C)  

3. Запишите логическое выражение для каждой из фраз:

А принадлежит диапазону (18; 80)___________________________________

А принадлежит диапазону [18; 80) __________________________________

А принадлежит диапазону (-10; 18) __________________________________

А принадлежит диапазону [-10; 18] _________________________________

А не принадлежит диапазону [-10; 18]_______________________________

А не принадлежит диапазону (-10; 18) _______________________________

А меньше -1 или больше 1_________________________________________

А не принадлежит диапазону [18; 80) _______________________________

А больше 0 и не равно 10__________________________________________

А кратно 4 и 5 (используйте mod)__________________________________

4. Запиши словесное описание фрагмента алгоритма на языке Паскаль:

1) Если число Х равно 47, то увеличить переменную Х на 15, иначе уменьшить на 36;

2) Если переменная S не равна 21, то увеличить переменную S в 6 раз, иначе уменьшить на 53;

3) Если переменная U нечетная, то увеличить ее на 8, иначе увеличить в 53 раза;

4) Если число Z больше 48, то увеличить на 51, иначе уменьшить на 51;

5) Если X меньше 15, то Y присвоить значение X/2, а Z присвоить значение 15/ X, иначе Y присвоить значение X*2, а Z присвоить значение 15- X.

5. Расставь строки программы в правильном порядке, чтобы получилась программа, которая находит решение уравнения ах=b:

1) writeln(‘решения нет’)  
2) a,x,b:real;  
3) if  
4) writeln(‘x=’,b/a);  
5) a<>0  
6) begin  
7) then  
8) readln(a,b)  
9) end.  
10) else  

6. Что будет выведено на экран, после выполнения данной программы:

  a=8, n=5     a=3, n=3   a=9, n=2   a=7, n=4
Program Primer; Var x, y:integer; Begin Read(a,n); if a<=10 then writeln(a*2) else writeln(n*2); End. Program Primer; Var x, y:integer; Begin Read(a,n); If a mod 3<>0 then writeln(a+5) else writeln(n+2); End. Program Primer; Var x, y:integer; Begin Read(a,n); If (a mod 2=0) and (n<>2) then writeln(a*5) else writeln(n*5); End. Program Primer; Var x, y:integer; Begin Read(a,n); If (a mod 2=0) or (n<>2) then writeln(a*5) else writeln(n*5); End.
Ответ: __________ Ответ: __________ Ответ: __________ Ответ: __________  

7. Заполните таблицу:

x y a
     
     
     
     

Program Primer;

Var a, x, y:integer;

Begin

Read(x,y);

If (x+y>50) or (y>100) Then

A:=x+y

Else

A:=2*x+y;

Write(a);

End.

8. Представьте фрагмент программы в виде блок-схемы

 
 


а)

IF a>b THEN

k:=k+l

ELSE

IF b>c THEN

k:=k+2

ELSE

k:=k+3;

Writeln(k)

б)

IF a=0 THEN

Begin

X:=l;

Y:=l;

End

ELSE

Begin

X:=2;

Y:=2;

End;

 
 


в)

IF a=b THEN

z:=a+b

ELSE

Begin

IF a>0 THEN

a:=2*a;

a:=a-l; b:=b-l;

z:=a/b;

End;

z:=z+10;

9. Запишите оператор IF, эквивалентный следующему оператору CASE.

CASE x OF

2, 5: writeln ('Ничья');

7..11: writeln ('Выигрыш')

ELSE

writeln ('Проигрыш')

END;

10. Определить, что будет выведено на экран после выполнения фрагмента программы:

 

k:=10; CASE k mod 3 OF 0: writeln('k=4m'); 1: writeln('k=4m+l'); 2: writeln('k=4m+2'); 3: writeln('k=4m+3'); END;   d:=30; s:=1000; Case d of 1..5: s:=15; 6..10: s:=36; 11..25: s:=30; End; Writeln(s);   m:=43; s:=1234; case m of 10..15: s:=30; 20..25: s:=5; 30..35: s:=25; End; Writeln(s);
____________________ ___________________ _______________

11. Запишите оператор CASE, эквивалентный следующему оператору IF.

……………………….

If (x>=a) and (x<=b) then

writeln ('Хорошо')

else

If (x = d) or (x = f) then

writeln ('Плохо')

else

writeln ('Неверный ввод');

……………………….

12. Составьте программы для следующих задач:

Задачи Отметка
Дано число х. х2+1, если х <0 1) Вычислить значение функции: У= x-2,1,если х> Sin x, если 0 х    
2) По введенному году обучения в школе (числу от 1 до 11) вывести сообщение «Привет, k-классник!». Например, если k=1, «Привет, первоклассник!»  

13. Разгадайте сканворд:

Самостоятельная работа

Вариант 1

1. Какое значение будет иметь переменная d после выполнения операторов при a = 3, b = 1, d = 0:

 

1) If a>b Then d:=a Else d:=b; d:=d*10;

 

2) If a>b Then d:=b; d:=d*10;

 

3) If a>b Then d:=b; d:=d+a Else d:=d*10;

 

4) If a>2 Then If b>2 Then d:=1 Else d:=2; d:=d*10.

 

2. Составить блок-схему и программу вычисления значения функции:

Вариант 2

1. Какое значение будет иметь переменная d после выполнения операторов при a = 2, b = 5, d = 4:

1) If a > b Then d:= a Else begin d:= b; d:= d – a; end;

 

2) If a < b Then d:= b; d:= d + a;

 

3) If a > b Then d:= a Else begin d:= b; d:= d + a end; d:= 2 * d;

 

4) If (d > b) or (d < a) Then d:= b Else d:= a; d:= d + c;

2. Составить блок-схему и программу вычисления значения функции:

 

Циклические структуры

Задания

1. Запишите заголовки цикла For для изменения параметра из диапазонов:

 

от -10 до +10_______________________________________________

от 100 до 1_________________________________________________

от 15 до 25_________________________________________________

от -10 до -20_______________________________________________

2. Запишите оператор цикла For, который бы выводил все числа в диапазоне от 100 до 10 включительно:

__________________________________________________________________________________________________________________________________

_________________________________________________________________

 

3. Определить, сколько раз выполнится цикл:

  I:=4; While i<6 do i:=i+3;   y:=1; i:=1; While i>1 do begin y:=y+1/i; end;   i:=5; y:=1; While i>2 do i:=i-1; y:=y+i*i;  
__________________ _______________________  

4. Определить значение переменной S после выполнения следующих команд и заполнить таблицу:

……………..

Read(n);

n s
   
   
   

S:=3;

I:=1;

While i<=n do begin

S:=s+I;

I:=i+5;

End;

Write(s);

…………….

5. Составьте блок-схему по готовой программе.

PROGRAM summa; VAR A,S:REAL; BEGIN S:=0; A:=0.2; WHILE A<=2 DO BEGIN S:=S+A; A:=A+0.1; END; WRITELN(‘Сумма=’, S:15:2); END.  

6. Определите значение переменной a после выполнения фрагмента алгоритма:

7. Выполните трассировку и определите значение переменной S и I после выполнения фрагмента программы.

S:=0; I:=0; Repeat I:=I+5; Until I<=5; S:=S+I*I; S _____________ I _____________ Тело цикла выполняется ____ раз I S I<=5?
     

8. Определите сколько раз будет выполняться тело цикла:

S:=0; I:=0; Repeat I:=I-1; S:=S+1/I; Until I<=1; S:=0; I:=1; Repeat I:=I+1; Until I>2; S:=S+1/I; S:=0; I:=1; Repeat S:=S+1/I; I:=I+1; Until I<1;
_____________ _______________  

9. Расставьте строки программы в правильном порядке, чтобы получилась программа, которая находит сумму первых N натуральных чисел:

1) writeln(‘sum=’,sum);  
2) end.  
3) end;  
4) sum:=sum+i; i:=i+1;  
5) sum:=0; i:=1;  
6) while i<=n do begin  
7) var i,n,sum: integer;  
8) write(‘n=’); readln(n);  
9) begin  

10.Определите сколько раз будет выполняться тело цикла:

S:=0; For n:=4 downto 3 do begin S:=s+n; S:=s*10; End; Y:=0; For n:=4 to 6 Y:=y+I; Y:=y/10; Y:=1; For i:=1 to 3 do begin Y:=y+1; Y:=y+i; End; Y:=5; For n:=1 downto 4 do Y:=y+n;
________________ ________________ _________________  

11. Сопоставьте фрагменту программы с циклом while соответствующий ей фрагмент программы с циклом For:

For i:=1 to 5 do s:=s+5;     While y<=10 do begin S:=s+5; Y:=y+1; End;
For i:=5 downto 1 do S:=s+5;     I:=5; While i>=1 do begin S:=s+5; I:=i-1; End;
K:=3; For i:=k to n do S:=s+5;     I:=1; While i<=5 do begin S:=s+5; I:=i+1; End;
  For i:=y to 10 do S:=s+5;     I:=3; While i<=n do begin S:=s+5; I:=i+1; End;

12. Выполните трассировку (пошаговое выполнение алгоритма вручную на бумаге). Определите значение переменной Х после выполнения фрагмента программы.

  X:=10; For I:=1 to 5 do Begin Writeln (I,X); X:=X-2; End;   X ____________   I X Экран результата
     

13. Составить программу по блок-схеме:

14. Исправьте синтаксические ошибки в следующем фрагменте программы:

a) Var I, k:real; S:real; Begin K=81; S:=4 For i=1 to k S=s/2 End. б) Var a:real; Begin s=10; s:=s+2 for s:1 to 10 do writeln s end.

15. Отгадайте кроссворд:

По горизонтали:

2. Универсальный язык программирования.

3. Символическое имя определенного программного объекта.

4. Структурная команда, выполнение которой происходит после проверки усло-вия.

5. Программа-переводчик с Паскаля на язык машинных команд с полным предва-рительным переводом.

6. Последовательность действий(команд), которую должна выполнить ЭВМ, чтобы решить поставленную задачу обработки информации.

7. Отдельный информационный объект (число, символ, таблица и пр.).

9. Процесс занесения данных в оперативную память.

По вертикали:

1. Повторение некоторой группы действий по условию.

2. Занесение значений в ячейку памяти.

8. Все множество символов, используемых в некотором языке для представления

информации.

 

Самостоятельная работа

Вариант 1

1. Составить циклический алгоритм вычисления произведения всех чисел от 25 до 40.

2.Определить значение переменной n после выполнения следующих элементов программы:

y:=0;

x:=10;

while x>0 do Begin

x:=x+2;

y:=y+x;

end;

Вариант 2

1. Составить циклический алгоритм вычисления среднеарифметического значения всех четных чисел от 0 до 20.

2.Определить значение переменной n после выполнения следующих элементов программы:

x:=0;

y:=5;

repeat

y:=2*y;

x:=x+y;

until y>5;

Подпрограммы. Процедуры и функции

Задания

 

1. Какое из следующих описаний процедуры, выводящей строку символов (*), свободно от ошибок:

  Procedure Stars; Var s:integer; Begin For s:=1 to 78 do Writeln(‘*’); End;     Procedure Stars; Var s:integer; For s:=1 to 78 do Write(‘*’);   Procedure Stars; Var s:integer; Begin For s:=1 to 78 do Write(‘*’); End;

1. Ниже представлены заголовки процедуры и функции, а также обращения к процедуре и функции.

Procedure Proc(x, y:integer; var z:real);

Function Func1(a, b:integer);

Proc(k, l, m);

H:=Func1(I, j);

 

Укажите соответствие между представленными ниже наборами параметров этих подпрограмм(слева) и названиями разновидностей параметров(справа).

a) X, y, a, b   1.Параметры-переменные
b) X, y, z, a, b 2.Параметры-значения
c) K, l, m, I, j 3.Формальные параметры
d) z 4.Фактические параметры

2. Какое определение верно, либо ложно:

1.Вложение подпрограмм не допускается.  
2.После раздела описаний процедуры следует ее тело, содержащее последовательность операторов, заключенных в операторные скобки.  
3.Передача информации из тела программы в процедуру осуществляется с помощью механизма параметров.  
4.Имена, объявленные в основной программе, доступны во всех описанных в ней подпрограммах.  
5. Параметр-значение просто передает некоторое значение в подпрограмму.  
6. Передача значений из процедуры в программу осуществляется с помощью параметров-переменных.  
7. В Turbo Pascal наличие в теле подпрограммы оператора вызова самой себя не допускается.  

4. Напишите, что выведет на экран следующая программа:

Program V1_Z1;

Var A,B: Integer;

 

Procedure F1 (X,Y:Integer);

Begin

Y:=2*X+3;

End;

Procedure F2 (Var X,Y:Integer);

Begin

Y:=3*X+1;

End;

 

Begin

A:=1;

B:=3;

F1(A,B);

WriteLn('A=',A,'B=',B);

F2(A,B);

WriteLn('A=',A,'B=',B);

End.

5. Напишите, что напечатает следующие программы:

Program V1

var a,b,c,d:integer;

function func (x,y,z:integer):integer;

var w:integer;

begin

w:=x+y;

if y<z+1 then w:=w+1;

func:=w

end;

 

begin

a:=5;

b:=4;

c:=2;

d:=func(a,b,c); writeln('func от ',a,',',b,' и ',c,' дает ',d);

a:=func(b,c,d); writeln('func от ',a,',',b,' и ',c, ' дает ',a);

end.

 

Самостоятельная работа

Вариант 1

1. Напишите программу, которая по значениям двух катетов вычисляет гипотенузу, площадь, прямоугольного треугольника (используя подпрограмму).

2. Напишите, что выведет на экран следующая программа:

Program V2_Z1;

Var A,B:Integer;

Procedure F1(Var X,Y:Integer);

Begin

Y:=SQR(X);

X:=SQR(X)+X;

End;

Procedure F2(Var X:Integer; Y:Integer);

Begin

Y:=SQR(X);

X:=SQR(X)+X;

End;

 

Begin

A:=1;B:=3;

F1(A,B); WriteLn('A=',A,'B=',B);

F2(A,B); WriteLn('A=',A,'B=',B);

End.

Вариант 2

1. Написать программу сравнения площадей и периметров двух прямоугольных треугольников, если заданы их катеты (используя подпрограмму).

2. Напишите, что выведет на экран следующая программа:

Program V1_Z2;

Var A,B,A1,B1:Real;

 

Procedure SD(X,Y:Real; Var P,Q:Real);

Begin

P:=(X+Y)/2; Q:=(X-Y)/2;

End;

 

Begin

A:=2; B:=-4;

SD(A,B,A1,B1); WriteLn('A=',A:4:0,'B=',B:4:0,'A1=',A1:4:0,'B1=',B1:4:0);

SD(A,B,B1,A1); WriteLn('A=',A:4:0,'B=',B:4:0,'A1=',A1:4:0,'B1=',B1:4:0);

SD(B,A,A1,B1); WriteLn('A=',A:4:0,'B=',B:4:0,'A1=',A1:4:0,'B1=',B1:4:0);

End.

 

Массивы одномерные

Задания

1. Определите количество элементов в массиве:

Var A: array [6..7] of integer; ____________
Var C: array [5..13] of real; ____________
Var K: array [0..19] of integer; ____________
Var A: array [1..8] of real; ____________
Var D: array [-8..15] of integer; ____________

 

2. Какие из приведенных описаний массивов являются правильными?

1) Var A: array [1..20] of real;

2) Type Mas=array [‘A’..’D’];

Var A:Mas;

3) Type Город=(Киев, Москва, Сочи, Адлер);

Var A:array[Город] of real;

4) Var MM:array [false..true] of char.

3. Укажите числовой диапазон:

a) A[i]:=random(61)____________________

b) B[j]:=random(35)____________________

c) C[5]:=random(14)___________________

d) B[z]:=random(45)___________________

e) A[k]:=random(28)___________________

4. Используя оператор RANDOM запишите правильно команды:

a) Элемент массива А с номером 7 находится в интервале [32..45] _____________________________________________________

b) Элемент массива D с номером c находится в интервале [219..270]

_____________________________________________________________

c) Элемент массива E с номером i находится в интервале [17..37]

_____________________________________________________________

 

d) Элемент с номером s массива К находится в интервале[138..175]

_____________________________________________________________

e) Элемент с номером к массива С находится в интервале[122..124]

_____________________________________________________________

3. Записать циклы для решения следующей задачи:

1. Ввод 112 элементов массива Вс клавиатуры. Параметром цикла является переменная h. Нумерация начинается с 1. __________________________________________________________  
2. Ввод 96 элементов массива Ав столбец. Параметром цикла является переменная h. Нумерация начинается с 1. ___________________________________________________________  
3. Формирует массив Еиз162случайных чисел, принадлежащих промежутку [15;30]. Параметром цикла является переменная Х.Нумерация начинается с 1 ___________________________________________________________  
4. Формирует массив Dиз179случайных чисел, принадлежащих промежутку [16;24]. Параметром цикла является переменная f. Нумерация начинается с 1 ___________________________________________________________  

6. Напишите пропущенные команды. Ввести массив В, из 18 элементов целого типа, заданных случайным образом на промежутке [12;65], нумерация начинается с 1 и вывести элементы массива с 1-го по 7-й в столбец.

Program Primer;

___________________;

j: integer;

BEGIN

For J:=1 to ______ do

_________________________

 

For j:=1 to _____ do

_________________________

End.

7. Дан массив К. Индексы начинаются с 1.

К   5 18 26 12 11 21

Чему равно?

1) K[6]=___________

2) R[4]+K[1]=_______

3) 2+K[6]=_________

4) K[1+2]=_________

5) K[5]+10=________

6) 10*K[4]=________

Самостоятельная работа

Вариант 1

Изменить программу нахождения суммы элементов массива таким образом, чтобы:

1) массив состоял из 15 элементов вещественного типа;

2) значения элементов массива должны меняться в интервале от 0 до 5;

3) в результате выполнения программы должно быть найдено произведение всех элементов массива, а не их сумма.

Program massiv;

Const n=10;

Var a:array[1..n] of integer;

s,i: integer;

Begin

WriteLn('Исходный массив:');

For i:=1 to n do

begin

a[i]:=random(10);

Write('a[',i,']=',a[i],' ');

WriteLn (' ');

end;

s:=0;

For i:=1 to n do

s:=s+a[i];

WriteLn('Сумма всех элементов массива S=',s);

end.

Вариант 2

1. Изменить программу нахождения произведения элементов массива таким образом, чтобы:

1) массив состоял из 20 элементов целого типа;

2) значения элементов массива должны меняться в интервале от 8 до 27;

3) в результате выполнения программы должно быть найдено сумма всех элементов массива.

Program massiv;

Const n=10;

Var a:array[1..n] of real;

s,i: real;

Begin

WriteLn('Исходный массив:');

For i:=1 to n do begin

a[i]:=random(10);

Write('a[',i,']=',a[i],' ');

WriteLn (' ');

end;

s:=0;

For i:=1 to n do

s:=s*a[i];

WriteLn('произведение всех элементов массива S=',s);

end.

Массивы двумерные

Задания

1. Значения двух массивов А[1..100] и В [1..100] задаются с помощью следующего фрагмента программы:

…………….

For n:=1 to 100 do

A[n]:=n-100;

For n:=1 to 100 do

B[n]:=A[n]*n

…………….

Сколько элементов массива В будут иметь положительные значения?

2. Напишите пропущенные команды. Ввести массив D, из 138 элементов целого типа, нумерация начинается с 1 и заменить не четные элементы на число 496. Вывести элементы массива после замены.

Program Primer;

________________________;

f: integer;

BEGIN

For J:=1 to _____ do __________________________

For j:=1 to _____ do___________________________

If ____________________________ then ____________

For f:=1 to __________ do ______________________________

End.

3. Как выглядит массив А, состоящий из 4 строк и 5 столбцов, если А(I,j) = i*j?

1) 2) 3)

         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         

4. Определите значения следующих элементов массива:

A[1,5]=_____,

A[5,1]=_____,

A[6,4]=_____,

A[4,5]=_____,

A[2,3]=_____,

A[4,2]=_____,

A[3,2]=______.

Определите месторасположение элементов со следующими значениями:

A[ …..,…..]= 17, A[…..,..…]= 29, A[....,…..]= 30,

A[..…,..…]= 16, A[....,…..]= 1, A[…..,..…]= 27.

Значения двумерного массива задаются с помощью вложенного оператора цикла в представленном фрагменте программы. Чему будет равно значение B(2,4)?

……….. for n:=1 to 5 do for k:=1 to 5 do B[n,k]:=n+k; …………..

 

5. Дан фрагмент программы, обрабатывающей двухмерный массив A размера

n×n. Выберите правильный ответ, когда данный алгоритм меняет местами:

  ………… k:=1; for i:=1 to n do begin c:=A[i,i]; A[i,i]:=A[k,i]; A[k,i]:=c; end; ………..  
1) два столбца в таблице
2) две строки в таблице
3) элементы диагонали и k-ой строки таблицы


Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: