понеділок, 25 лютого 2019 р.

Перехід від лінійного алгоритму до нелінійного алгоритму

Проблемне запитання:
Чи можна нелінійний алгоритм замінювати лінійним алгоритмом?

Приклад 1. Дано два дійсні числа а та b. Реалізувати алгоритм для пошуку найбільшого та найменшого числа.
Аналіз проблеми. Математична модель задачі.
Спосіб числової осі.

Число (а+b)/2 - це середнє арифметичне, воно знаходиться точно між числами а та b на числовій осі.  До речі (а+b)/2 - це число, яке ділить навпіл довжину відрізка АВ, з кінцями у даних точках А(а) та В(b).
Півдовжини відрізка:  0,5АВ=abs(a-b)
Тому max{a;b} = (а+b)/2 + abs(а-b)/2;
min{a; b} = (а+b)/2 - abs(а-b)/2.

********* лінійний алгоритм мовою Pascal********
program LIN1;
var   a, b, max, min: real;
begin
a:=10+random(786);
b:=10+random(796);
max:=(а+b)/2 + abs(а-b)/2;
min:=(а+b)/2 - abs(а-b)/2;
writeln('max=', max, 'min=', min);
end.
*********нелінійний алгоритм Pascal*******
program NOTLIN2;
var   a, b: real;
begin
a:=100+random(786);
b:=10000+random(796);
if (a-b)=0 then  writeln('max=min=a=b', max)
  else
            if  (a-b)>0  then
          writeln(' min=b=', b, 'max=a=', a) 
       else writeln(' min=a=', a, 'max=b', b); 
end.

Приклад 2. Дано натуральне число а. Реалізувати алгоритм знаходження суми усіх натуральних чисел від 1 до а.

Аналіз проблеми:
 Математична модель
1+2 + 3 + 4 +...+ (а-2) + (а-1) + а =
= 1 + а +
+ 2 + (а-1) +
+ 3 + (а-2) +
+..... +
+а/2= (а+1)а/2
********* лінійний алгоритм********
program LIN2;
var   a, s: real;
begin
a:=10+random(786);
s:=(а+1)*a/2;
writeln('s=', s);
end.
********* нелінійний алгоритм********
program NOTLIN2;
var   a, i, s: real;
begin
a:=10+random(786); s:=0;
for i:=1 to a do s:= s+i;
writeln('s=', s);
end.

Приклад 3. Дано натуральне непарне число а. Реалізувати алгоритм знаходження суми усіх непарних чисел від 1 до 2а-1.

Аналіз проблеми:
 Математична модель
1+3 + 5 + 7 +...+ (2а-5) + (2а-3) + 2а-1 =
= 1 + 2а -1 +
+ 3 + (2а-3) +
+ 5 + (2а-5) +
+..... +
+а/2= (2а)*а/2=а*а=а2.
********* лінійний алгоритм********
program LIN3;
var   a, s: real;
begin
a:=111+2*random(786);
s:=а*a;
writeln('s=', s);
end.
********* нелінійний алгоритм********
program NOTLIN3;
var   a, i, s: real;
begin
a:=111+random(786); s:=0;
for i:=1 to a do s:= s+2*i-1;
writeln('s=', s);
end.

Приклад 4. Дано натуральне парне число а. Реалізувати алгоритм знаходження суми усіх парних чисел від 2 до 2а.

Аналіз проблеми:
 Математична модель
2+4 + 6 + 8 +...+ (2а-4) + (2а-2) + 2а =
= 2 + 2а  +
+ 4 + (2а-2) +
+ 6 + (2а-2) +
+..... +
+2а/2= (2а+2)*а/2=2а*(а+1)/2=а(а+1).
********* лінійний алгоритм********
program LIN3;
var   a, s: real;
begin
a:=111+2*random(786);
s:=а*(a+1);
writeln('s=', s);
end.
********* нелінійний алгоритм********
program NOTLIN3;
var   a, i, s: real;
begin
a:=222+2*random(786); s:=0;
for i:=1 to a do s:= s+2*i;
writeln('s=', s);
end.

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

