пʼятниця, 29 вересня 2017 р.

Двовимірні масиви

Двовимірні масиви

Двовимірний масив (матриця) – це вектор векторів, тобто кожен елемент вектора є вектором. Всі елементи матриці є одного типу.

Розмірність матриці 3´4 означає, що матриця містить 3 рядки і 4 стовпці.

Ім'я одержує вся матриця, наприклад А. Елементи матриці описують двома індексами. Елемент A[i,j]  міститься на перетині  i-рядка і  j-стовпця, тобто перший індекс визначає рядок, а другий стовпець. (Наприклад, елемент A[2, 4j] міститься на перетині 2-ого рядка і 4-ого стовпця.)
Елементи, для яких i=j, називаються діагональними елементами матриці.

Опис матриці з дійсними елементами, яка містить 4 рядки та 7 стовпців:
I спосіб: var А : array [1 . . 4, 1 . . 7] of real;
II спосіб: type mas= array [1 . . 4, 1 . . 7] of real;
                var А:mas;

Література : Руденко, Речич, Потієнко “Інформатика. 9 клас” ст. 184-186.

Задача

Ввести матрицю розмірністю 5´7 з цілими елементами, знайти суму елементів матриці, всі додатні елементи матриці замінити на 1 і вивести змінену матрицю.

Program pr2;
var А : array [1 . . 4, 1 . . 7] of real;
       I,j:integer; s:real;
Begin

for i:=1 to 4 do
  for j:=1 to 7 do
     begin
         read (a[i,j]);
         s:=s+ a[i,j];
    end;
   write(s);

for i:=1 to 4 do
  for j:=1 to 7 do
      if a[i,j]>0 then a[i,j]:=1;

for i:=1 to 4 do
  begin
       for j:=1 to 7 do   write (a[i,j]);
       writeln;
  end
end.

Д/з №1
1. Ввести матрицю розмірністю 4´3 з цілими елементами, знайти суму і кількість всіх додатних елементів матриці.
2. Знайти суму та кількість елементів матриці А розміру n´m, які належать проміжку [c,d].
3. Ввести матрицю розмірністю 4´3 з цілими елементами, знайти максимальний елемент матриці.

Д/з №2
1.    Ввести матрицю A розмірністю n´m з дійсними елементами. Всі додатні елементи замінити на максимальний елемент цієї матриці.
2.    Ввести матрицю розмірністю n´m з цілими елементами. Просумувати всі додатні елементи матриці в кожному рядку окремо. Вивести у вигляді: номер рядка - сума.
3.    Ввести матрицю А розмірністю 4´7 з цілими елементами.  Порахувати кількість рядків, в яких всі елементи від'ємні.


вівторок, 12 вересня 2017 р.

Одновимірні масиви

Одновимірні масиви

         Масив — це структурований тип даних, який складається з фіксованого числа елементів, що мають однаковий  тип.

Загальний вигляд опису змінних типу масив можна представити у вигляді:
Var <змінна>: array [<тип індексів >] of <базовий тип >.

Приклад:  var V: array [1..20] of Real;   -масив містить 20 дійсних елементів.
Доступ до елементів масиву V здійснюється через їхні індекси: v[1], v[2], v[5].

Розмірність пам’яті, яка виділяється для представлення масиву, залежить від кількості та типу його елементів. Всі елементи масиву розміщуються в оперативній пам’яті суцільно один за одним.

Приклад: Ввести масив з n дійсних чисел (наприклад, n=10). Знайти суму додатніх елементів масиву. Всі від’ємні елементи масиву замінити на 1. Вивести новоутворений масив.
Program  vector;
Const n=10;
Var  a: array [1..n] of real; i: integer, S:real;
begin
for i:=1 to n do
    readln (a[i]);

s:=0;
for i:=1 to n do
     if  a[i]>0 then s:=s+ a[i];
write(s);

for i:=1 to n do
     if  a[i]<0 then  a[i]:=1;

for i:=1 to n do
     writeln(a[i]);

{Деякі оператори циклу можна об’єднати}
end.


Д/з: 1
1.     Ввести масив з 10 дійсних елементів, знайти мінімальний елемент масиву та його індекс.
2.     Ввести масив з n цілих елементів, знайти кількість елементів рівних числу k.
3.     Ввести масив з n дійсних елементів, всі елементи, що належать проміжку [-10;5] замінити на 1. Вивести новоутворений вектор.



Д/з: 2
1.     Поміняти місцями максимальний і мінімальний елементи вектора.
2.     Ввести масив з n дійсних елементів, якщо всі елементи вектора додатні, то обчислити суму квадратів елементів вектора, інакше максимальний елемент вектора.
3.     Сформувати вектор, елементами якого є числа Фібоначчі: 1,1,2,3,5,8,13,… (кожне наступне є сумою двох попередніх)



пʼятниця, 8 вересня 2017 р.

Цикли

Цикли

