- •Основи програмування та алгоритмічні мови Програмування мовою borland Pаscаl v7.0 для пеом Процедурне та модульне програмування
- •2.2.1. Теоретичні відомості
- •1. Основи алгоритмізації та програмування
- •1.1. Послідовність рішення задачі з допомогою еом
- •1.2.Середовище turbo Pаscаl
- •1.3.Типи даних turbo Pаscаl
- •1.4.Основні поняття мови програмування turbo Pаscаl
- •1.4.1.Синтаксис мови Програмування turbo Pаscаl
- •1.4.2. Основні дії в мові програмування
- •1.4.3. Умовні оператори
- •1.4.4. Методи організації циклів
- •1.4.5. Оператор вибору
- •1.4.6. Масиви.
- •1.4.7. Робота з рядками, масиви символів
- •1.4.8. Робота з типом string
- •1.4.9. Тестові завдання
- •1.4.10. Варіанти завдань для самостійного розгляду
- •2. Програмування в мові Pascal
- •2.1 Процедурний підхід до програмування
- •2.1.1 Теоретичні відомості
- •2.1.2.Приклад програми
- •2.1.3. Варіанти завдань для лабораторної роботи
- •2.2. Записи з фіксованою частиною
- •2.2.1. Теоретичні відомості
- •2.2.2. Приклад програми
- •2.2.3. Варіанти завдань для лабораторної роботи
- •2.3. Записи з варіантами
- •2.3.1. Теоретичні відомості
- •2.3.2. Приклад програми
- •2.3.3. Варіанти завдань для лабораторної роботи
- •2.4. Типізовані файли
- •2.4.1. Теоретичні відомості
- •2.4.2. Приклад програми
- •2.4.3. Варіанти завдань лабораторної роботи
- •2.5. Текстові файли
- •2.5.1. Теоретичні відомості
- •2.5.2. Приклад програми
- •2.5.3. Варіанти завдань Лабораторної роботи
- •2.6. Множини
- •2.6.1. Теоретичні вказівки
- •2.6.2. Приклад програми
- •Алгоритм
- •2.6.3. Варіанти завдань лабораторної роботи
- •2.7. Черги та стеки
- •27.1. Теоретичні вказівки
- •Алгоритм побудови стека:
- •2.7.2. Приклад програми
- •2.7.3. Варіанти завдань лабораторної роботи
- •2.8. Дерева
- •2.8.1. Теоретичні вказівки
- •2.8.2. Приклад програми
- •2.8.3. Варіанти завдань лабораторної роботи
- •2.9. Графіка
- •2.9.1. Теоретичні вказівки
- •2.9.2 Приклад програми
- •2.9.3 Варіанти завдань
- •2.10.Програмування інтерфейсу користувача. Розробка меню
- •2.10.1. Теоретичні вказівки
- •2.10.2. Приклад програми
- •2.10.3. Варіанти завдань
- •4 Створити меню такої структури: Головне меню
- •3. Основні принципи модульного програмування
- •3.1. Приклад програми
1.4.9. Тестові завдання
Тестові завдання містять короткі пояснення та фрагменти програм. Елементи, яких не вистачає, необхідно дописати. Уважно проаналізуйте текст програм, деякі програми мають заплановані помилки.
Дано ціле число. Зробити число перевертень. Задачу вирішити двома варіантами: тільки з числами і літерними величинами.
Варіант 1.
Var
N:longint;
K,i:integer;
S:real;
A:array[1..10] of integer;
Begin
{блок введення ( приклад: ввели число 123456)}
Writeln('Введіть число');
Read(n);
{цифри числа занесемо в масив А 61 52 43 34 25 16 }
k:=0;
while n>0 do begin
k:=k+1;
A[k]:=n mod 10;
N:=N div 10;
End;
{перетворення числового масиву в число}
S:=0;
For i:= 1 to k do
S:=S+ A[i]*exp((k-i)*ln(10));
{округлення число до цілого}
N:=round(S);
Writeln('число', n);
End.
Варіант 2.
Var
N:longint;
K,i,cod:integer;
D,b:string;
Begin
{блок введення (приклад: ввели число 123456)}
Writeln('Введіть число');
Read(n);
{число переведемо в літерну величину }
STR(n,a);
k:=length(a);
{перевернемо літерну величину}
for i:= 1 to k do
b:= copy (A,i,1);
d:=b+d;
end;
{літерну величину перетворимо в число}
val(d,n,cod);
Writeln('число', n);
End.
Дано ціле число. Видалити числа які повторюються (лишити по одному).
Var
N:longint;
K,i,cod:integer;
D,b:string;
Begin
{блок введення ( приклад: ввели число 123456)}
Writeln('Введіть число');
Read(n);
{число переведемо в літерну величину }
STR(n,a); k:=length(a);
{цифри занесемо в масив}
for i:= 1 to k do A[i]:= copy (A,i,1); end;
{формуємо масив з чисел, що не повторяються}
c[1]:=a[1];l:=1;
for i:= 2 to k do begin
f:=0;
for j:= 1 to l do begin
if c[j]=A[i] then f:=1;
if f=0 then begin L:=L+1; c[L]:=A[i];
{формуємо число з літерного масиву С}
for i:= 1 to l do D:=D+C[I];
val(d,n,cod);
Writeln('число', n);
End.
Дано рядок символів, знайти і видалити найдовше слово з рядка.
Послідовність вирішення задачі:
вводимо рядок, розбиваємо на масив по словах, знаходимо найдовше слово, находимо його позицію, та видаляємо з фрази, фразу виводимо на екран.
Var
Begin
Writeln('Введіть речення ');
Readln(а);
A:=a+' ';
k:=length(a);
{блок занесення слів в масив}
d:=''; L:=0;
for i:= 1 to k do begin
b:= copy (A,i,1);
if b<>' ' then d:=d+b;
if (B= ' ') and (d<>'') then begin l:=l+1; c[l]:=d; d:=''; end;
end;
max:= length(c[1]); i1:=1;
for i:= 2 to l do
if c[i]>max then begin max:=length(c[i]); i1:=i;end;
k:=pos(c[i1]);
delete(А,k,length(c[i1])+1)
Writeln(A);
End.
Дано рядок, розрахувати кількість голосних букв (біля кожного рядка зробіть пояснення дій та об'явіть змінні)
Var
Const c;array[1 ..10] of char =('a','A' )
Begin
Writeln('Введіть речення ');
Readln(а);
k:=length(a);
{блок занесення слів в масив}
L:=0;
for i:= 1 to k do
b:= copy (A,i,1);
for j:= 1 to 10 do
if b=c[j] then L:=L+1;
Writeln(L);
End.
Дата рядок, видалити всі зайві прогалини залишивши по одному.
Var
Begin
Writeln('Введіть речення ');
Readln(а);
k:=length(a);
{блок занесення слів в масив}
f:=0;
while f=0 do begin
k:= pos(a,' ');
if k<>0 then delete(A,k+1,1);
if k=0 then f:=1;
end;
Writeln(A);
End.
Дано послідовність дійсних чисел, видалити максимальне число.
Var
Begin
Writeln('введіть кількість елементів ');
Readln(n);
{змініть фрагмент добавивши вивід номера введеного елемента}
For i:= 1 to n do
Readln(a[i]);
Max:=A[1]; i1:=1;
For i:= 2 to n do
If a[i]>max then begin Max:=A[i]; i1:=i; end;
For i:= i1 to n-1 do
A[i]:=A[i+1];
N:= n-1;
{блок виводу масиву}
end.
Дано послідовність дійсних чисел, на місці останнього числа розмістити середнє арифметичне позитивних чисел.
Var
Begin
{блок вводу масиву }
{Блок розрахунку середнього арифметичного }
S:=0; k:=0;
For i:= 1 to n do
If a[i]>0 then begin S:=S+A[i]; k:=K+1; end;
{розрахувати середнє арифметичне, за умови К<>0 }
{розмістіть елемент та виведіть масив}
end.
Дано послідовність дійсних чисел, знайти максимальну кількість чисел, що повторюються.
Ввести масив, створити масив чисел, з яких складається перший масив, створити масив з кількості повторів чисел, знайти максимальну кількість повторів, вивести число.
Var
Begin
Writeln('Введіть кількість елементів ');
Readln(n);
{змініть фрагмент, додавши вивід номера введеного елемента}
For i:= 1 to n do Readln(a[i]);
c[1]:=a[1];l:=1;
for i:= 2 to ndo begin
f:=0;
for j:= 1 to l do begin
if c[j]=A[i] then f:=1;
if f=0 then begin L:=L+1; c[L]:=A[i]; end;
for i:= 1 to l do begin
k:=0;
for j:= 1 to n do if c[i]=a[j] then k:=k+1;
b[i]:=k;
end;
Max:=b[1]; i1:=1;
For i:= 2 to l do
If b[i]>max then begin Max:=b[i]; i1:=i; end;
{добавте блок виводу}
end.
Дано послідовність дійсних чисел, відсортувати по зростанню першу половину.
{приведено фрагмент сортування масиву по зростанню, дописати всю програму. Програма складається з наступних блоків: ввід масиву , вивід, сортировка, вивід нового масиву}
Сортування масиву з пошуком найменшого елементу
For i:= 1 to n-1 do begin
Min:=b[i]; i1:=i;
For j:= i to n do
If b[j]<min then begin Min:=b[j]; i1:=j; end;
C:=b[i];b[i]:=min;b[i1]:=c;
End;
Сортування масиву перестановкою
For i:= 1 to n-1 do
For j:= 1 to n-1 do
If a[j]>a[j+1] then begin d:=a[j];a[j]:=a[j+1];a[j+1]:=d; end;
Дано довільний двомірний масив, парні рядки розмістити по зростанню, непарні по спаданню.
Var {об'явіть змінні}
Begin
Writeln('n,m');
Readln(n,m);
For i:=1 to n do{зробити ввід з підказкою}
For j:=1 to m do
Readln(a[i,j]);
{Вивід масиву}
For i:=1 to n do{зробити вивід більш наглядним, які проблеми виводу?}
For j:=1 to m do
Writeln(a[i,j]);
I:= 1 ;
While i<=n do begin
For k:= 1 to m-1 do
For j:= 1 to m-1 do
If a[i,j]>a[i,j+1] then begin b:=a[i,j];a[i,j]:=a[i,j+1]; a[i,j+1]:=b; end;
I:=i+2;
End;
I:= 2 ;
While i<=n do begin
For k:= 1 to m-1 do
For j:= 1 to m-1 do
If a[i,j]<a[i,j+1] then begin b:=a[i,j];a[i,j]:=a[i,j+1]; a[i,j+1]:=b; end;
I:=i+2;
End;
{Вивід масиву}
end.
Дано довільний двомірний масив, парні рядки поміняти місцями з непарними.
Розробити програму, додавши необхідні блоки.
Блок перестановки.
I:= 1 ;
While i<=n do begin
For j:= 1 to m do begin
b:=a[i,j];a[i,j]:=a[i+1,j]; a[i+1,j]:=b; end;
I:=i+2;
End;
Дано довільний двомірний масив, видалити рядок і стовпчик де знаходиться максимальний елемент масиву.
Розробити програму, додавши необхідні блоки.
Блок пошуку максимального елемента масиву
Max:=a[1,1]; i1:=1;j1:=1;
For i:= 1 to n do
For j:= 1 to n do
If a[i,j]>max then begin max:=a[i,j];i1:=i;j1:=j; end;
Блок видалення i1 рядка та j1 стовпчика
For j:= 1 to m do A[i1,j]:= a[i1+1,j];
N:=n-1;
For i:= 1 to n do A[i,j1]:= a[i,j1+1];
m:=m-1;
Дано двомірний масив розмірністю N-M, знайти суму рядка і стовпчика на перетинанні яких знаходиться максимальний елемент масиву.
Ввід масиву
Пошук максимального елемента
Блок підрахунку суми
S:=0;
For i:= 1 to n do
S:=S+a[i,j1];
For i:= 1 to m do
S:=S+a[i1,i];
Блок виводу результатів
Дано двомірний масив розмірністю N-N, знайти суму рядка і стовпчика на перетинанні яких знаходиться максимальний елемент другорядної діагоналі.
Ввід масиву
Пошук максимального елемента другорядної діагоналі
Max:=a[1,n]; i1:=1;j1:=n;
For i:= 1 to n do
For j:= 1 to n do
If (a[i,j]>max) and (i+j=n+1) then begin max:=a[i,j];i1:=i;j1:=j; end;
Блок підрахунку суми
S:=0;
For i:= 1 to n do
S:=S+a[i,j1];
For i:= 1 to m do
S:=S+a[i1,i];
Блок виводу результатів
Дано двомірний масив розмірністю N-M, перетворити його в одномірний.
Ввід масиву A
K:=0;
For i:= 1 to n do
For j:= 1 to n do
K:=k+1;
C[k]:=a[i,j];
Вивід масиву С
Дано одномірний масив розмірністю N, знайти суму цифр розташованих після останнього від'ємного .
Ввід масиву, пошук останнього від'ємного, знаходження суми цифр після нього.
Дано стандартний ряд цілих чисел. Призвести введене число до найближчого меншого стандартного.
Const
A:array[1 ..10]of real=(5,10,15,20,25,30,35,40,45,50);
Var
Begin
Readln(n);
I:=1 ;
While a[i]<n do i:=i+1;
N:=a[i-1];
Заповнити двомірний масив N-N по спіралі числами 1.2.3.4.5....
var
a:array[1..5,1..5] of integer;
i,j,k,l,n:integer;
begin
read(n);
l:=0;k:=0;
While l<n*n do begin
K:=k+1;
I:=k;
For j:= k to n-k+1 do begin
l:= l+1;
A[i,j]:=l;
end;
j:=n-k+1;
For i:= k+1 to n-k+1 do begin
l:= l+1;
A[i,j]:=l; end;
I:=n-k+1;
For j:= n-k downto k do begin
l:= l+1;
A[i,j]:=l; end;
j:=k;
For i:= n-k downto k+1 do begin
l:= l+1;
A[i,j]:=l; end;
End;
for i:=1 to n do begin
for j:=1 to n do
write(a[i,j]:5);writeln;
end;
end.
Знайти кількість простих цілих чисел в інтервалі 1-100. {допишіть необхідні оператори}
var
begin
For i:= 1 to 100 do begin
K:=0;
For j:=1 to i do
If i mod j =0 thet k:=k+1;
if k=2 then l:=l+1;
end;
У рядку s замінити всі послідовності символів s1 на послідовність s2. .
PROGRAM Update;
VAR s:string[30];
s1,s2:string[20];
i:integer;
BEGIN
writeln('Введіть початковий текст:');
readln(s);
writeln('Замінити:'); readln(s1);
writeln('на:'); readln(s2);
while pos(s1,s) > 0) do
begin
i := pos(s1,s);
delete(s,i,length(s1));
insert(s2,s,i);
end;
writeln('Новий текст:');
writeln(s)
eND.
21.Введений рядок (слово) перевернути задом-наперед. Тобто, якщо ввести "програма", повинна бути виведена "аммаргорп".
Program End_to_begin;
Var s:string[25];
i,len:integer;
c:char;
BEGIN
writeln('Введіть рядок:');
readln(s);
len := length(s);
for i:=1 to (len div 2) do
begin
c := s[len-i+1];
s[len-i+1] := s[i];
s[i] := c
end;
writeln(s)
END.