V. обработка символьных и строковых величин

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Армавирский государственный педагогический университет

Козырева Г.Ф.

Учебно-методическое пособие

«Контрольные работы по курсу

«Информатика и программирование»

для студентов заочной формы обучения

Армавир

Печатается по решению УМС АГПУ

Козырева Г.Ф. Учебно-методическое пособие «Контрольные работы по курсу Информатика и программирование»для студентов заочной формы обучения. – Армавир, АГПУ. – 2009. – 50 с.

Пособие содержит краткий теоретический материал по курсу Информатика и программирование, а также 25 вариантов контрольных работ.

Пособие предназначено для студентов математических факультетов педагогических институтов и университетов. Оно может быть использовано учителями, учащимися, а также слушателями института усовершенствования учителей для контроля знаний учащихся.

Рецензент: к.ф-м.н., декан физического факультета АГПУ, Парзян В.А.

©Армавирский государственный педагогический университет

СОДЕРЖАНИЕ

ВВЕДЕНИЕ........................................................................................................ 4

ВАРИАНТЫ ЗАДАНИЙ.................................................................................. 5

I. ОПЕРАТОРЫ ВВОДА-ВЫВОДА. КОМАНДЫ ВЫБОРА...................... 6

II. ЦИКЛЫ....................................................................................................... 14

III. ПРОЦЕДУРЫ И ФУНКЦИИ ПОЛЬЗОВАТЕЛЯ................................. 20

iV. МАССИВЫ............................................................................................... 28

V. ОБРАБОТКА СИМВОЛЬНЫХ И СТРОКОВЫХ ВЕЛИЧИН............ 36

VI. ФАЙЛЫ...................................................................................................... 43

ЛИТЕРАТУРА................................................................................................. 50

ВВЕДЕНИЕ

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

Дисциплина "Информатика и программирование" предназначена в первую очередь для выравнивания базовых знаний в области программирования студентов первого курса, т. к. эти знания существенно различаются.

Основным направлением обучения является изучение базовых алгоритмических конструкций, основных операторов и их использования.

В качестве основного языка программирования выбран Паскаль, т. к. он наиболее удачно используется для переноса блок-схем алгоритмов на алгоритмический язык.

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

Операторы ввода-вывода. Команды выбора

Циклы

Процедуры и функции пользователя

Массивы

Обработка символьных и строковых величин

Файлы

К каждому разделу приводятся несколько типовых задач с решениями, что позволяет студентам самостоятельно выполнить контрольную работу.

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

Данное пособие представляет собой один из компонентов учебно-методического комплекса дисциплин «Интеллектуальные информационные системы».

ВАРИАНТЫ ЗАДАНИЙ

№ варианта Разделы
I II III IV V VI
47а
47б
47в
47г

I. ОПЕРАТОРЫ ВВОДА-ВЫВОДА. КОМАНДЫ ВЫБОРА

Типы переменных в Паскале:

INTEGER– целый тип (диапазон -32768...32767)

REAL – действительный, вещественный тип (диапазон 2.9*10-39...1.7*10+38)

CHAR –литерный, символьный тип

BOOLEAN– логический тип

BYTE –целые числа от 0 до 255

LONGINT – целый тип (диапазон -2147483648... 2147483647)

STRING – строковый тип (от 0 до 255 символов)

Стандартные операции и функции от скалярных данных

Функция, операция Назначение Тип переменных Тип результата
A+B Сумма real, integer real, integer
A-B Разность real, integer real, integer
A*B Произведение real, integer real, integer
A/B Частное real, integer real
ABS(x) Абсолютное значение real, integer real, integer
SQR(x) Вычисление х2 real, integer real,integer
SIN(x) Нахождение sin x real,integer real
COS (x) Вычисление cos x real, integer real
ARCTAN(x) Вычисление arctan x real, integer real
EXP(x) Вычисление экспоненты ех real, integer real
LN(x) Вычисление ln x real, integer real
SQRT(x) Вычисление V. обработка символьных и строковых величин - student2.ru real, integer real
A div B Нахождение целой части integer integer
A mod B Нахождение остатка integer integer
TRUNC(x) Нахождение целой части х real, integer integer
ROUND(x) Округление х в сторону ближайшего целого real, integer integer
PI Зарезервированная константа число π   real