У мові Pascal розрізняють три оператори циклу:
              1) з передумовою;
              2) з післяумовою;
              3) з параметром.
У більшості задач потрібно здійснювати багаторазове виконання однієї дії. Частина коду, що багаторазово повторюється, називається циклом.
В циклах відбувається перевірка деякої умови і в залежності від результату цієї перевірки відбувається або вихід з циклу, або повторення виконання тіла циклу. Якщо перевірка умови відбувається перед виконанням блоку операторів, то такий цикл називається циклом з передумовою (цикл "while"), а якщо перевірка проводиться після виконання тіла циклу, то це цикл з післяумовою (цикл "repeat").
Причому тіло циклу з післяумовою завжди виконується хоча б один раз, а тіло циклу з передумовою може жодного разу не виконатися.
1.       Цикл з передумовою    While <логічний вираз> do <оператор>;
Оператор після do буде виконуватися доки логічний вираз приймає істинне значення (True). Його істинність перевіряється щоразу перед черговим повторенням оператора циклу, який буде виконуватися доти, поки логічне вираз істинний. Як тільки логічний вираз приймає значення неправда (False), здійснюється перехід до оператора, наступного за while.
Істинність виразу перевіряється до виконання оператора, тому якщо логічний вираз із самого початку буде мати значення неправда (False), то оператор не виконається жодного разу. Варто пам'ятати, що після ключового слова do дозволяється використовувати тільки один оператор. Якщо потрібно виконати кілька операторів, то використовується складений оператор (begin ….. end;).
Приклад:
 X:=10;
While x>0 do x:=x-1;

            2.   Оператор циклу з післяумовою відрізняється від попередньою тим, що:
1)умова перевіряється після одного виконання операторів тіла циклу (таким чином гарантується хоча б одне виконання тіла циклу);
2) критерій припинення циклу полягає в тому, що значення логічного виразу приймає значення істинне; а якщо значення хибне, то даний цикл повторюється. Тіло циклу повторюється до тих пір, поки умова не стане істинна.
            Repeat
                        <серія операторів>
            Until   <логічний вираз>;
Приклад:
 X:=10;
Repeat   x:=x-1; write(‘x=’,x) until x=0;

3. Оператор циклу з параметром використовується в тих випадках, коли число повторень циклу може бути визначене перед початком циклу. Крім цього цикли з параметром дозволяють задавати автоматично зміну значень деякої змінної і використовувати це значення в тілі циклу.
For <змінна>:=<початкове значення> to <кінцеве значення> do <оператор>;
For <змінна>:=<кінцеве значення> downto <початкове значення> do <оператор >;
Діапазон задає зміну значень змінної і кількість повторень тіла циклу. Діапазон–це відрізок з одного із впорядкованих типів. Якщо між виразами стоїть службове слово (to), то значення змінної буде зростати в процесі роботи; при (downto) – спадати. <змінну> називаються лічильником або параметром циклу.
Приклад:
For x:=10 downto 1 do  write(‘x=’,x);
При використанні даного оператора слід пам’ятати:
1)      параметр циклу повинен мати впорядкований тип;
2)      початкове і кінцеве значення діапазону повинні мати такий тип, як і параметр циклу ;
3)  після закінчення циклу значення параметру циклу рівне кінцевому виразу діапазону.



Приклади використання циклів
Приклад 1. Обчислити суму
WHILE
REPEAT
FOR
Фрагмент програми обчислення суми:
i:=1;S:=0;
while i<=10 do
  begin
    S:=S+i;
    i:=i+1;
  end;


i:=1;S:=0;
repeat
    S:=S+i;
    i:=i+1;
until i>10;



S:=0;
For i:=1 to 10 do
  S:=S+i;


Приклад 2.  Протабулювати функцію y=sin x, де х є [0,2П] з кроком П/2.

x:=0;
while x<=2*pi do
  begin
    y:=sin(x);
    writeln(y);
    x:=x+pi/2;
  end;
x:=0;
repeat
    y:=sin(x);
    writeln(y);
    x:=x+pi/2;
until x>2*pi


Приклад 3. Ввести 8 цілих чисел і знайти їх суму.

s:=0;
i:=1;
while i<=8 do
  begin
    read(a);
    s:= s+a;
    i := i+1;
  end;
   s:=0;
 i:=1;
 repeat
    read(a);
    s:= s+a;
    i := i+1;
 until i>8;

s:=0;
for i:=1 to 8 do 
  begin
    read(a);
    s:= s+a;
  end;


Д.з.  Виконати задачі трьома операторами циклу.

1. Ввести 10 дійсних чисел. Знайти суму і кількість тих, що належать проміжку [-10,10].
2. Ввести 8 цілих чисел. Знайти максимальне число.



четвер, 27 квітня 2017 р.

Тема 4. Цикли

Цикли

У мові Pascal розрізняють три оператори циклу:
              1) з передумовою;
              2) з післяумовою;
              3) з параметром.
