Практическое задание №1
Записать выражение на языке Паскаль. Использование стандартных функций. Оператор присваивания.
Цель задания
1. Освоение простейших конструкций языка Паскаль.
2. Получение навыков работы с числами. Использование стандартных функций, арифметических операций для записи математических выражений на языке Паскаль.
3. Получение практических навыков работы над ошибками. Освоение синтаксиса языка Паскаль.
Поставка задачи
Записать математическое выражение на языке Паскаль, и составить программу вычисления значения оператора присваивания. Описать порядок действий, над выражением исходя из приоритетности вычислений стандартных функций и арифметических операции.
1. a = (x+y/(5+x))/|y-sinx+x|+5arctgx 2. b= etgu+1 lnarcsinv | x=47,8 y=-5,5 u=2,3 v=0,8 |
Листинг программы
program zadanie_1;
uses crt;
var
x,y,u,v:real;
a,b:real;
begin
clrscr;
x:=47.8;
y:=-5.5;
u:=2.3;
v:=0.8;
writeln('Протокол работы програмы');
writeln('вычисление значений a и b');
a:=(x+y/(5+sqrt(x)))/abs(y-sin(x)+sqrt(x))+5*arctan(x);
b:=exp(sin(u)/cos(u)+1)*ln(arctan(v/sqrt(1-v*v)));
writeln('a=',a);
writeln('b=',b);
writeln('конец счета');
readln;
readln;
end.
Протокол работы програмы
вычисление значений a и b
a= 3.0959950475E+01
b=-6.7000345276E-02
конец счета
В данной программе были использованы следующие стандартные функции: sin(x), cos(x), abs(x), sqr(x), sqrt(x), arctan(x),exp(x),ln(x).
В частности через функции: arctan(x), sin(x), cos(x), были выражены такие тригонометрические функции как arcos(x), tg(x).
В ходе работы ошибок допущено не было.
Практическое задание №2
Организация ввода/вывода стандартных типов данных
Цель задания
1. Освоение простейшей структуры программы.
2. Получение навыков в организации ввода/вывода значений стандартных типов данных.
3. Получение практических навыков работы в интерактивном (диалоговом) режиме.
Постановка задачи
Организовать ввод/вывод данных заданных типов, предусмотрите выводы с соответствующими заголовками.
целые числа | Вещественные числа | |||||||||
формат | формат | |||||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
N в а р и а н т а | количество | стандартный | ш и р и н а п о л я | количество | Стандартный | ш ирина поля | знаков после . | символов | печать булевской переменной | |
13 | 3 | c | 3 | 6 | C | 5 | 2 | 4 | FALSE |
Листинг программы
program zadanie_2;
uses crt;
const
log=false;
var
k,l,m:integer;
a,b,c,d,e,f:real;
s1,s2,s3,s4:char;
begin
clrscr;
writeln('Введите целые числа K,L,M:');
read(k,l,m);
writeln('':30,'целые числа');
writeln('','стандартная форма','':18,'заданная ширина поля');
writeln('',k,' ',l,' ',m,'':30,'K=',k:3,' L=',l:3,' M=',m:3);
writeln;
writeln('':25,'Введите вещественные числа A,B,C,D,E,F:');
readln(a,b,c,d,e,f);
writeln('':20,'стандартная форма');
writeln('',a,' ',b,' ',c,' ',d,' ',e,' ',f);
writeln('':18,'заданная ширина поля');
writeln('A=',a:5:2,' B=',b:5:2,' C=',c:5:2,' D=',d:5:2,' E=',e:5:2,' F=',f:5:2);
writeln;
writeln('Введите символы S1,S2,S3,S4:');
readln(s1,s2,s3,s4);
writeln('символьные переменные:');
writeln('S1=',s1,' S2=',s2,' S3=',s3,' S4=',s4);
writeln('печать символьных переменных с шириной поля 5:');
writeln(s1:5,s2:5,s3:5,s4:5);
writeln('логическая переменная равна ',log);
readln;
readln;
end.
Протокол работы
Введите целые числа K,L,M:
1
2
3
целые числа
стандартная форма заданная ширина поля
1 2 3 K= 1 L= 2 M= 3
Введите вещественные числа A,B,C,D,E,F:
234 4 5 6 7 8
стандартная форма
2.3400000000E+02 4.0000000000E+00 5.0000000000E+00 6.0000000000E+00 7.00000
00000E+00 8.0000000000E+00
заданная ширина поля
A=234.00 B= 4.00 C= 5.00 D= 6.00 E= 7.00 F= 8.00
Введите символы S1,S2,S3,S4:
qwer
символьные переменные:
S1=q S2=w S3=e S4=r
печать символьных переменных с шириной поля 5:
q w e r
логическая переменная равна FALSE
Разветвляющие структуры. Оператор IF с GO TO, THEN, ELSE
Цель задания
1. Получение навыков в использовании условного оператора при написании программ.
2. Разбор и знакомство с задачами, для решения которых используется условный оператор.
Постановка задачи
Организуйте ввод и вывод пяти целых положительных чисел a, b, c, p, q. Определив остаток К от деления на 9 величины М, равной
вычислите значение функцииy=arctg4,7x/(x2-secx)-xcosx ,при к=0
y=2sinx ,при к=1
y=cos(|ax2+b|-1) ,при к=2
program zadanie_3;
uses crt;
var
a,b,c,p,q,k,m:integer;
x,y:real;
begin
clrscr;
writeln('Протокол работы');
writeln('Введите исходные данные:');
readln(a,b,c,p,q,x);
writeln('a=', a,', b=',b,', c=',c,', p=',p,', q=',q,', x=',x:6:3);
m:=(a+b+c+p) div q;
k:=m mod 9;
if k=0 then
begin
y:=sqrt(arctan(4.7*x)/x*x-sin(x))-exp(cos(x)*cos(x)*ln(x));
writeln('К=0, значение переменной Y равно ',y:6:3);
end;
if k=1 then
begin
y:=exp(sin(x)*ln(2));
writeln('К=1, значение переменной Y равно ',y:6:3);
end;
if k=2 then
begin
y:=cos(abs(a*x*x+b)-1);
writeln('К=2, значение переменной Y равно ',y:6:3);
end;
if k>2 then
writeln('Значение переменной Y неопредено т.к. К>2');
readln;
end.
Протокол работы
Введите исходные данные:
2
3
76
3
76
4
a=2, b=3, c=76, p=3, q=76, x= 4.000
К=1, значение переменной Y равно 0.592
В данной программе было использовано четыре оператора IF в сокращенной форме.
При работе над данной программой ошибок допущено не было.
Решение задач, описываемых алгоритмами циклической структуры с использованием одномерных массивов.
Цель задания
1. Получение практических навыков работы с одномерным массивом.
2. Закрепление навыков в организации ввода/вывода значений одномерного массива.
3. Получение практических навыков работы в интерактивном(диалоговом) режиме.
4. Работа с диагностическими сообщениями транслятора при выполнении программ с одномерным массивом.
Постановка задачи
Организуйте ввод/вывод одномерного массива, предусмотрите вывод соответствующими заголовками.
В массиве {zi}, i=1, 2, ... , 10 есть положительные и отрицательные элементы. Подсчитать количество отрицательных и положительных элементов.
Решить задачу для двух наборов данных:
а. –5,25,17,18,20,-10,-9,-5,12,23;
б.15,20,15,4,-8,-5,-20,-43,-9,-25;
Листинг программы
program zadanie_4;
uses crt;
const
n=10;
var
z: array [1..n] of integer;
a,b,i:integer;
begin
clrscr;
writeln('Введите через пробел 10 чисел');
for i:=1 to n do
begin
readln(z[i]);
if z[i]>0 then
a:=a+1;
if z[i]<0 then
b:=b+1;
end;
clrscr;
writeln('Исходные данные');
for i:=1 to n do
write(z[i]:4);
writeln;
writeln('Количество положительных элементов массива Z[1..n] равно',a:4);
writeln('Количество отрицательных элементов массива Z[1..n] равно',b:4);
readln
end.
Протокол работы
А)Введите через пробел 10 чисел
-5
25
17
18
20
-10
-9
-5
12
23
Исходные данные
-5 25 17 18 20 -10 -9 -5 12 23
Количество положительных элементов массива Z[1..n] равно 6
Количество отрицательных элементов массива Z[1..n] равно 4
Б)Введите через пробел 10 чисел
15
20
15
4
-8
-5
-20
-43
-9
-25
Исходные данные
15 20 15 4 -8 -5 -20 -43 -9 -25
Количество положительных элементов массива Z[1..n] равно 4
Количество отрицательных элементов массива Z[1..n] равно 6
Практическое задание №5
Решение задач, описываемых алгоритмами циклической структуры с использованием двумерных массивов. Регулярные типы.
Цель задания
1. Получение практических навыков работы с двумерным массивом.
2. Закрепление навыков в организации ввода/вывода значений двумерного массива.
3. Получение практических навыков работы в интерактивном (диалоговом) режиме.
4. Работа с диагностическими сообщениями транслятора при выполнении программ с двумерным массивом.
Постановка задачи
Организуйте построчный ввод вещественной квадратной матрицы А 4-го порядка. Сформировать матрицу В 4-го порядка выполнив условие:
Начиная с первого элемента каждой строки А увеличить последующий на 2, следующий на 4, на 6.
Листинг программы
program zadanie_5;
uses crt;
const
n=4;
var
a: array [1..n,1..n] of real;
b: array [1..n,1..n] of real;
i,j,d:integer;
begin
clrscr;
for j:=1 to n do
for i:=1 to n do
begin
clrscr; gotoxy(1,1);
write('элемент - ',j,',',i,':'); readln(a[j,i]);
end;
clrscr;
writeln;
writeln('Исходная матрица:');
for i:=1 to n do
begin
d:=d+2;
for j:=1 to n do
begin
b[j,i]:=d+a[j,i];
gotoxy(i*6,j+3);
writeln(a[j,i]:3:1)
end;
end;
writeln;
writeln('преобразованная матрица:');
for i:=1 to n do
for j:=1 to n do
begin
gotoxy(i*6,j+10);
writeln(b[j,i]:3:1)