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

Paskal_ucheb_posob_ch1_21_11_2011

.pdf
Скачиваний:
47
Добавлен:
09.04.2015
Размер:
943 Кб
Скачать

41

Упражнение 2.

Вычислить:

24/(3*4)-24/3/4+24/3*4

12

8/4

+

8*4

2

- 2

+

32 = 32

Ответ: 32

Упражнение 3.

Записать на ПАСКАЛЕ следующие формулы:

 

п/п

Исходная

Запись на Паскале

 

 

формула

 

 

1.

(1+X)2

SQR(1+X) или (1+X)*(1+X)

 

2.

X-1

1/X

 

3.

│A+B*X│

ABS(A+B*X)

 

4.

Х4

SQR(SQR(X))

 

5.

SIN(X)

SIN(X)

 

6.

X100

EXP(100*LN(X))

 

7.

COS 2X3

SQR(COS(X*X*X))

 

8.

21+X

EXP((1+X)*LN(2))

 

9.

LOG2 (X/5)

LN(X/5)/LN(2)

 

10.

Х0,5

EXP( (0.5)*LN(X))

 

11.

TG(X

SIN(X)/COS(X)

 

12.

(1+X) 1/3

EXP(LN(1+X)/3)

13

X-100

EXP(100*abs(LN(X)))*(-1)

Таблица 9. Запись формул и выражений.

аb = еb*ln(a)

Упражнение 4.

Число e можно записать: EXP(1)

42

Pi можно записать:4*ARCTAN(1)

SIN0(X ) = SIN(Pi*(X/180)

Упражнение 5.

Написать программу, которая вычисляет расстояние между точками с координатами (Х1,У1) и (Х2,У2) по формуле: d=sqrt(sqr(x1-x2)+sqr(y1-y2)); и находит площадь треугольника по фор-

мулам: p=(a+b+c)/2 , s=sqrt(p*(p-a)(p-b)(p-c).

Var x1,x2,y1,y2,a,b,c,p,s,d:real; Begin

write(‘Ведите координаты 1-й точки по x->’,x1); Readln (x1);

write(‘Ведите координаты 1-й точки по y->’,y1); Readln (y1);

write(‘Ведите координаты 2-й точки по x->’,x2); Readln (x2);

write(‘Ведите координаты 2-й точки по y->’,y2); Readln (y2);

d:= sqrt (sqr (x1-x2)+sqr (y1-y2)); writeln(‘Расстояние между точками = ’,d:8:2); write(‘Вводите длины сторон треугольника’);

Readln (a, b, c,); p:=(a+b+c)/2; s:=sqrt(p*(p-a)(p-b)(p-c));

Writeln (‘Периметр треугольника равен->’,p*2); Writeln (Площадь треугольника =’,s);

Readln ; end.

Упражнение 6.

Поменять местами значения Х и У.

Для обмена значениями должна существовать третья ячейка для хранения промежуточных значений (рис. 6). В данном случае это ячейка R.

R:=X;

X:=Y;

Y:=R;

 

43

 

2 шаг

Y

X

3 шаг

1 шаг

 

R

Рисунок 6. Схема перестановки значений между двумя ячейками.

Упражнение 7.

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

п/п

Выражение

Результат

1.

TRUNC(6.9)

6

2.

ROUND(6.9)

7

3.

TRUNC(6.2)

6

4.

ROUND(6.2)

6

5.

TRUNC(-1.8)

-1

6.

ROUND(-1.8)

-2

7.

ROUND(0.5)

1

8.

ROUND(-0.5)

-1

Таблица 10. Примеры вычисления стандартных функции.

Упражнение 8.

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

п/п

Выражение

Результат

1.

20 DIV 6

3

2.

20 MOD 6

2

3.

20 DIV 4

5

4.

20 MOD 4

0

5.

2 DIV 5

0

 

 

 

44

 

 

 

 

 

6.

2 MOD 5

 

2

7.

2

DIV 0

 

Ошибка

8.

3

МOD 0

 

Ошибка

Таблица 11. Примеры вычислений стандартных функций.

Упражнение 9.

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

п/п

Выражение и исходные данные

Результат

1.

NOT ODD(N),

N=0

TRUE

2.

T AND (P MOD 3) = 0, T=TRUE ,

TRUE

 

P=1010102 = 4210

 

 

3.

(X*Y<>0) AND (Y>X) , X=2, Y=1

FALSE

4.

(X*Y<>0) OR (Y>X), X=2, Y=1

TRUE

5.

A OR (NOT B), A=FALSE, B=TRUE

FALSE

Таблица 12. Примеры вычислений логических выражений.

Упражнение 10.

Записать на ПАСКАЛЕ выражение, истинное при выполнении указанного условия и ложное в противном случае.

п/п

Выражение и исходные дан-

 

Результат

 

 

ные

 

 

 

 

1.

X принадлежит отрезкам

(X>=2)

AND

(X<=5)

OR

 

[2,5];[-1,1]

ABS(X)<=1

 

 

2.

Х лежит вне отрезков [2,5] и

(X<-1) OR (X>1) AND (X<>2) OR

 

[-1,1]

(X>5)

 

 

 

Таблица 13. Примеры вычислений логических выражений.

Упражнение 11.

Нарисовать на плоскости (X,Y) область: а) в которой истинно указанное выражение:

(Y>=X) AND (Y+X>=0) AND (Y<=1)

б) в которой, и только в которой истинно указанное выражение:

(ABS(X)<=1) AND (ABS(Y)>=1)

45

СЕМИНАРЫ ЧАСТЬ II

Условный оператор, операторы цикла.

Упражнение 12.

Var X,Y : real; Begin

Read ( X );

if (X < 0)

Then Y:=sqr(X) + 1

Else

if (X > (3.14/2))

Then Y:=X - 2.1 Else Y:=sin(X);

Writeln ('Y= ',Y:2:4); End.

Что делается в программе?

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

Упражнение 13.

Просчитать сумму чисел от 1 до N.

Var

s,i,n: integer; Begin

Writeln ('Bведите N '); Readln (n);

for i:=1 to n do Begin

Writeln (' Суммируется ',I:4,' элемент '); if not (odd(i)) then

s:=s+i;

End;

Writeln (' Сумма = ',S )

End.

Подобная задача рассматривалась в разделе, где рассматривался цикл с параметром FOR.

46

Упражнение 14.

Сгенерировать число Фибоначчи, не превосходящее заранее заданное натуральное число. Число Фибоначчи получается по формуле:

Fi+2 = F i+1 + F i ,

где I >= 0, F0=0, F1=1.

Программы написать с использованием двух типов циклов: While и Repeat.

program FIB_while; Var

n,fi,fi1,fi2:integer; Begin

write(‘Введи погрешность вычисления’);

Readln (n); fi:=0; fi1:=1;

fi2:=1; {fi2:=fi1+fi;}

while fi2<=n do Begin fi2:=fi1+fi; fi:=fi1;

fi1:=fi2;

End; Writeln (fi); Readln ;

End.

program FIB_repeat; var

n,fi2,fi1,fi :integer; Begin

write(‘Введи погрешность вычисления’);

Readln (n); fi:=0; fi1:=1; repeat

fi2:=fi1+fi;

fi:=fi1;

fi1:=fi2; until fi2>=n;

47

Writeln (fi); Readln ;

end.

Не зависимо от применения различных типов циклов весь смысл задачи сводится к тому, что нужно делать после некоторых вычислений перестановки значений между переменными, где они хранятся. Поясним на рисунке 7. В части А) приведен оператор, распложенный внутри цикла, fi2:=fi1+fi, записанный в привычном «школьном» виде. В части Б) приведены сразу два оператора, расположенные внутри цикла, fi:=fi1 (1); fi1:=fi2 (2), в которых последующее значение элемента ряда заносится в предыдущую ячейку.