Некоторые математические функции, не реализованные в языке Паскаль

В математике В программировании на языке Паскаль
xn exp(n*ln(x))
log b a ln(a)/ln(b)
tg x sin(x)/cos(x)
ctg x cos(x)/sin(x)

Операторы

Оператор Назначение Синтаксис
READLN ввод значений с клавиатуры c переводом курсора на новую строку Readln( перем1, …, перемN)
WRITELN вывод значений на экран c переводом курсора на новую строку Writeln('Текст') Writeln(перем1, ..., перемN)
READ ввод значений с клавиатуры Read( перем1, …, перемN)
WRITE вывод значений на экран Write('Текст') Write(перем1, ..,перемN)
IF …THEN… проверка условий if <условие> then <оператор1> else <оператор2> if <условие> then <оператор>  
CASE выбор case <переменная> of <константа 1>: <операторы 1>; … < константа n>: <операторы n> [else <операторы>] end;

Пример 1.

Составить программу расчета значения функции

Z = |cos х4 – 3 tg х2 |+0.8 sin yх2+ 10 при любых значениях х и у.

Результат вывести в виде: при х= и у=… z=…

Используемые переменные: x, y -аргументы, z – значение функции

Program pr1;

Var x,y,z: real;

Begin

writeln('введите X, Y'); {вывод строки подсказки}

readln (x,y); {ввод аргументов x и y}

z:=abs(cos(sqr(x)*sqr(x)-3*sin(sqr(x))/cos(sqr(x))))+0.8*sin(y*sqr(x))+10;

writeln('при x=',x:8:2,' y=',y:8:2,' z=',z:8:2); {вывод результата}

readln; {задержка до нажатия клавиши Enter}

End.

Результат

введите X, Y

1 2

при x=1.00 y=2.00 z=11.59

Пример 2.

Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме сложения, получить 7а за четыре операции.

Используемые переменные: а –вводимое число, b, c, d – вспомогательные переменные

Program pr2;

Var a,b,c,d:real;

Begin

write('введите a= '); readln (a); {ввод исходного числа}

b:=a+a; {2a}

c:=b+b; {4a}

d:=b+c; {6a}

a:=d+a; {7a}

writeln('7a=',a:8:2); {вывод результата}

readln; {задержка до нажатия клавиши Enter}

End.

Результат

введите a= 2

7а= 14.00

Пример 3.

Введенное 4-значное число изменить так, чтобы 2 и 3 цифры поменялись местами.

Program pr3;

Var n,a,b,c,d:integer;

Begin

write('введите n '); readln (n); {ввод исходного 4-значного числа}

a:=n div 1000; {1-я цифра числа}

b:=n div 100 mod 10; {2-я цифра числа }

c:=n div 10 mod 10; {3-я цифра числа }

d:=n mod 10; {4-я цифра числа}

n:= a*1000+c*100+b*10+d; {получение числа в виде суммы разрядных слагаемых}

writeln('результат ', n); {вывод результата}

readln; {задержка до нажатия клавиши Enter}

End.

Результат:

введите n 1234

результат 1324

Пример 4.

Обмен значениями переменных x и y.

Program pr4;

Var x,y,t: integer;

begin

write('Введите x, y '); {вывод строки подсказки}

readln(x,y); {ввод исходных чисел}

t:=x; {в переменную t }

x:=y;

y:=t;

writeln('x=', x, 'y=',y); {вывод результата}

readln; {задержка до нажатия клавиши Enter}

end.

Результат:

Введите x, y 3 7

x=7 y=3

Пример 5.

Выбор минимального из трех введенных целых чисел.

Program pr5;

Var a, b, c, m: integer;

BEGIN