Проте не завжди вдається створити математичну модель для завдання. Тому нелінійні алгоритми використовуються частіше, ніж лінійні.

ПРАКТИЧНА РОБОТА 58.
Алгоритми з вкладеними циклами  
та лінійними масивами

Завдання 1. Реалізувати алгоритм для знаходження суми від’ємних елементів в лінійному масиві, що утворюється з випадкових цілих чисел.
Program POSHUK1;
var a: array [1..20] of integer; 
      s: integer;      
i: integer;
begin        
writeln ('перелік 20 випадкових цілих елементів масиву:');    s:=0;       
for i:=1 to 20 do begin  a[i]:=498-random(999)
writeln (i,  '-ий елемент масиву = ',  a[i]);
if  a[i]<0  then   s:=s+a[i];       
end;   
writeln ( 'Сума від’ємних  чисел  =', s);  
 end.

Завдання 2. Реалізувати алгоритм для знаходження найбільшого спільного дільника(НСД) для  чисел в лінійному масиві, що утворюється з випадкових цілих чисел та знаходження найменшого спільного кратного(НСК) для   чисел в лінійному масиві.
Program POZYTYV2;
var   a,b,c: array [1..6]  of  integer;       
x,y,iinteger;     
function NOD(x, y:integer):integer;    {Функція пошуку найб. НСД}
begin  if x <> then NOD:=NOD(y mod x, x) 
else NOD:=y; 
end;
function NOK(x, y:integer):integer;     {Функція пошуку наймен. НСК}
begin NOK:=(x div NOD(x, y))*y;  
end;
begin   {основна програма}  
writeln ('перелік 6 випадкових цілих чисел масиву:'); 
for i:=to do begin  a[i]:=8*i - 4*random(99);   writeln (i, '-е число  = ', a[i]); end;
b[1]:=NOD(abs(a[1]), abs(a[2]));      
 c[1]:=NOK(abs(a[1]), abs(a[2]));
for i:=to do begin  
b[i+1]:=NOD(b[i], abs(a[i+1]));     {Пошук НСД}
c[i+1]:=NOK(c[i], abs(a[i+1]));   
writeln('***');   
writeln(i, '-ий НСДільник  чисел масиву =', b[i]); 
writeln(i, '-ий НСKратне  чисел масиву =', c[i]); 
writeln('***');  end;   writeln('НСД усіх  чисел =', b[6]);  
writeln('НСК усіх  чисел =', c[6]);   
end.

Завдання 3. Реалізувати алгоритм для знаходження найбільшого числа повторень однакових   чисел в лінійному масиві, що утворюється з  20 випадкових цілих чисел.
Program POVTOR3;
 var a:array[1..20of integer;
         i,j,m,p,n:integer;
begin      
  writeln('перелік 20 ВИПАДКОВИХ чисел в массиві А');
for i:=to 20 do  begin 
a[i]:=1-random(4);    
 writeln (i, '-ий елемент масиву = ', a[i]); 
end;
m:=1; p:=1;        
 for i:=to 20 do begin        
 n:=0;  
         for j:=to 20 do begin
if a[i]=a[j] then inc(n);    
      end;         
 if n>m then begin   
          m:=n; p:=i;         
end;     
  end;
writeln('найповторюване число в масиві:',a[p]);  
writeln('кількість числа: ',a[p], ' =', m ); end.

Завдання 4. Реалізувати алгоритм для знаходження відповіді на питання: чи повторюються числа в  лінійному масиві, що утворюється з  40 випадкових цілих чисел?
Program ALGORUTM4;
var   a: array [1..40of integer;    
  i, j: integer;
begin     
  writeln 'перелік 40 елементів масиву');
      for i:=to 40 do  begin a[i]:=i-random(999); 
writeln (i, '-ий елемент масиву = ', a[i]); end;
     for i:=to 40 do begin           
 for j:=i+to 40 do begin            
   if a[i]=a[j] then begin
writeln ( 'в масиві є однакові елементи= ',a[i], '  зокрема це  ', i, '-ий  та ', j,'-ий елементи');
 halt;
end
end;
end;  
writeln 'усі елементи масиву різні'); 
end.