A)

Fi

+

Fi1

=

Fi2

 

 

Fi

 

Fi1

 

Fi2

Б)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

Рисунок 7. Схема замены элементов при суммировании ряда.

Упражнение 15.

Дан текст, содержащий N символов. Подсчитать количество вхождений символов А и В.

Program kol;

Var k,l,i,n :integer; a:char;

Begin write('n=?'); readln(n); k:=0;

l:=0;

for i:=1 to n do Begin read(a);

48

if a='a' then k:=k+1 {inc(k) -> +1; dec(k) -> -1} else if a='b' then l:=l+1;

End;

writeln('a=',k,' b=',l);

End.

Упражнение 16.

Дано целое число N, нужно найти его факториал.

Program FAKTORIAL ; Var N,I,F : integer; Begin

readln (N); F:=1;

for I:=2 to N do F:=F*I;

writeln ('Факториал от ', N ,' равен ', F );

End.

Для полного понимания вычисления факториала посмотрим его подсчет с помощью таблицы трассировки при N=5.

Шаг

F

I

F

1

1

2

1*2=2

2

2

3

2*3=6

3

6

4

6*4=24

4

24

5

24*5=120

 

 

 

 

Таблица 14. Таблица трассировки вычисления факториала

Упражнение 17.

Дано N чисел, вводимых с клaвиатуpы. Найти сумму четных чисел .