Write('a, b, c='); readln(a, b, c); {ввод исходных чисел}

if a<b then m:=a else m:=b; {выбор минимального из a и b}

if c<m then m:=c; {сравнение с третьим числом}

writeln('Мin=', m); {вывод результата}

readln

END.

Результат:

1 случай:

a, b, c= 15 6 9

Мin=6

2 случай:

a, b, c= 1 45 4

Мin=1

3 случай:

a, b, c= 25 16 9

Мin=9

Пример 6.

Решение квадратного уравнения вида Ax2 + Bx + C = 0.

Program pr6;

Var a, b, c, d, x1, x2: real;

Begin

Write('a, b, c='); readln(a, b, c); {вводим коэффициенты}

d:=sqr(b)-4*a*c; {вычисляем дискриминант}

if d>0 then begin {если дискриминант положительный, то два корня}

x1:=(-b+sqrt(d))/(2*a); writeln('x1=', x1:6:2);

x2:=(-b-sqrt(d))/(2*a); writeln('x2=', x2:6:2) end

else if d=0 then { иначе, если дискриминант= 0, то один корень}

begin x1:=-b/(2*a); writeln('x=', x1:6:2) end

else writeln('Корней нет'); {иначе ‘Корней нет’}

readln

End.

Результат:

1 случай:

a, b, c= 1 -2 1

x= 1.00

2 случай:

a, b, c= 1 -6 8

x1= 4.00

x2= 2.00

3 случай:

a, b, c= 5 1 2

Корней нет

Пример 7.

Вводятся координаты точки. Определить попадает ли точка в заштрихованную область или нет.

 
  V. обработка символьных и строковых величин - student2.ru

Точка будет принадлежать заштрихованной области, если она лежит внутри большого круга (x2+y2 <25) И, одновременно,за пределами малого круга (x2+y2>4).

Program pr7;

Var x,y: real;

Begin

Write('введите x y '); readln (x,y); {ввод координат точки}

if (sqr(x)+sqr(y)<25) and (sqr(x)+sqr(y)>4)

then writeln('точка попадает в заштрихованную область')

else writeln('точка не попадает в заштрихованную область');

readln;

End.

Результат:

1 случай:

введите x y 1 1

точка попадает в заштрихованную область

2 случай:

введите x y 2 5

точка не попадает в заштрихованную область

Пример 8.

Ввести первую букву времени года и вывести соответствующее название времени года на русском языке.

Program pr8;

Var N: char;

Begin

Writeln ('введи первую букву времени года '); Readln (N);

Case N of

'з' : writeln ('зима');

'в': writeln ('весна');

'л': writeln('лето');

'о': writeln('осень')

End.

Результат:

введи первую букву времени года о

осень

ЗАДАНИЯ

1. Составить программу расчета значения функции
Z = |3 ех+3 – 2 ln ху| + 1,8х2 + 1 при любых значениях х и у. Результат вывести в виде: при х= … и у=… z=…

2. Составить программу расчета значения функции
Z = tg х3 – |2 sin х2у + 7.8 cos х |+ 10 при любых значениях х и у. Результат вывести в виде: при х= … и у=… z=…

3. Составить программу расчета значения функции
Z = (х4 – 2 ctg х2у2 )/| 8х2 – 5 arctg у| при любых значениях х и у. Результат вывести в виде: при х= … и у=… z=…

4. Составить программу расчета значения функции
Z = tg х5 – 21 ctg ху2 /(18 sin х – 13 cos у + 11) при любых значениях х и у. Результат вывести в виде: при х= … и у=… z=…

5. Составить программу расчета значения функции
Z = (2eх-4 – |sin х2у| )/( 2.1ctg х2 + 10.2) при любых значениях х и у. Результат вывести в виде: при х= … и у=… z=…

6. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме умножения, получить a4 за две операции.

7. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме умножения, получить a6 за три операции.

8. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме умножения, получить a7 за четыре операции.

9. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме умножения, получить a8 за три операции.

10. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме умножения, получить a9 за четыре операции.

11. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме умножения, получить a10 за четыре операции.

12. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме сложения, получить 6a за три операции.

13. Найти произведение цифр введенного 4-значного числа.

14. Найти сумму цифр введенного 4-значного числа.

15. Определить сумму квадратов цифр введенного 3-значного числа.

16. Введено 3-значное число. Вывести число в зеркальном отображении.

17. Введено 3-значное число. Вывести число в зеркальном отображении

18. Введенное 4-значное число изменить так, чтобы 1 и 4 цифры поменялись местами.

19. Найти среднее арифметическое цифр введенного 3-значного числа.

20. Введено 3-значное число. Поменять местами 1-ю и 3-ю цифры числа.

21. Введенное 4-значное число изменить так, чтобы 1-3 и 2-4 цифры поменялись местами.

22. Найти полусумму цифр введенного 4-значного числа.

23. Определить сумму квадратов цифр введенного 3-значного числа.

24. Введенное 4-значное число изменить так, чтобы 1 и 3 цифры поменялись местами.

25. Введенное 4-значное число изменить так, чтобы 3 и 4 цифры поменялись местами.

26. Введено трехзначное число. Найти сумму четных цифр.

26. Введено четырехзначное число. Содержится ли в его записи цифра 7?

27. Введено четырехзначное число. Найти среднее арифметическое нечетных цифр.

28. Введено трехзначное число. Если в записи числа встречается цифра 5, то записать число в зеркальном отображении.

29. Введено трехзначное число. Если сумма его цифр нечетна, то увеличить число вдвое.

30. Введено четырехзначное число. Найти сумму цифр, кратных 3-м.

31. Вводятся Х и Y. Если хотя бы одно из этих чисел положительно, то найти их произведение. Иначе – найти их сумму.

32. Вводятся Х и Y. Если Х больше Y, то произвести их обмен.

33. Из чисел A, B, C, D выбрать максимальное.

34. Даны три действительных числа. Возвести в квадрат те из них, значения которых неотрицательны.

35. Вводится число. Если оно положительное, то уменьшить его в 10 раз.

36. Вводятся X и Y. Заменить большее из этих чисел разностью большего и меньшего.

37. Определить, принадлежит ли введенное Х интервалу (-10, 15)?

38. Вводится натуральное Х. если оно четное, то уменьшить его вдвое, если нечетное – увеличить на 10.

39. Вводятся X и Y. Заменить меньшее из них суммой этих чисел.

40. Из чисел A, B, C, D выбрать минимальное.

41. Определить, сколько среди заданных чисел A, B, C, D отрицательных.

42. Составить программу, которая по введенной начальной букве выводит название цветов радуги (красный, оранжевый, желтый, зеленый, голубой, синий, фиолетовый).

43. Составить программу, которая по введенному порядковому номеру выводит название дня недели.

44. Составить программу, которая позволяет ввести номер месяца и вывести его название.

45. Составить программу, которая по введенной заглавной букве выводит название столиц мира: Москва, Париж, Лондон, Рим.

46. Составить программу, которая выводит меню и при вводе буквы вычисляет соответствующую функцию:

A - Abs x

S - Sin x

C - Cos x

47. Вводятся координаты точки. Определить попадает ли точка в заштрихованную область или нет.

V. обработка символьных и строковых величин - student2.ru V. обработка символьных и строковых величин - student2.ru

V. обработка символьных и строковых величин - student2.ru V. обработка символьных и строковых величин - student2.ru V. обработка символьных и строковых величин - student2.ru V. обработка символьных и строковых величин - student2.ru V. обработка символьных и строковых величин - student2.ru
y
б)
V. обработка символьных и строковых величин - student2.ru а)

       
 
-1
   
x
 

г)
V. обработка символьных и строковых величин - student2.ru V. обработка символьных и строковых величин - student2.ru в)

 
 
 

II. ЦИКЛЫ

операторы:

Оператор Назначение Синтаксис
For Цикл с параметром For <перем>:=<начальное знач> to <кон.знач> do <оператор>; Значение переменной изменяется от начального значения к конечному с шагом 1. For <перем>:=<нач. знач> downto <конеч. знач> do <оператор>; Значение переменной изменяется от начального значения к конечному с шагом -1
While Цикл с предусловием While <условие> do <оператор>; Цикл выполняется, пока условие истинно.
Repeat Until Цикл с постусловием Repeat <Операторы>; Until <условие>; Цикл выполняется, пока условие ложно.

Пример 1.

Вывести квадраты первых десяти натуральных чисел.

Program pr1;

Var i, x: integer;

Begin

for i:=1 to 10 do begin {перебираем натуральные числа от 1 до 10}

x:=sqr(i); {возводим очередное число в квадрат}

write(x, ' '); {выводим полученное значение}

end;

readln

End.

Результат

1 4 9 16 25 36 49 64 81 100

Пример 2.

Найти сумму 1 + 1/3 + 1/5 +...(N слагаемых).

Решение:

Program pr2;

Var I, N: integer; S: real;

Begin

Write('N='); Readln(N); {вводим количество слагаемых}

S:=0; {обнуляем сумму}

For I:=1 to N do {добавляем к сумме N слагаемых}

S:=S+1/(2*I-1);

Writeln('S=',S:5:2); {выводим значение суммы с двумя десятичными знаками}

Readln

End.

Результат:

N=4

S= 1.68

Пример 3.

Вычислить произведение (1 + sin2 )*(2 + sin3 )*... (n сомножителей).

Рrogram Pr3;

Var n, i: integer; p: real;

Begin

write('n='); readln(n); p:=1;

for i:=1 to n do

p:=p* (i + sin(i+1));

writeln('p=', p:6:3);

readln

End.

Результат:

n=5

p=131.645

Пример 4.

Задана арифметическая прогрессия -21; - 16;… Определить номер первого положительного члена прогрессии.

a – очередной член прогрессии, n – его порядковый номер

Program Pr4;

Var

a, n: integer;

Begin

a:= -21; n:=1; {задаем начальные значения}

while a<=0 do begin {пока очередной член прогрессии меньше либо равен 0,}

a:=a+5; n:=n+1; {вычисляем след. член прогрессии и его порядковый номер}

end;

writeln(‘n=’, n); {выводим номер 1-го положительного члена прогрессии}

readln;

End.

Результат:

n=6

Пример 5.

Протабулировать функцию y:=sin(x)*x интервале [-p/2,p/2] с шагом p/10.

Program pr5;

Var x, y: real;

Begin

x:=-pi/2;

while x<=pi/2 do begin

y:=sin(x)*x; writeln('x=',x:8:2,' y=',y:8:2); x:=x+pi/10

end;

End.

Пример 6.

Подсчитать количество двузначных чисел, у которых сумма цифр нечетна.

Program Pr6;

Var n, a, b, k: integer;

Begin

k:=0; for n:=10 to 99 do begin

a:= n div 10; b:=n mod 10;

if (a+b) mod 2=1 then k:=k+1;

end;

writeln('k=',k)

end.

Пример 7

Рассчитать период (в месяцах) роста банковского вклада в mраз при известной ежемесячной процентной ставке pr (1% соответствует pr=1).

Program Pr7;

Var pr,m,s,s0: real;

N: integer;

Begin

Repeat

Write (‘Введи проценты по вкладу:’); readln(pr);

Write (‘Введи коэффициент роста вклада:’); readln (m)

Until (m>1) and (pr>0); {проверка вводимых данных}

N:=0; {счетчик месяцев}

s0:=1000; {начальная сумма вклада – произвольно}

s:=s0; {текущая сумма вклада}

Repeat {перебор по месяцам}

s:=s*(1+pr/100); inc(N)

Until s/s0>=m;

WriteLn (‘количество месяцев вклада:’,N);

ReadLn

End.

ЗАДАНИЯ