Завдання для самостійного опрацювання.
Завдання 5. Реалізувати алгоритм для знаходження відповіді на питання: чи є парні числа в  лінійному масиві, що утворюється з  50 випадкових цілих чисел?
Завдання 6. Реалізувати алгоритм для знаходження відповіді на питання: чи є непарні числа в  лінійному масиві, що утворюється з  60 випадкових цілих чисел?
Завдання 7. Реалізувати алгоритм для знаходження відповіді на питання: чи є круглі числа в  лінійному масиві, що утворюється з  50 випадкових цілих чисел?
Завдання 8. Реалізувати алгоритм для знаходження відповіді на питання: чи є нульові числа в  лінійному масиві, що утворюється з  60 випадкових цілих чисел?



Сайти для навчання програмуванню

Code.org – електронне середовища для навчання програмуванню   початківців
Code School  -  Практичні завдання для навчання програмуванню.
Codecacademy – інтерактивне навчання програмуванню.
Stuk.io - Навчання з нуля для майбутніх програмістів.
Udaccityкурси від  Google, Facebook та інших великих компаній.
Platzi курси по дизайну, маркетингу, програмуванню.
Learnableкурси веб-розробці.
Code School  -  Практичні завдання для навчання програмуванню.
Code.orgсередовища навчання програмуванню  для початківців
BasePails - Навчання Рубі та Раілз та іншим веб-технологіям
Treehouse - Розробка на   HTML, CSS, та додатків на ІОS.
One Month – навчання основам створення веб-додатків за місяць.

Dash – створення веб-сайтів.













неділя, 24 лютого 2019 р.

Тест на знання мови програмування Pascal

ТЕСТ 43


Початковий курс
пошукачів ВЛАСТИВОСТЕЙ
алгоритмів. 

1. Який із видів циклу не може повторити команди?

 Цикл з лічильником та кроком +1.
 Цикл з обчисленням та кроком 0.
 цикл з передумовою та кроком +3.
 цикл з післяумовою та кроком -3.

2. Який із видів циклу сумуватиме послідовні натуральні числа від найбільшого числа до найменшого числа?

 Цикл з лічильником та кроком -2.
 Цикл з лічильником та кроком +1.
 Цикл з лічильником та кроком -1.
 Цикл з лічильником та кроком +2.

3. Який із видів циклу помноже послідовні лише парні числа від найбільшого парного числа до найменшого парного числа?

Цикл з лічильником та кроком -2.
Цикл з лічильником та кроком -1.
Цикл з лічильником та кроком +1.
Цикл з лічильником та кроком +2.

4. Який із фрагментів циклу в Pascal помноже послідовні натуральні числа від 1 до 10,і помноже у порядку від найменшого до найбільшого числа?


n:=1;
for k:=-1 to 10 do n:=n*k;

n:=1;
for k:=11 downto 1 do n:=n*k;

n:=1;
for k:=10 downto 0 do n:=n*k;

n:=1;
for k:=1 to 10 do n:=n*k;

5. Вказати найточніше означення команди "if" в Pascal.

 if - це команда початку розгалуження в алгоритмі.
 if - це команда закінчення вибору випадкових цифр.
 if - це команда виведення в алгоритмі.
 if - це зчитування в алгоритмі.

6. Який із фрагментів розгалуження в Pascal записано вірно?


if a<=>b then d:= a-2*b
else d:=2*b-a;
________

if a<>b then d:= a-b
else d:=b-a;
________

