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

Програмування циклів мовою Pascal.


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

Практична робота 003.  
Програмування  циклів мовою Pascal.
Завдання 1. Реалізувати цикл з предумовою на Pascal, що знаходить суму усіх цифр, з яких складаються усі цілі числа від 1до випадкового цілого двоцифрового числа n.  
Алгоритм на Pascal( на основі циклу з передумовою): (4 бали)
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( на основі циклу з післяумовою): (4 бали)
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( на основі циклу з лічильником): (4 бали)
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( на основі циклу з лічильником): (3 бали)
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( на основі циклу з післяумовою): (3 бали)
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. (3 бали)
Алгоритм на 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. (3 бали)
program ZadachaMIN_MAX;  const n=10;  k=14;  var A : array [1..n] of integer;
  B : array [1..k] 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;
 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.


Довідка про масиви

Тема. Структуровані типи даних
Неструктуровані типи даних мають наступне відміну від структурованих: одне ім'я - одне значення. 
Класифікуються структуровані типи даних за такими ознаками:
  • однорідність (елементи однотипні);
  • впорядкованість (між елементами визначено порядок проходження);
  • тип доступу (прямий або послідовний);
  • статична або динамічна.
1. Масиви
Масив - однорідна упорядкована статична структура прямого доступу. Масив можна назвати a сукупністю фіксованого числа однакових компонентів, кожна з яких забезпечується індексом. Для того щоб описати масив, необхідно задати тип компонента і тип індексу. 
var <ідентифікатор>: array [тип індексу] of <тип компонент>;
Найчастіше в якості типу індексу вживається інтервальний тип, може бути і перераховується тип, а також будь-яким скалярним порядковим типом.
Приклад оголошення масиву:
var mass : array [1..10] of real ; {приклад опису одновимірного масиву}
var a : array [1..15, 1..4] of integer ; {приклад опису двовимірного масиву}
Всі завдання можна умовно уявити з декількох основних блоків:
  • блок введення значень елементів масиву (формування елементів масиву випадковим чином);
  • блок виведення вихідного масиву;
  • блок обробки масиву;
  • блок виведення результатів обробки.

Найбільш часто використовувані масиви при вирішенні завдань: одномірні, двовимірні.

Немає коментарів:

Дописати коментар