1. Дано натуральное число n. Вычислить 21+22+…+2n .

2. Дано натуральное число n. Вычислить n! (V. обработка символьных и строковых величин - student2.ru )

3. Дано натуральное число n. Вычислить V. обработка символьных и строковых величин - student2.ru .

4. Дано натуральное число n и действительно число х. Вычислить V. обработка символьных и строковых величин - student2.ru .

5. Даны натуральные числа а, n. Вычислить V. обработка символьных и строковых величин - student2.ru .

6. Найти произведение: Р = (1 + х)·(3+2х)·(5+3х)·... . (n множителей)

7. Задана арифметическая прогрессия. 7,6; 6,3; … . Сколько членов прогрессии нужно сложить, чтобы полученная сумма стала <0.

8. Задана арифметическая прогрессия 2; 2,8; … . Сколько членов прогрессии нужно сложить, чтобы полученная сумма стала >20.

9. Задана арифметическая прогрессия. 7,1; 5,3; … . Сколько членов прогрессии нужно сложить, чтобы полученная сумма стала <0.

10. Задана арифметическая прогрессия. 8,4; 6,2 … . Сколько членов прогрессии нужно сложить, чтобы полученная сумма стала <0.

11. Задана арифметическая прогрессия. 2; 3,8; ... . Сколько членов прогрессии нужно сложить, чтобы полученная сумма стала >30.

12. Подсчитать количество и сумму четных трехзначных чисел.

13. Подсчитать сумму двухзначных чисел, сумма цифр которых не превышает 7.

14. Подсчитать количество двузначных чисел, кратных 3.

15.Подсчитать сумму двузначных чисел, сумма цифр которых не превышает 10.

16. Подсчитать количество и сумму трехзначных чисел, кратных 3.

17. Подсчитать количество и сумму четных трехзначных чисел.

18. Протабулировать функцию y=x3-1 на интервале [-1,3] с шагом 0.2.

19. Протабулировать функцию y=x2-1/x на интервале [1,2] с шагом 0.05.

20. Протабулировать функцию y= sin x – cos x на интервале [-p,p] с шагом p/10.

21. Протабулировать функцию y= cos(x)*x на интервале [-p,p] с шагом p/10.

22. Протабулировать функцию y=sin2x на интервале [0,p] с шагом p/20.

23. Протабулировать функцию y= cos x2+sin x2 на интервале [-p/2,p/2] с шагом p/10.

24. Дано натуральное число n. Найти сумму S=1-1/5+1/9-1/13+… . (n слагаемых)

25. Дано натуральное число n. Найти сумму S=1-3+5-… . (n слагаемых)

26. Торговая фирма в первый день работы реализовала товаров на P тыс. руб., а затем ежедневно увеличивала выручку на 3%. Какой будет выручка фирмы в тот день, когда она впервые превысит заданное значение Q? Сколько дней придется торговать фирме для достижения этого результата?

27. Малое предприятие в первый день работы выпустило P единиц товарной продукции. Каждый последующий день оно выпускало продукции на Q единиц больше, чем в предыдущий. Сколько дней потребуется предприятию, чтобы общее количество выпущенной продукции за все время работы впервые превысило запланированный объем?

28. Составить программу расчета роста по месяцам в течение полутора лет банковского вклада. Программа запрашивает с защитой от неверного ввода данных следующую информацию:

- начальный размер вклада ( 1000…10000 ),
- размер периодических платежей (от 1% до 10% от начального вклада),
- размер процентной ставки по вкладу (0.5% … 4% в месяц ).

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

29. Составить программу расчета роста по месяцам в течение одного года банковского вклада. Программа запрашивает с защитой от неверного ввода данных следующую информацию:

- начальный размер вклада ( 2000…20000 ),
- размер процентной ставки по вкладу (1% … 3% в месяц ),
- размер периодических платежей (от 2% до 7% от начального вклада).

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

30. Составить программу расчета роста по месяцам банковского вклада.
Программа запрашивает с защитой от неверного ввода данных следующую информацию:

- начальный размер вклада ( 3000…30000 ),
- размер процентной ставки по вкладу (1% … 4% в месяц ),
- размер периодических платежей (от 3% до 7% от начального вклада),
- количество месяцев, в течение которого проводится расчет (от 3 до 36).

Вывести таблицу роста вклада по месяцам, а также определить количество месяцев, необходимое для роста размера начального вклада на 70 %.

31. Составить программу расчета роста по месяцам в течение двух лет банковского вклада. Программа запрашивает с защитой от неверного ввода данных следующую информацию:

- начальный размер вклада ( 4000…20000 ),
- размер периодических платежей (от 4% до 10% от начального вклада),
- размер процентной ставки по вкладу (0.4% … 4%).

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

32. Составить программу расчета роста по месяцам в течение двух лет банковского вклада. Программа запрашивает с защитой от неверного ввода данных следующую информацию:

- начальный размер вклада ( 2000…20000 ),
- размер процентной ставки по вкладу (1.5% … 5%),
- размер периодических платежей (от 0.5% до 5% от начального вклада).

Вывести таблицу роста вклада по месяцам, а также определить количества месяцев, необходимые для роста начальной суммы вклада на 50%.

33. Составить программу расчета роста по месяцам банковского вклада.
Программа запрашивает с защитой от неверного ввода данных следующую информацию:

- начальный размер вклада ( 1000…100000 ),
- размер процентной ставки по вкладу (1% … 10%),
- размер периодических платежей (от 6% до 10% от начального вклада),
- количество месяцев, в течение которого проводится расчет (от 6 до 24).

Вывести таблицу роста вклада по месяцам, а также определить количество месяцев, необходимое для роста размера начального вклада на 60 %.

34. Составить программу расчета роста по месяцам в течение года банковского вклада. Программа запрашивает с защитой от неверного ввода данных следующую информацию:

- начальный размер вклада ( 500…10000 ),
- размер периодических платежей (от 1% до 10% от начального вклада),
- размер процентной ставки по вкладу (0.5% … 4% в месяц ).

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

35. Составить программу расчета роста по месяцам в течение одного года банковского вклада. Программа запрашивает с защитой от неверного ввода данных следующую информацию:

- начальный размер вклада ( 100…20000 ),
- размер процентной ставки по вкладу (1% … 13% в месяц ),
- размер периодических платежей (от 2% до 7% от начального вклада).

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

III. ПРОЦЕДУРЫ И ФУНКЦИИ ПОЛЬЗОВАТЕЛЯ

Процедуры и функции пользователя – это относительно самостоятельные части программы, имеющие собственное имя. Они описываются перед основной программой.

Структура процедуры:

Procedure <имя_процедуры>(<параметры>); -заголовок процедуры

V. обработка символьных и строковых величин - student2.ru Label <метки>;

Const <константы>; раздел объявления меток, констант, типов данных,

Type <типы данных>; переменных (может отсутствовать)

Var <переменные>;

Begin

<операторы > - тело процедуры

End;

Параметры, указанные в заголовке процедуры называются формальными. Вызов процедуры осуществляется из основной программы указанием ее имени. При вызове процедуры формальные параметры заменяются фактическими. Количество и тип формальных и фактических параметров должны совпадать. Для передачи исходных данных в процедуру используются параметры-значения. Фактические параметры-значения могут быть константами, переменными, выражениями. Полученный в процедуре результат передается в основную программу с помощью параметров-переменных. В заголовке описания процедуры перед параметрами-переменными пишется Var.

Структура функции:

Function <имя_функции>(<параметры>) : <тип результата>;

V. обработка символьных и строковых величин - student2.ru Label <метки>;

Const <константы>; раздел объявления меток, констант, типов данных,

Type <типы данных>; переменных (может отсутствовать)

Var <переменные>;

Begin

<операторы, составляющие тело функции>;

End;

Для того, чтобы значение функции было определено и передано в основную программу, в теле функции обязательно должен быть хотя бы один оператор присваивания вида: <имя_функции>:=<значение>.