if a<>=b to d:= 2a+3b
else d:=3b-2a;
________

if a<>b then d:= a*b;
else d:=b/a;
________

7. Які із фрагментів вкладених циклів в Pascal записано вірно?


n:=7;
i:=7;
for k:=n downto 1 do
for j:=1 to i do a:=j*k;
________

n:=5;
i:=7;
for k:=n to 1 do
for j:=1 to i+1 do a:=j+k;
________

n:=2;
i:=7;
for k:=n-3 do 1 to
for j:=1 do i+1 to a:=j-k;
________

n:=4;
i:=7;
if k:=n-4 to 1 do
if j:=1 to i+2 do a:=n/k;
________

8. Вказати правильний циклічний алгоритм мови Pascal для обчислення виразу 1+2+...+19+20:


program zykll;
var n, k: integer;
begin
k:=0;
for n:=0 do 19 do k:=k+n;
writeln('1+2+...+19+20=',n);
end.
________

program zykl2;
var n, k: integer;
begin
k:=0;
for n:=19 downto 0 do k:=k+n;
writeln('1+2+...+19+20=',n);
end.
________

program zykl3;
var n, k: integer;
begin
k:=0;
for n:=1 to 20 do k:=k+n;
writeln('1+2+...+19+20=',k);
end.
________

program zykl4;
var n, k: integer;
begin
k:=0;
for n:=1 do 20 to k:=k+n;
writeln('1+2+...+19+20=',k);
end.
________

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


repeat
d:=d +(a div 100)+(a mod 100) div 10 +(a mod 10);
writeln('сума цифр для усіх непарних чисел від 1 до ', a,' =', d);
a:=a-2;
writeln('a=', a);
until a<0;
________

while a>0 do
begin
d:=d+(a div 10)+(a mod 10);
a:=a-1;
end;
________

for i:=1 to 10 do
begin
a[i]:=1001+2*random(4499);
writeln(i, '-ий елемент =', a[i]);
s:=s+a[i];
end;
________


min:=A[1];
max:= B[1];
for i:=2 to n do if A[i]for i:=2 to k do if B[i]>max then max:=B[i];
writeln ('мінімум із масиву A =' , min);
writeln ('максимум із масиву В =' , max);
________

10. Вказати правильний алгоритм, що записує випадкове двоцифрове число ab у вигляді a*10+b.


program Zad1;
var a:integer;
begin
a:=10+random(89);
writeln('a=',a,'=',(a div 10),'*10',' + ',a div 10);
end.
________

program Zad2;
var a:integer;
begin
a:=10+random(89);
writeln('a=',a,'=',(a mod 10),'*10',' + ',a mod 10);
end.
________


program Zad3;
var a:integer;
begin
a:=10+random(89);
writeln('a=',a,'=',(a div 10),'*10',' + ',a div 10);
end.
________


program Zad4;
var a:integer;
begin
a:=10+random(89);
writeln('a=',a,'=',(a div 10),'*10',' + ',a mod 10);
end.
________

11. Вказати найточніше оголошення динамічного лінійного масиву в алгоритмі мовою Pascal.


program Massiv_3A_Massiv_2B;
const n=1; m=5;
type Massiv = array [n..m] of integer;
var a, b,s: Massiv;
i,t: integer;
begin
for i:=n to m do
begin
a[i]:=99+9*random(100);
writeln(' a[', i, ']=', a[i]);
b[i]:=-2*random(100);
writeln(' b[', i, ']=', b[i]);
end;
________

program ZadachaMIN_MAX;
const n=10; k=14;
var A, B : array [k..n] of integer;
min, max: integer; i: integer;
begin
writeln ('Випадкові елементи масиву - це 7-цифрові числа ');
for i:=1 to n do
begin
A[i]:=99999+9*random(1111111);
writeln (i, 'A-eл. = ', A[i]);
end;
for i:=1 to k do
begin
B[i]:=-77777-7*random(1111111);
writeln (i, 'B-eл. = ', B[i]);
end;
________

