- •Основы программирования на турбо паскале методические указания
- •Введение
- •Знакомство со средой программирования Turbo Pascal 7.0
- •Лабораторная работа №1 Структура программы на Паскале. Организация ввода-вывода данных. Использование стандартных функций.
- •Основные стандартные функции
- •Выражения
- •Задания для самостоятельной работы
- •Лабораторная работа №2 Программы разветвляющейся структуры
- •Практические задания
- •Var c: char;
- •I: integer;
- •Практические задания
- •Var a,b,c,X: integer;
- •Var X,y,r:real;
- •Задания для самостоятельной работы
- •Лабораторная работа №3 Программы циклической структуры
- •Практические задания
- •Var X,y,a, x1, x2, h, xmin, ymin, sa: real;
- •Задания для самостоятельной работы
- •Лабораторная работа №4 Работа с массивами и строками
- •1) Тип «массив»
- •Var a: Vector;
- •2) Тип «строка»
- •Var s: String[80];
- •Практические задания
- •Var a: array[1..100] of real;
- •I,j,n: integer;
- •Var a: array [1..10,1..10] of real;
- •I,j,n,m,m1,m2: integer;
- •Var s: string;
- •I: integer;
- •Задания для самостоятельной работы
- •Лабораторная работа №5 Процедуры и функции
- •1) Процедуры
- •Var a: mass;
- •Var I: integer;
- •2) Функции
- •Var a: mass;
- •Практические задания
- •Var a,b,c,s: real;
- •Var p: real;
- •If exist(a,b,c) then
- •Var a,b: vect;
- •Задания для самостоятельной работы
- •Лабораторная работа №6 Типизированные и текстовые файлы
- •Var f: File of real;
- •Var t: text80;
- •1) Типизированные файлы
- •2) Текстовые файлы
- •Практические задания
- •Var n,I,X,xmax: integer;
- •Var I,j,n:integer;
- •Задания для самостоятельной работы
- •Лабораторная работа №7 Графика в Турбо Паскале
- •Практические задания
- •Var gd,gm,n,I: integer;
- •Var I,X,y: integer;
- •Initgraph(gd,gm,'');
- •Задания для самостоятельной работы
- •394026 Воронеж, Московский просп., 14
Практические задания
1. Изучить и
запустить программу, вычисляющую сумму
,
n
= 10.
Определить максимальное значение n,
при котором факториал (переменная f
типа longint)
вычисляется верно.
var f: longint;
i: integer;
s: real;
Begin
s:=0; f:=1;
for i:=1 to 10 do begin
f:=f*i;
s:=s+1/f
end;
writeln(’s=’,s:9:6); readln
End.
2. Составить программы, вычисляющие значения выражений:
а)
б)
в)
г)
;
д)
е)
ж)
;
з)
и)
к)
.
3. Составить программу, вычисляющую значение выражения f = n10!+(n–1)9!+...+(n–10)0!, где n – любое целое число.
var n,u,f: longint;
i, j: integer;
begin
writeln(’Введите число n’);
readln(n);
f:=0;
for i:=10 downto 0 do { цикл вычисления суммы}
begin
u:=1;
for j:=2 to i do u:=u*j; {цикл вычисления факториала}
f:=f+(n+i-10)*u; {добавление в сумму}
end;
writeln(’f=’, f:12);
end.
4. Вычислить с помощью рекуррентной формулы сумму ряда с заданной точностью (использовать оператор цикла с постусловием):
.
Решение. Каждый член данного ряда требует вычисления только двух функций – степенной и факториала. Поэтому в рекуррентную формулу целесообразно включить весь член ряда
.
Итак, требуется получить формулу
un+1 = Rn un .
Определим множитель Rn
.
Таким образом, сумму указанного ряда можно найти по следующей схеме:
S = u0 + u1 + ... + un ,
где
u0
= 1,
,
суммирование заканчивается, когда
un – 1 > , un < .
var s,u,x,eps: real;{s – сумма, u – член ряда, eps - точность}
n: integer; {x – аргумент функции, n – номер члена ряда}
begin
writeln(’Введите аргумент x и точность eps’);
readln(x, eps);
u:=1; s:=u; n:=0; { инициализация переменных}
repeat
u:=–u*x*x/(2*n+1)/(2*n+2); {рекуррентная формула}
s:=s+u; {суммирование ряда}
n:=n+1; {счетчик}
until abs(u)<eps;
writeln(’Сумма ряда равна ’, s:10:6);
writeln(’Для сравнения cos(x)=’, cos(x):10:6);
readln
end.
5. Вычислить суммы рядов с точностью = 0,0001. Использовать, где это целесообразно, рекуррентные формулы. Использовать цикл с предусловием (а, в), с постусловием (б, г):
а)
б)
в)
г)
6. Изучить и запустить программу вычисления значений функции на интервале x1xx2 с шагом h и найти ее минимальное значение и среднее арифметическое:
Var X,y,a, x1, x2, h, xmin, ymin, sa: real;
n,i: integer;
begin
writeln(’Введите число a, начало и конец интервала и шаг h’);
readln(a, x1, x2, h);
if (x2>x1) and ((x2–x1)>2*h) then { если x2 > x1 и}
begin { на интервале не менее трех точек}
x:=x1; { инициализация }
n:=round((x2-x1)/h); {кол-во точек равно n+1 }
if(x>a) then y:= sqr(sin(abs(x)))
else y:= cos(x*x);
writeln(’x=’, x:7:3,’ y=’, y:9:4); {вывод x1 и y1}
xmin:=x; ymin:=y; SA:=y; { присваивание начальных }
{ значений перед циклом }
for i:=1 to n do begin { выполняется цикл }
x:=x1+i*h;
if(x>a) then y:= sqr(sin(abs(x)))
else y:=cos(x*x); {вычисление функции }
writeln(’x=’, x:7:3,’ y=’, y:9:4); {вывод x и y}
if y<ymin then begin
ymin:= y; xmin:= x; {корректируем уmin, xmin}
end;
SA:=SA+y; {накопление суммы значений функции}
end; { конец цикла }
writeln(’Минимальное значение y =’,ymin:9:4,’ при x=’, xmin:7:3);
writeln(’Среднее значений функции ’, SA/(n+1):9:4);
end
else writeln (’Неверно заданы x1 и x2’);
readln
end.