Пример 1.

Создать функцию пользователя, вычисляющую х!

Program pr1;

Function Fact(x: integer): real; {описание функции пользователя}

Var

i: integer; f: real;

begin

f:=1; for i:=1 to x do f:=f*i; {вычисляем произведение}

Fact:=f; {имени функции присваиваем полученное значение}

end;

Var

x: integer; y: real;

BEGIN {основная программа}

Write (‘x=’); Readln(x); {ввод значения х}

y:=Fact(x); {вызов функции с аргументом х }

Writeln(‘y=’, y:4:0); {вывод результата}

Readln;

END.

Результат:

x= 4

y= 24

Пример 2.

Два треугольника длинами своих сторон. Определить, площадь какого из них больше (создать функцию для вычисления площади треугольника по длинам его сторон).

Для решения задачи используем формулу Герона V. обработка символьных и строковых величин - student2.ru , где x, y, z – стороны треугольника, p – полупериметр)

Program pr2;

Function PlTr(x ,y, z: real): real; {описание функции пользователя}

Var

p: real;

Begin

p:= (x + y + z)/2; {полупериметр треугольника}

PlTr:=Sqrt(p*(p-x)*(p-y)*(p-z));

End;

Var

a1, b1, с1, s1, a2, b2, с2, s2: real;

BEGIN {основная программа}

{ввод исходных данных}

Write('Cтороны 1-го треугольника:'); Readln(a1, b1, c1);

Write('Cтороны 2-го треугольника:'); Readln(a2, b2, c2);

S1:=PlTr(a1, b1, c1); { вычисление площади 1-го треугольника}

S2:=PlTr(a2, b2, c2); {вычисление площади 2-го треугольника}

if S1>S2 then Writeln(‘S1>S2’) else

if S1<S2 then Writeln(‘S1<S2’) else Writeln(‘S1=S2’);

Readln;

END.

Результат:

Cтороны 1-го треугольника:3 4 5

Cтороны 1-го треугольника:6 7 8

S1<S2

Пример 3.

Составить функцию для вычисления xn, где x,n – целые числа

Степень принимает отрицательное значение, если основание степени Х<0 и показатель степени –нечетное число.

Program Pr3;

Function stepen(x,n:integer):real; {описание функции пользователя}

begin

if (n mod 2 <> 0) and (x<0) then stepen:=-exp(n*ln(abs(x)))

else stepen:=exp(n*ln(abs(x)));

end;

Var

x,n:integer;

BEGIN

write('x,n='); readln(x,n); {ввод исходных данных}

write('stepen=',stepen(x,n):6:2); {вызов функции и вывод ее значения}

readln;

END.

Результат:

1 случай

x,n=2 3

stepen= 8.00

2 случай

x,n=-2 3

stepen= -8.00

3 случай

x,n=2 -2

stepen= 0.25

4 случай

x,n=-2 -2

stepen= 0.25

Пример 4.

Вычислить, используя функцию нахождения знаменателя:

V. обработка символьных и строковых величин - student2.ru (n слагаемых)

Program pr4;

Function Fakt(x: integer): real; {функция вычисления факториала}

Var

i: integer; f: real;

begin

f:=1; for i:=1 to x do f:=f*i;

Fakt:=f;

end;

Var s: real; i, n: integer;

Begin

write('n= '); Readln(n); {вводим количество слагаемых суммы}

s:=0;

For i:=1 to n do {перебираем i от 1 до n}

s:=s+i/Fakt(i+1); {добавляем к сумме очередную дробь, вызывая}

{ функцию для вычисления знаменателя}

writeln('s=',s:6:4); {вывод результата}

Readln;

end.

Результат:

n=3

s=0.9583

Пример 5.

Создать процедуру для вычисления периметра и площади прямоугольного треугольника по его катетам a, b.

Program pr5;

Procedure Treug(a,b: real; Var p, s: real); {описание процедуры}

Наши рекомендации