program ZycL4;
var a,b,d,n,i: integer;
begin
a:=1000+2*random(4499);
b:=a;
n:= a div 2;
d:=0;
________

Program Masiv1;
var a: array[1..10] of integer;
i,s: integer;
begin
writeln( 'Задаються випадкові цілі 10 елементів масиву');
________

12. Вказати лінійний алгоритм мовою програмування Pascal.


Program ZicL2; {назва алгоритму Цикл2}
var a, b, d: integer; {змінні величини a, b, d в алгоритмі будуть цілими числами}
begin
a:=10+random(89);
b:=a;
d:=0; {присвоєння випадкого двоцифрового числа}
writeln('початкове число в циклі з передумовою =', a); {друк початкового числа}
while a>0 do begin d:=d+(a div 10)+(a mod 10); a:=a-1; end; {Цикл з умовою}
writeln('кінцеве число в циклі з передумовою =', a); {друк кінцевого числа}
writeln('сума цифр для усіх цілих чисел від 1 до ', b, ' = ', d); {друк суми цифр}
writeln('**************************');
end.

________

program ZicL3; {назва алгоритму Цикл3}
var a,b,d: integer; {змінні величини a, b, d в алгоритмі будуть цілими числами}
begin
a:=101+2*random(444);
b:=a;
d:=0; {пошук випадкового непарного числа}
writeln('початкове непарне число в циклі з післяумовою =', a);
repeat {початок циклу з післяумовою для сумування цифр усіх непарних чисел}
d:=d +(a div 100)+(a mod 100) div 10 +(a mod 10); {тіло циклу, - сумує цифри}
writeln('сума цифр для усіх непарних чисел від 1 до ', a,' =', d);
a:=a-2;
writeln('a=', a); {друк числа-лічильника в циклі з післяумовою}
until a<0; {кінець циклу з післяумовою для сумування цифр усіх непарних чисел}
writeln('кінцеве число в циклі з післяумовою =', a);
writeln('сума цифр для усіх непарних чисел від 1 до ', b,' =', d); {друк суми цифр}
writeln('*********');
writeln('************');
end.

________


