- •Пояснювальна записка
- •Методичні рекомендації студенту при проходженні практики.
- •Тематичний план
- •Календарно-тематичний план
- •Зміст програми навчальної практики з «Основ програмування та алгоритмічних мов»
- •Методичні вказівки та приклади виконання завдань.
- •Варіанти завдань завдання 1.1.
- •Завдання 1.2.
- •Завдання 2.1.
- •Завдання 2.2.
- •1) Команду саsе;
- •2) Команду іf.
- •Завдання 4.1.
- •Завдання 4.2.
- •Завдання 5.1.
- •Завдання 5.2.
- •Завдання 8.1.
- •Завдання 8.2.
- •Завдання 9.
- •Самбір 2014р.
Методичні вказівки та приклади виконання завдань.
Проходження навчальної практики по програмуванні на мові Паскаль студентам необхідно скласти програми розв'язку восьми завдань.
Завдання 1. Передбачає складання та відладку програми реалізації лінійного алгоритму. При складанні програми студенти повинні використати оператори вводу-виводу, вміти правильно записувати вирази з використанням стандартних функцій.
Приклад 1. Скласти програму обчислення виразу:
(*********************************************)
(* Програма реалізації лінійного алгоритму *)
(* Список змінних: *)
(* x,gamma - вхідні, дійсного типу *)
(* s,c,t,l - проміжні, дійсного типу *)
(* y - вихідна, дійсного типу *)
(*********************************************)
program zavd1(input,output);
uses printer;
var x,g,y,s,c,t,l:real;
begin
(*------------- Ввід вхідних даних----------------------- *)
write('x='); readln(x);
write('gamma='); readln(g);
(------------* Обчислення за формулами------------------ *)
s:=sin(g);
c:=cos(g);
t:=sin(g)/cos(g);
l:=ln(abs(2*x))/ln(10);
y:=(exp(2*x+3*c*c)+l)/exp((1/4)*ln(s+abs(t*t+s*s*s)));
(*-------------------- Вивід результату обчислень------------------- *)
writeln(lst,'x=',x:7:3,' g=',g:7:3,' y=',y:12:5);
end.
Завдання 2. Передбачає складання та відладку програми реалізації алгоритму з розгалуженням. При складанні програми студенти повинні використати прості оператори вводу-виводу, умовний оператор if-then-else.
Приклад 2. Скласти програму обчислення виразу:
(***************************************************)
(* Програма реалізації алгоритму з розгалуженням *)
(* Список змінних: *)
(* x,y,z - вхідні, дійсного типу *)
(* a,b - вихідні, дійсного типу *)
(***************************************************)
program zavd2(input,output);
var x,y,z,a,b:real;
begin
(*---------- Ввід вхідних даних ---------------------- *)
write('x='); readln(x);
write('y='); readln(y);
write('z='); readln(z);
(*------------- Реалізація розгалуження та вивід результату ----------------- *)
if x<=z then begin a:=cos(x+3)*cos(x+y)*cos(x+y);
writeln('a=',a:10:5) end
else begin b:=x+cos(z); writeln('b=',b:10:5)
end
end.
Завдання 3. Передбачає складання та відладку програми реалізації простого циклічного алгоритму. Складання програми вимагає від студентів знання оператора циклу for. В завданні вимагається розробити два варіанти програми - з використанням оператора циклу та без нього.
Приклад 3. Скласти програму табуляції функції
для
значень аргумента
з кроком h .
(***************************************************)
(* Програма табуляції функції на інтервалі *)
(* Список змінних: *)
(* a,b,xn,xk,dx - вхідні, дійсного типу *)
(* y - вихідна, дійсного типу *)
(***************************************************)
(* ------------ Варіант програми без оператора циклу ----------------- *)
program zavd3fa(input,output);
label 100;
var a,b,xn,xk,dx,y:real;
begin
readln(a,b);
xn:=60;
xk:=100;
dx:=10;
100: y:=a*sqr(ln(xn))/(b+sqrt(xn));
writeln('xn=',xn:8:1,' y=',y:8:5);
xn:=xn+dx;
if xn<=xk then goto 100;
end.
(* ------------- Варіант програми з оператором циклу----------------- *)
program zavd3b(input,output);
var a,b,xn,xk,dx,y:real;
begin
readln(a,b);
xn:=60;
xk:=100;
dx:=10;
while xn<=xk do
begin
y:=a*sqr(ln(xn))/(b+sqrt(xn));
writeln('xn=',xn:8:1,' y=',y:8:5);
xn:=xn+dx;
end
end.
Завдання 4. Передбачає складання та відладку програми реалізації циклічного алгоритму по обробці одновимірних масивів. Складання програми вимагає знання методики вводу, обробки та виводу одномірних масивів.
(*************************************************)
(* Програма обробки одномірного масиву *)
(* Опис змінних: *)
(* w - вхідний одномірний масив дійсних чисел *)
(* a - вхідна константа *)
(* i - проміжна, цілого типу *)
(* s - вихідна, цілого типу *)
(*************************************************)
program zavd4(input,oitput);
uses printer;
const a=5;
var w:array[1..5] of real; (* опис масиву *)
s,i:integer;
begin
s:=0;
for i:=1 to 5 do
begin
(* ввід елемента масиву *)
readln(w[i]);
(* вивід елемента масиву на друк *)
write(lst,'w[',i:1,']=',w[i]:6:2,' ')
(* підрахунок кількості елементів менших від а *)
if w[i]<a then s:=s+1
end;
(* вивід підрахованої кількості елементів на друк *)
writeln(lst,'кількість елементів, менших від а становить',s:2)
end.
Завдання 5. Передбачає складання та відладку програми реалізації циклічного алгоритму по обробці двомірних масивів. Складання програми вимагає знання методики вводу, обробки та виводу двомірних масивів. Особливу увагу при поясненні завдання слід звернути увагу на наступні моменти:
1) методика вводу двомірного масиву по рядках (по стовбцях);
2) методика організації вкладених циклів при обробці двомірних масивів;
3) методика виводу двомірного масиву по рядках (по стовбцях).
Приклад 5. Дано матрицю дійсних чисел розмірністю
4
5.
Скласти програму, яка б дозволила:
1) знайти максимальний елемент матриці;
2) знайти суми модулів елементів стовбців матриці;
3) знайти максимальну суму елементів.
(*****************************************************)
(* Програма обробки двомірного масиву *)
(* Опис змінних: *)
(* а - вхідний двомірний масив дійсних чисел *)
(* sum - робочий одномірний масив для обчислення *)
(* сум модулів елементів по стовбцях *)
(* max_el,max_sum - вихідні змінні дійсного типу *)
(* i,j - проміжні, цілого типу для організації циклів*) (*****************************************************)
program zavd5(input,output);
uses printer;
var a:array[1..4,1..4] of real;
sum:array [1..4] of real;
max_el,max_sum:real;
i,j:integer;
begin
max_el:=-10e10;
max_sum:=-10e10;
(* Ввід елементів матриці та вивід їх на друк *)
for i:=1 to 4 do begin
for j:=1 to 4 do begin
write('a(',i:1,j:1,')='); readln(a[i,j]);
write(lst,' a(',i:1,j:1,')=',a[i,j]:5:2);
(* Знаходження максимального елемента *)
(* та вивід його на друк *)
if a[i,j]>=max_el then max_el:=a[i,j] end;
writeln(lst); end;
writeln(lst);
writeln(lst,'максимальний елемент = ',max_el:5:2);
writeln(lst);
(* Обчислення сум модулів елементів стовбців матриці *)
(* та вивід цих сум на друк *)
for j:=1 to 4 do begin
sum[j]:=0;
for i:=1 to 4 do sum[j]:=sum[j]+abs(a[i,j]);
writeln(lst,'сума модулiв елементiв,j:1,'стовбця = ',sum[j]:5:2);
end;
(* Знаходження максимальної суми та вивід її на друк *)
for j:=1 to 4 do
if sum[j]>=max_sum then max_sum:=sum[j];
writeln(lst);
writeln(lst,'максимальна сума = ',max_sum:5:2);
end.
Завдання 6 передбачають складання та відладку програм, які використовують функції та процедури мови Паскаль. В завданні 6 вид функції (процедури) пропонується. В завданні 7 вибір функції студенти повинні здійснити самостійно. При поясненні завдання особливу увагу слід звернути на пояснення методики виклику функцій (процедур) та використання функцій, аргументами яких в свою чергу є функції.
Приклад 6.Скласти програму обчислення значення виразу z, використовуючи звернення до функцій.
(*****************************************************)
(* Програма з використанням функцій *)
(* Опис змінних: *)
(* x,p - вхідні одномірні масиви дійсних чисел *)
(* x1,p1 - формальні параметри функцій *)
(* m0 - вхідна змінна дійсного типу *)
(* z - вихідна змінна дійсного типу *)
(* і - робоча змінна для організації циклів *)
(* xser - функція обчислення середнього зваженого *)
(* g - функція обчислення середнього *)
(* квадратичного відхилення *)
(*****************************************************)
program zavd67(input,output);
type masyv=array[1..5] of real;
var x,p:masyv; z,m0:real;
i:integer;
(* Опис функції обчислення середнього зваженого *)
function xser(x1,p1:masyv):real;
var i:integer; xs:real;
begin
xs:=0;
for i:=1 to 5 do xs:=xs+x1[i]*p1[i];
xser:=xs;
end;
(* Опис функції обчислення середнього квадратичного відхилення *)
function g(x1,p1:masyv;xser:real):real;
var i:integer;sd:real;
begin
sd:=0;
for i:=1 to 5 do
sd:=sd+sqr((x1[i]-xser))*p1[i];
g:=sqrt(sd);
end;
(* Закінчення розділу описів, початок програми *)
(* Ввід елементів масивів x,p - фактичних параметрів *)
begin
for i:=1 to 5 do begin
write('x[',i:1,']='); readln(x[i]); end;
for i:=1 to 5 do begin
write('p[',i:1,']='); readln(p[i]);end;
(* Ввід значення параметра m0 *)
m0:=0;
(* Звертання до функцій xser,g *)
z:=(xser(x,p)-m0)/g(x,p,xser(x,p));
(* Вивід результату обчислень *)
writeln('z=',z);
end.
Завдання 7 передбачає складання та відладку програм з використання графіки,а також використовуються функції та процедури мови Паскаль. При поясненні завдання особливу увагу слід звернути на пояснення методики виклику графічних функцій (процедур) .
Приклад7. Нарисувати графік функції y=2sin(2x)+1 на проміжку [0; 2] табулюючи функцію з кроком h=0,1.
program GrafikSin;
uses Crt, Graph;
const a=0; b=2*pi; h=0.1; h1=5; x0=60; y0=240; M=50;
var driver, mode, x1,y1:integer; x,y:real;
function f(x:real):real;
begin
f:=2*sin(2*x)+1
end;
begin
clrscr; driver:= detect; initgraph(driver,mode, ");
setcolor(14); setbcolor(1);
line(20,y0,600,y0); line(x0,440,x0,20);
x:=a; x1:=x0+trunc(M*x);
y:=f(x);y1:=y0-trunc(M*y);
moveto(x1,y1); setcolor(15);
while x<=b do
begin
y:=f(x); y1:=y0-trunc(M*y); lineto(x1,y1);
x1:=x1+h1; x:=x+h
end;
settextstyle(0,0,1);
outtextxy(60,245,'0'); outtextxy(360,245,'6.3');
settextsyle(0,0,2);
outtextxy(200,380,'Графік функції y=2sin2x+1');readln
end.
Завдання 8 передбачає складання та відладку програм по обробці нестандартного типу даних - записів (масивів записів). Студенти повинні володіти методикою вводу та обробки записів та масивів, що складаються з записів, володіти технікою використання оператора with. Cлід звернути увагу на методику формування та виводу на друк вихідних документів табличної структури.
Приклад. Інформація про кожного студента групи містить його прізвище та ініціали, оцінки, отримані ним з чотирьох іспитів та середній бал. Необхідно скласти програму, що виконуватиме такі дії:
1) формування списку студентів групи;
2) обчислення середнього балу кожного студента;
3) вивід на друкуючий пристрій списку студентів,
середній бал котрих перевищує 4.000.
(*****************************************************)
(* Програма обробки масиву записів *)
(* Опис змінних: *)
(* stud - запис, що складається з таких реквізитів*)
(* pip - прізвище студента *)
(* oc1,oc2,oc3,oc4 - оцінки з іспитів *)
(* sb - середній бал *)
(* grupa - масив записів *)
(* і - робоча змінна для організації циклів *)
(* wwid - процедура вводу запису *)
(*****************************************************)
program prog2(input,output);
uses printer;
type stud=record
pip:string[10];
oc1,oc2,oc3,oc4:1..5;
sb:real;
end;
var grupa:array[1..5] of stud;
i:integer;
st:stud;
(* Процедура вводу запису *)
procedure wwid(var w:stud);
begin
write('Прiзвище '); readln(w.pip);
write('оцiнка 1 '); readln(w.oc1);
write('оцiнка 2 '); readln(w.oc2);
write('оцiнка 3 '); readln(w.oc3);
write('оцiнка 4 '); readln(w.oc4);
w.sb:=(w.oc1+w.oc2+w.oc3+w.oc4)/4;
end;
(* Кінець розділу описів, початок програми *)
begin
(* Вивід заголовку таблиці на друк *)
writeln(lst,'===================================================');
writeln(lst,' : Оцiнки отриманi на екзаменi: Середнiй');
writeln(lst,' Прiзвище :----------------------------: ');
writeln(lst,' : 1-му : 2-му : 3-му : 4-му : бал ');
writeln(lst,'====================================================');
(* Ввід списку групи та вивід його на друк *)
for i:=1 to 5 do
begin
wwid(grupa[i]);
st:=grupa[i];
write(lst,st.pip:10,' ':5,st.oc1:1,' ':6,st.oc2:1);
writeln(lst,' ':6,st.oc3:1,' ':6,st.oc4:1,' ':7,st.sb:5:3);
end;
writeln(lst,'===================================================');
writeln(lst);
(* Вивід на друк списку студентів, *)
(* які мають середній бал більший ніж 4.000 *)
writeln(lst,'Список студентiв');
for i:=1 to 5 do
begin
st:=grupa[i];
if st.sb>=4.0 then writeln(lst,st.pip:10,' ':5,st.sb:5:3);
end;
end.
Завдання 9 передбачає складання та відладку програм з використанням файлiв Студенти повинні володіти методикою вводу та обробки записів та масивів, що складаються з записів, володіти технікою використання оператора with. Cлід звернути увагу на методику формування та виводу на друк вихідних документів табличної структури.
Приклад .
Підчас проходження практики студенти оформлюють звіт про проходження практики, який повинен містити таку документацію по кожному завданню:
1) умова завдання;
2) словесний опис алгоритму розв'язування;
3) блок-схему алгоритму;
4) перелік змінних;
5) лістинг програми;
6) роздруківка вихідного результату;
7) перелік системних повідомлень про синтаксичні та семантичні помилки, які зустрілись при відладці програми та методи їх усунення.
Звіт захищається студентами в останній день проходження практики.