У більшості задач потрібно здійснювати багаторазове виконання однієї дії. Частина коду, що багаторазово повторюється, називається циклом.
В циклах відбувається перевірка деякої умови і в залежності від результату цієї перевірки відбувається або вихід з циклу, або повторення виконання тіла циклу. Якщо перевірка умови відбувається перед виконанням блоку операторів, то такий цикл називається циклом з передумовою (цикл "while"), а якщо перевірка проводиться після виконання тіла циклу, то це цикл з післяумовою (цикл "repeat").
Причому тіло циклу з післяумовою завжди виконується хоча б один раз, а тіло циклу з передумовою може жодного разу не виконатися.
1.       Цикл з передумовою    While <логічний вираз> do <оператор>;
Оператор після do буде виконуватися доки логічний вираз приймає істинне значення (True). Його істинність перевіряється щоразу перед черговим повторенням оператора циклу, який буде виконуватися доти, поки логічне вираз істинний. Як тільки логічний вираз приймає значення неправда (False), здійснюється перехід до оператора, наступного за while.
Істинність виразу перевіряється до виконання оператора, тому якщо логічний вираз із самого початку буде мати значення неправда (False), то оператор не виконається жодного разу. Варто пам'ятати, що після ключового слова do дозволяється використовувати тільки один оператор. Якщо потрібно виконати кілька операторів, то використовується складений оператор (begin ….. end;).
Приклад:
 X:=10;
While x>0 do x:=x-1;

            2.   Оператор циклу з післяумовою відрізняється від попередньою тим, що:
1)умова перевіряється після одного виконання операторів тіла циклу (таким чином гарантується хоча б одне виконання тіла циклу);
2) критерій припинення циклу полягає в тому, що значення логічного виразу приймає значення істинне; а якщо значення хибне, то даний цикл повторюється. Тіло циклу повторюється до тих пір, поки умова не стане істинна.
            Repeat
                        <серія операторів>
            Until   <логічний вираз>;
Приклад:
 X:=10;
Repeat   x:=x-1; write(‘x=’,x) until x=0;

3. Оператор циклу з параметром використовується в тих випадках, коли число повторень циклу може бути визначене перед початком циклу. Крім цього цикли з параметром дозволяють задавати автоматично зміну значень деякої змінної і використовувати це значення в тілі циклу.
For <змінна>:=<початкове значення> to <кінцеве значення> do <оператор>;
For <змінна>:=<кінцеве значення> downto <початкове значення> do <оператор >;
Діапазон задає зміну значень змінної і кількість повторень тіла циклу. Діапазон–це відрізок з одного із впорядкованих типів. Якщо між виразами стоїть службове слово (to), то значення змінної буде зростати в процесі роботи; при (downto) – спадати. <змінну> називаються лічильником або параметром циклу.
Приклад:
For x:=10 downto 1 do  write(‘x=’,x);
При використанні даного оператора слід пам’ятати:
1)      параметр циклу повинен мати впорядкований тип;
2)      початкове і кінцеве значення діапазону повинні мати такий тип, як і параметр циклу ;
3)  після закінчення циклу значення параметру циклу рівне кінцевому виразу діапазону.



Приклади використання циклів
Приклад 1. Обчислити суму
WHILE
REPEAT
FOR
Фрагмент програми обчислення суми:
i:=1;S:=0;
while i<=10 do
  begin
    S:=S+i;
    i:=i+1;
  end;


i:=1;S:=0;
repeat
    S:=S+i;
    i:=i+1;
until i>10;



S:=0;
For i:=1 to 10 do
  S:=S+i;


Приклад 2.  Протабулювати функцію y=sin x, де х є [0,2П] з кроком П/2.

x:=0;
while x<=2*pi do
  begin
    y:=sin(x);
    writeln(y);
    x:=x+pi/2;
  end;
x:=0;
repeat
    y:=sin(x);
    writeln(y);
    x:=x+pi/2;
until x>2*pi
 


Приклад 3. Ввести 8 цілих чисел і знайти їх суму.

s:=0;
i:=1;
while i<=8 do
  begin
    read(a);
    s:= s+a;
    i := i+1;
  end;
   s:=0;
 i:=1;
 repeat
    read(a);
    s:= s+a;
    i := i+1;
 until i>8;

s:=0;
for i:=1 to 8 do
  begin
    read(a);
    s:= s+a;
  end;




Гуржій, Карташова, Лапінський, Руденко  “Інформатика, 8 клас ”    ст. 273-276

Караванова “Інформатика. Основи алгоритмізації та програмування. 777 задач” ст.80-86

Д/з 1: № 189(1,2,5), 191(2,6), 195(2,3), 197(1,2,4), 201(1,2), 202(2), 203(1), 242, 245  (Караванова “Інформатика”)

Д/з 2 (вкладені цикли): №272(1,2),  273(1,2),  276 (Караванова “Інформатика”), (вивести таблицю множення одноцифрових чисел)