program ZycL4; {назва алгоритму Цикл4}
var a,b,d,n,i: integer; {змінні величини a, b, d в алгоритмі будуть цілими числами}
begin
a:=1000+2*random(4499); b:=a;
n:= a div 2;
d:=0; {пошук парного числа}
writeln('початкове число в циклі з лічильником =', a);
for i:=1 to n do begin {початок циклу з лічильником для сумування цифр чисел}
d:=d+(a div 1000)+(a mod 1000) div 100 +(a mod 100) div 10+(a mod 10); {тіло циклу}
writeln(''сума цифр для усіх парних чисел від 1 до ', a,' =', d); {тіло циклу}
a:=a-2; writeln(' лічильник циклу i =', i);
end; {кінець циклу з лічильником }
writeln('кінцеве число в циклі з лічильником =', a);
writeln('сума цифр для усіх парних чисел від 1 до ', b,' =', d); {друк суми цифр}
writeln('********');
end.
________


program SuperposiziaNumer; {алгоритм обміну числовими значеннями двох змінних}
var {оголошується опис змінних величин, які використовує алгоритм}
x,y: integer; {оголошуються дві цілі змінні у даному алгоритмі}
begin {оголошується початок алгоритмічних дій}
write('x='); {на екрані запит на введення з клавіатури цілого числа: х}
readln(x); {зчитування числового значення і внесення його в змінну х}
write('y='); { на екрані запит на введення з клавіатури цілого числа: у}
readln(y); {зчитування числового значення і внесення його в змінну у}
write('початкове значення x='); writeln(x,' '); { перевірка початкового: х}
write('початкове значення y='); write(y,' '); { перевірка початкового: у}
x:=x+y;
y:=x-y;
x:=x-y; {взаємний обмін числами за допомогою арифметичних дій.}
writeln; {поставити курсор на екрані з нового рядка}
write('кінцеве значення x='); {виведення на екран повідомлення}
writeln(x,' '); {виведення на екрані числового значення змінної х}
write('кінцеве значення y='); {виведення на екран повідомлення}
write(y,' '); {виведення на екрані значення значення змінної у}
writeln; {поставити курсор на екрані з нового рядка}
end. {закінчення дій алгоритму}
________
Завдання для самостійного опрацювання



Сайти для навчання програмуванню

Code.orgсередовища навчання програмуванню  для початківців
Code School  -  Практичні завдання для навчання програмуванню.
Codecacademy – інтерактивне навчання програмуванню.
Stuk.io - Навчання з нуля для майбутніх програмістів.
Udaccityкурси від  Google, Facebook та інших великих компаній.
Platzi курси по дизайну, маркетингу, програмуванню.
Learnableкурси веб-розробці.
Code School  -  Практичні завдання для навчання програмуванню.
Code.orgсередовища навчання програмуванню  для початківців
BasePails - Навчання Рубі та Раілз та іншим веб-технологіям
Treehouse - Розробка на   HTML, CSS, та додатків на ІОS.
One Month – навчання основам створення веб-додатків за місяць.

Dash – створення веб-сайтів.

Вивчаємо мови програмування

субота, 23 лютого 2019 р.

Програмування циклічних алгоритмів


Теоретичний матеріал:
 https://inf8klas.blogspot.com/2018/03/a-pascal.html

Практична робота 003.  
Програмування  циклічних алгоритмів мовою Pascal.

Завдання 1. Реалізувати цикл з предумовою на Pascal, що знаходить суму усіх цифр, з яких складаються усі цілі числа від 1до випадкового цілого двоцифрового числа n.  
Алгоритм на Pascal( на основі циклу з передумовою):
Program  ZicL2;                    {назва алгоритму Цикл2}
var    a, b, d: integer;      {змінні величини a, b, d  в алгоритмі будуть цілими числами}
begin  
a:=10+random(89);   {присвоєння випадкового двоцифрового числа}
b:=a;  
d:=0;   
writeln('початкове число в циклі з передумовою =', a);    {друк  початкового числа}
while a>0 do    {початок циклу з передумовою}
  begin     
     d:=d+(a div 10)+(a mod 10);
     a:=a-1;    
end;                {кінець циклу з передумовою}
writeln('кінцеве число в циклі з передумовою =', a);        {друк  кінцевого числа}
writeln('сума цифр для усіх цілих чисел від 1 до ', b, '  = ',  d);   {друк  суми цифр}
writeln('**************************');  
end.             {кінець алгоритму}
Протестувати цей алгоритм для:  1) 2-цифрових парних  чисел; 2) 2-цифрових непарних чисел;  3) 2-цифрових випадкових чисел, що діляться націло на 6.

Завдання 2. Реалізувати цикл з післяумовою на Pascal, що знаходить суму усіх цифр, з яких складаються усі непарні  числа від 1до випадкового цілого 3-цифрового числа n.  
Алгоритм на Pascal( на основі циклу з післяумовою):
program ZicL3;               {назва алгоритму Цикл3}
var a,b,d: integer;       {змінні величини a, b, d  в алгоритмі будуть цілими числами}
begin   a:=101+2*random(444);  b:=a;  d:=0; {пошук  випадкового непарного числа}     
writeln('початкове непарне число в циклі з післяумовою =', a);
repeat    {початок циклу  з післяумовою для сумування  цифр усіх непарних чисел}
   d:=d +(a div 100)+(a mod 100) div 10 +(a mod 10);  {тіло циклу,  -  сумує  цифри}
   writeln('сума цифр для усіх непарних чисел від 1 до ', a,'  =', d);     a:=a-2;
   writeln('a=', a);                     {друк  числа-лічильника  в циклі з післяумовою}