Program SUMMA; Var

A: array[1..10] of integer; I,S: integer;

Begin

for I:=1 to 10 do begin

write(‘Введите число с номером’,I,’’); readln ( A[I] );

end;

49

S:=0;

for I:=1 to 10 do

if ( odd( A[I] )=false) then S:=S+A[I] ; Writeln ('Сумма четных чисел равна ', S );

End.

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

Напомню, что функция odd принимает значение True, если аргумент является нечетным числом, и False, если число четное.

Упражнение 18.

Найти сумму ряда по приведенной ниже формуле:

Y 1

x1

 

x2

 

x3

...

xn

.

 

 

 

 

 

 

1!

2!

3!

 

n!

Суммирование закончить в том случае, когда очередной элемент ряда станет меньше 10-5 .

uses crt;

const pogr=1e-5; var

n, fact, i ,x, znam: integer; summa, a_n, chisl: real;

begin

clrscr;

writeln(' a(n) = (x^n) / n! ' ); write('input x (zeloe)->'); readln(x);

n:=1;

summa:=1;

chisl:=x;

znam:=1; a_n:=chisl/znam;

while a_n>=pogr do begin summa:= summa+a_n; n:=n+1;

chisl :=exp(n*ln(x));

50

fact:=1;

for i:=2 to n do fact:= fact * i;

znam:=fact; a_n:=chisl/znam;

end;

writeln ('summa r y a d a =',summa:8:3,' shag=',n); readln;

end.

В данном примере a_n очередной элемент ряда, chisl – значение числителя в дроби очередного элемента ряда, znam- знаменатель дроби. Числитель вычисляется согласно известной формуле возведения в степень, а знаменатель – как факториал от значения n, которое является основным критерием для изменения значения очередного элемента ряда.

Упражнение 19.

Найти сумму ряда согласно приведенной формулы:

Y 1

x1 * ( 1)1

 

x2 * ( 1)2

 

x3 * ( 1)3

...

xn * ( 1)n

.

 

 

 

 

 

 

1!

2!

3!

 

n!

Суммирование закончить в том случае, когда абсолютное значение очередного элемента ряда станет меньше 10-5

uses crt;

const pogr=1e-5; var

n,fact,i ,x,znam, koeff:integer; summa,a_n,chisl:real;

begin

clrscr;

writeln(' a(n)=(x^n*(-1^n)/n!'); write('input x (zeloe)->'); readln(x);

n:=1;

summa:=1; chisl:=-x; znam:=1;

if odd(n) then koeff:= -1 else koeff:=1;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]