воскресенье, 6 мая 2012 г.

Підпрограми - процедури


У мові Паскаль розрізняють два види підпрограм: Підпрограми-процедури і підпрограми-функції.
Концепція структурного програмування поллягає в тому, що будь-яку складну чи громіздку задачу потрібно звести до послідовності простіших підзадач, записати підпрограми для їхнього розв’язування і створити головну програму, яка має складатися з викликів  цих процедур. Різновидом підпрограми  є процедура, де розв’язується допоміжна задача.
Procedure <Назва процедури>;
<Розділи описів і оголошень процедури>
{Оголошенні тут змінні називаються локальними}
begin
<Розділ команд процедур>
end;
Назву процедурі дає користувач. Процедур може бути декілька. Їх записують у розділі описів головної програми:

Program <Назва головної програми>;
<Розділ описів і оголошень>;
{Оголошені тут змінні називаються глобальними }
<Процедура 1>;
<Процедура 2>;
.............
begin
< Розділ команд, який містить
виклик процедури 1;
виклик процедури 2;>
.....
end.
Розділ команд головної програми складається в основному з викликів процедур. Виклик процедури – це команда, яка збігається з назвою процедури.
2) Демонстраційний приклад.

Дано сторони a, b прямокутника. Обчислити його  периметр і площу, використавши для цього процедуру.

Program M1;
var a, b,  p, s :real;
procedure Rect;
begin
p:=2*(a+b);
s:=a*b
end;
begin
write(‘Ведіть a і b’);
readln(a,b);
Rect;
writeln(p:6:2, s:6:2);
end.

3) Розв’язування задач.
Розв’язати самостійно задачі, використвши при  цьому підпрограми-процедури.
а) Обчислити кількість теплоти, яка необхідна для нагрівання води від температури 28 до 100 С.
б) Перевірити чи трикутник зі сторонами a, b, c є рівнобедреним?

вторник, 24 апреля 2012 г.

Цикл Поки


Якщо <умова> має значення TRUE (виконується), то виконується <оператор>, 
 після чого повторюється перевірка <умови>. Якщо <умова> має значення 
FALSE (не виконується), оператор WHILE припиняє свою роботу. 


 
Program While_Demo;
Var
 I  : Integer;
 St : String;
BEGIN
 Write('Введіть слово: ');
 Readln(St); 
 Writeln('Повторяю 10 раз.'); 
 I:=0;
 While I < 10 Do
  Begin
   Writeln(St);
   I:=I+1;
  End;
END.
 

воскресенье, 22 апреля 2012 г.

Цикл "Доки". Команди While, Repeat..


1)      Цикл "Доки". Команди While, Repeat.

While
            умова do
begin
Тіло циклу
end;

Вказівка виконується таким чином: перевіряється виконання умови, записаної після слова WHILE (поки), і якщо ця умова виконується то виконується серія операторів (тіло циклу), після чого знову повертається до перевірки виконання вказаної умови (зустрівши слово END). Вказані дії виконуються доти, поки умова, яка перевіряється дає істино. Якщо умова не виконується (результат виконання умови є хибно), то тіло циклу пропускається і виконання вказівки повторення закінчується.
Приклад. Вивести таблицю чисел від 20 до 30, їхні квадрати та куби за допомогою команди while можна так:
і := 20;
while  і <= 30 do
begin
writeln(і:4, i*i:6, i*i*i:8);
і:=і+1;
      end;

Команда циклу з післяумовою (repeat) має вигляд
        repeat <команди> until <логічний вираз>;
Дія команди. Команди виконуються в циклі, доки значення логічного виразу не стане істинним. Істинний логічний вираз задає умову виходу з циклу.

2) Демонстраційний приклад.

 

Завдання


Протабулювати функцію y=x2 на відрізку [a,b] кроком h.

var x,y,a,b,h:real;
begin
readln(a,b,H);
x:=a;
while x<=B do
            begin