until a<0;   {кінець циклу  з післяумовою для сумування  цифр усіх непарних чисел}
  writeln('кінцеве число в циклі з післяумовою =', a);
writeln('сума цифр для усіх непарних чисел від 1 до ', b,'  =', d);  {друк  суми цифр}
writeln('*********'); writeln('************'); end.
Протестувати цей алгоритм для випадку:  1) 3-цифрових парних  чисел; 2) 3-цифрових цілих чисел;  3) 3-цифрових випадкових чисел, що діляться націло на 6.

Завдання 3. Реалізувати цикл з лічильником на Pascal, що знаходить суму усіх цифр, з яких складаються усі парні  числа від 1до випадкового цілого 4-цифрового числа n.  
Алгоритм на Pascal( на основі циклу з лічильником):
program ZycL4;                    {назва алгоритму Цикл4} 
var a,b,d,n,i: integer;      {змінні величини a, b, d  в алгоритмі будуть цілими числами}
begin     a:=1000+2*random(4499); b:=a;   n:= a div 2;   d:=0;   {пошук  парного числа}     
writeln('початкове число в циклі з лічильником =', a); 
  for i:=1 to n do   {початок циклу  з лічильником для сумування  цифр числа}
 begin    
d:=d+(a div 1000)+(a mod 1000)div 100 +(a mod 100)div 10+(a mod 10); 
{тіло циклу}
writeln(''сума цифр для усіх парних чисел від 1 до ', a,'  =', d);   
{тіло циклу}
a:=a-2;   writeln(' лічильник циклу i =', i); 
   end;  {кінець циклу  з лічильником }
writeln('кінцеве число в циклі з лічильником =', a);  
writeln('сума цифр для усіх парних чисел від 1 до ', b,'  =', d);  {друк  суми цифр}
writeln('********'); writeln('**************');  
end.
Протестувати цей алгоритм для випадку:  1) 4-цифрових непарних  чисел; 2) 4-цифрових цілих чисел;  3) 4-цифрових випадкових чисел, що діляться націло на 6.




***************************************



Практична робота 004.  
Програмування  циклів мовою Pascal на лінійних масивах.

Завдання 1. Реалізувати цикл з лічильником на Pascal, що знаходить суму усіх
10 елементів масиву (або рядка чисел), при чому елементи масиву являються випадковими 4-цифровими числами цілими.  
Алгоритм на Pascal( на основі циклу з лічильником):
Program   Masiv1;    {назва алгоритму Масив2}
var a: array[1..10]  of  integer; {змінна величина  масив  а[1..10]  з цілими числами}
 i,s: integer;      {змінні величини i, s  в алгоритмі будуть цілими числами}
begin     
  writeln( 'Задаються випадкові цілі  10 елементів масиву');  
    s:=0;
 for i:=1 to 10 do 
begin   
    a[i]:=1001+2*random(4499); 
     writeln(i, '-ий елемент  =', a[i]);  s:=s+a[i]; 
  end; 
     writeln( 'Сума усіх 10 елементів =', s); writeln( '*******'); end.

Завдання 2. Реалізувати цикл з післяумовою на Pascal, що знаходить суму усіх
10 елементів масиву (або рядка чисел),при чому елементи масиву являються випадковими 4-цифровими парними числами, що діляться на 3.  
Алгоритм на Pascal( на основі циклу з післяумовою):
Program Masiv2;    const  m=6;     var  a: array[1..m]  of  integer;       i,s: integer;
begin    writeln( 'Задаються  ',m,' елементів масиву: ');    s:=0; i:=1;
     repeat  { початок циклу з післяумовою}     a[i]:=996+6*random(1500);    writeln(i, '-ий елемент =', a[i]);   s:=s+a[i]; i:=i+1; until i=m+1; { кінець циклу з післяумовою}
   writeln( ' Cума усіх ',m,' елементів =', s);    writeln( '***********');     end.
Завдання 3. Реалізувати усі три види цикл ів (з лічильником, з післяумовою, з передумовою) на Pascal, що знаходить суму усіх елементів масиву 3А+2В (або рядка чисел),при чому елементи масиву А - це випадкові 3-цифрові  числа, що діляться на 9, а елементи масиву В – це від’ємні парні числа менше 100.
Алгоритм на Pascal( на основі циклів з лічильником, з післяумовою, з передумовою ):
  program Massiv_3A_Massiv_2B;
const n=1; m=5;    type Massiv = array [n..m] of  integer;
   var  a, b,s: Massiv;   i,t: integer;   {оголошується динамічні масиви в алгоритмі }
begin  { початок циклу з лічильником} 
for i:=n to m do 
begin   
a[i]:=99+9*random(100);  
writeln(' a[', i, ']=', a[i]); 
 b[i]:=-2*random(100);   
writeln(' b[', i, ']=', b[i]); 
end; { кінець циклу з лічильником}  
i:=1;  { початок циклу з післяумовою} 
 repeat     
 s[i]:=3*a[i]+2*b[i];
  writeln(' s[', i, ']=', s[i]);
     i:=1+i;     
until  i=m+1;  { кінець  циклу з післяумовою} 
   i:=1; 
t:=0;    { початок  циклу з передумовою} 
  while  i<m do 
begin
 t:=t+s[i];
 i:=i+1;
 end;  { кінець  циклу з передумовою}
   writeln('сума усіх елементів масиву 3А+2В=', t);  
end.

Завдання 4. Реалізувати  цикли (з лічильником) на Pascal, що, знаходять найбільший елемент із масиву B[1..14] та найменший елемент із масиву: А [1..10], при чому елементи масиву А - це випадкові 7-цифрові  числа, що діляться на 9, а елементи масиву В – це від’ємні парні випадкові числа, що діляться на 7,і менше 1000000.
program ZadachaMIN_MAX;
  const
     n=10; 
      k=14; 
 var 
     A, B : array [1..n] of integer;    
    min,  max: integer;   
     i: integer;
begin     
writeln ('Випадкові елементи масиву - це 4-цифрові числа ');
 for i:=1 to n do
    begin  
      A[i]:=99999+9*random(1111111); 
      writeln (i, 'A-eл. = ', A[i]); 
   end;
  for i:=1 to k do
     begin  
       B[i]:=-77777-7*random(1111111);   
       writeln (i, 'B-eл. = ', B[i]); 
     end;
min:=A[1];  
max:= B[1];
 for i:=2 to n do   
     if  A[i]<min  then  min:=A[i];  {в цикл  вкладена команда   галуження}
 for i:=2 to k do
    if  B[i]>max  then  max:=B[i]; {в цикл  вкладена команда   галуження}
 writeln ('мінімум із масиву A =' , min); 
writeln ('максимум із масиву В =' , max); 
 end.


Сайти для навчання програмуванню

Code.orgсередовища навчання програмуванню  для початківців
Code School  -  Практичні завдання для навчання програмуванню.
Codecacademy – інтерактивне навчання програмуванню.
Stuk.io - Навчання з нуля для майбутніх програмістів.
Udaccityкурси від  Google, Facebook та інших великих компаній.
Platzi курси по дизайну, маркетингу, програмуванню.
Learnableкурси веб-розробці.
Code School  -  Практичні завдання для навчання програмуванню.
Code.orgсередовища навчання програмуванню  для початківців
BasePails - Навчання Рубі та Раілз та іншим веб-технологіям
Treehouse - Розробка на   HTML, CSS, та додатків на ІОS.
One Month – навчання основам створення веб-додатків за місяць.

Dash – створення веб-сайтів.