Y:=x*x;
writeln(x,’ ‘,y);
end;
end.


1)      Розв’язування задач.

  Скласти програму знаходження суми коренів квадратних цілих чисел від  0 до 50.
- Скласти програму знаходження суми всіх парних чисел від N до 50.

среда, 18 апреля 2012 г.

задачі


 Знайти відстань між двома заданими точками з координатами А(x,y),B(x1,y1)
Математична модель -   l:=sqrt(sqr(x-x1)+sqr(y-y1));

program Otrezok;
uses Crt;
var
  x,y, x1,y1            : real;
  l                     : real;
begin
  ClrScr;
  Write('‚ Ведіть координату   X:>'); Readln(x);
  Write('‚ Ведіть координату  Y:>'); Readln(y);
  Write('‚ Ведіть координату  X1:>'); Readln(x1);
  Write('‚ Ведіть координату Y1:>'); Readln(y1);
  l:=sqrt(sqr(x-x1)+sqr(y-y1));
  Writeln('Відстань між точками ',l:2:3);

end.

четверг, 12 апреля 2012 г.

знайти корені квадратного рівняння

Program Sq1;
Var A, B, C, D, X1, X2: Real;
Begin
Writeln ('Введіть коефіцієнти квадратного рівнняння);
Readln (A,B,C);
D:=B*B-4*A*C;
If D<0 Then Writeln ('Коренів немає! ')
Else
Begin
X1:=(-B+SQRT(D))/2/A;
X2:=(-B-SQRT(D))/2/A;
Writeln ('X1=', X1:8:3, ' X2=',X2:8:3)
End
End.

вторник, 10 апреля 2012 г.

оператори розгалуження

Задача. Скласти програму, яка, якщо введене число від'ємне, змінює його на протилежне

 Program Chisla;
Var
  x : integer;Begin
  writeln('Введіть число '); {вводимо ціле число}
  readln(x);
  if x<0
    then
      x:=-x;
  writeln (x);
  readln;
End.



завдання:

Трикутник
існує тільки тоді, коли сума будь-яких двох його сторін більше третьою.

Дано: а, б, в - сторони передбачуваного трикутника.
Потрібно порівняти довжину кожного відрізка з сумою двох інших. Якщо хоча б в одному випадку відрізок виявиться більше суми двох інших, то трикутника з такими сторонами не існує.



var a, b, c: integer;
 
begin
    write (' довжини сторін ');
    readln (a,b,c);
 
    if (a < b+c) and (b < a+c) and (c < a+b) then
        writeln ('трикутник існує')
    else
        writeln ('трикутник не існує');
 
readln
end.

воскресенье, 8 апреля 2012 г.

Вибір. Команда Case.


Арифметичні дії над числами пронумеровані наступним чином: 1 - додавання, 2 - віднімання, 3 - множення, 4 - поділ. Дан номер дії N (ціле число в діапазоні 1-4) і речові числа A і B не дорівнює 0). Виконати над числами вказане дію і вивести результат


var
a,b,o: integer;
begin
 writeln (‘введіть номер дії’);
 readln (o);
  writeln (‘введіть  2 числа’);
  readln (a,b);
    case o
      1: writeln (‘результат=’, a+b);
      2: writeln (‘результат=’, a-b);
      3: writeln (‘результат=’, a*b);
      4: writeln (‘результат’, a/b:5:2);
                      else writeln (‘неправильно’);
                      end;
end.




var
a,b, integer; o:char;
begin
 writeln (‘введіть номер дії’);
 readln (o);
  writeln (‘введіть  2 числа’);
  readln (a,b);
    case o
      '+': writeln (‘результат=’, a+b);
       '-': writeln (‘результат=’, a-b);
       '*': writeln (‘результат=’, a*b);
       '/': writeln (‘результат’, a/b:5:2);
                      else writeln (‘неправильно’);
                      end;
end.