Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Методические указания к практическим занятиям содержат примеры решения восьми типовых задач. Решение состоит в построении по индивидуальному заданию (условию задачи) схемы алгоритма и написании текста программы на языке Borland Pascal 7.0 (BP). Условия задач берутся из соответствующих таблиц, приведенных в приложении. В приложения вынесены и схемы алгоритмов типовых задач.
Третья и четвертая задачи решаются, соответственно, тремя и четырьмя способами, причем для каждого способа приводится отдельная схема алгоритма и текст программы.
Для некоторых задач приводятся дополнительные разъяснения по постановке задачи.
Зачет по практическому занятию предполагает успешное выполнение следующих действий:
Задача 1
1. Условие: Составить схему алгоритма и написать ВР-программу вычисления значения заданной функции по задаваемому в программе значению аргумента (см. табл. П. 1). Результат вычислений вывести на экран.
Пример: функция sin2x; значение аргумента 0.1.
2. Текст программы:
PROGRAM z1;
CONST
k=2; (* поименованная константа *)
VAR
x,y:REAL; (* аргумент и функция *)
BEGIN
х:=0.1;
y:=SIN(k*x);
WRITE(x, y);
END.
3. Схема алгоритма задачи 1
Задача 2
1. Условие: Составить схему алгоритма и написать ВР-программу вычисления значения заданной функции (см. табл. П. 1) для значения аргумента, вводимого с клавиатуры. Значение функции вычисляется и выводится на экран, если значение аргумента принадлежит интервалу числовой оси от 0 до 1. Если введенное значение аргумента находится вне этого интервала, то программа должна выдать на экран соответствующее сообщение.
Пример: функция sin2x.
2. Текст программы:
PROGRAM z2;
CONST
k=2; (* поименованная константа *)
VAR
x,y:REAL; (* аргумент и функция *)
BEGIN
WRITE(Введите значение аргумента );
READ(x);
IF (x>=0) AND (х<=1) THEN
BEGIN
y:=SIN(k*x);
WRITELN(x=,x, y=,y);
END
ELSE
WRITELN(Значение аргумента вышло за интервал 0-1);
END.
3. Схема алгоритма задачи 2
Задача 3
1. Условие: Составить схему алгоритма и написать ВР-программу вычисления и вывода на экран дисплея таблицы значений заданной функции (см. табл. П. 1) при изменении значения аргумента в интервале от 0 до 1 с шагом 0.1.
Пример: функция sin2x.
Вид таблицы:
x |
y |
} заголовок |
0.0 |
0.541 |
таблица |
0.1 |
0.123 |
|
· · · |
||
1.0 |
0.789 |
} окончание |
2. Тексты программ:
PROGRAM z31;
(* 1-й способ с оператором цикла FOR *)
CONST
k=2; (* поименованная константа *)
str=*************************************;
(* строка символов *)
VAR
x,y:REAL; (* аргумент и функция *)
i:INTEGER; (* переменная цикла *)
BEGIN
WRITELN(str);
WRITELN(* x * у *);
WRITELN(str);
х:=0.0;
FOR i:=1 TO 11 DO
BEGIN
y:=SIN(k*x);
WRITELN (*, x:17:8,*, y:18:8,*);
x:=x+0.1;
END;
WRITELN (str);
END.
3а) Схема алгоритма задачи 3 (1-й способ (цикл FOR))
PROGRAM z32;
(* 2-й способ с оператором цикла WHILE *)
CONST
k=2; (* поименованная константа *)
str=*************************************;
(* строка символов *)
VAR
x,y:REAL; (* аргумент и функция *)
BEGIN
WRITELN(str);
WRITELN(* x * у *);
WRITELN(str);
х:=0.0;
WHILE х<1.1 DO
BEGIN
y:=SIN(k*x);
WRITELN(*, x:17:8, *, y:18:8, *);
x:=x+0.1;
END;
WRITELN(str);
END.
3б) Схема алгоритма задачи 3 (2-й способ (цикл WHILE))
PROGRAM z33;
(* 3-й способ с оператором цикла REPEAT *)
CONST
k=2; (* поименованная константа*)
str=*************************************;
(* строка символов *)
VAR
x,y:REAL; (* аргумент и функция *)
BEGIN
WRITELN(str);
WRITELN(* x * у *);
WRITELN(str);
х:=0.0;
REPEAT
y:=SIN(k*x);
WRITELN(*, x:17:8, *, y:18:8, *);
x:=x+0.1;
UNTIL x>l.l;
WRITELN(str);
END.
3в) Схема алгоритма задачи 3 (3-й способ (цикл REPEAT))
Задача 4
1. Условие: Составить схему алгоритма и написать ВР-программу вычисления суммы бесконечного ряда для заданного значения переменной и формулы общего члена ряда (см. табл. П. 1). Предусмотреть завершение суммирования и печать результата при достижении очередным членом ряда абсолютной величины, меньшей, чем 0.0001.
Пример: значение переменной 0.1;
Формула общего члена ряда
2. Тексты программ:
PROGRAM z41; (* 1-й способ с оператором перехода GOTO *)
CONST
k=2; (* поименованная константа *)
LABEL 1; (* метка *)
VAR
x,s,a:REAL; (* переменная, сумма, элемент суммы *)
i,j,znak,fakt:INTEGER; (* номер элемента суммы, переменная цикла, знак, факториал *)
BEGIN
s:=0.0;
i:=0;
znak:=1;
x:=0.1;
1: i:=i+1;
znak:=znak*(-1);
fakt:=1;
FOR j:=1 TO (k*i+1) DO fakt:=fakt*j;
a:=znak*EXP((k*i+1)*LN(k*x))/fakt;
s:=s+a;
IF ABS(a)>0.0001 THEN GOTO 1;
WRITE(При a= ,a:9:7, сумма= ,s:9:7);
WRITELN(на 4:2,-ой итерации);
END.
3а) Схема алгоритма задачи 4 (1-й способ (опера-торы IF и GOTO))
PROGRAM z42;
(* 2-й способ с оператором цикла WHILE *)
CONST
k=2; (* поименованная константа *)
VAR
x,s,a:REAL; (* переменная, сумма, элемент суммы *)
i,j,znak,fakt:INTEGER; (* номер элемента суммы,
переменная цикла, знак, факториал *)
BEGIN
s:=0.0;
i:=0;
znak:=1;
x:=0.1;
a:=1;
WHILE ABS(a)>0.0001 DO
BEGIN
i=i+1;
znak:=znak*(-1);
fakt:=1;
FOR j:=1 TO (k*i+1) DO
fakt:=fakt*i;
a:=znak*EXP((k*i+1)*LN(k*x))/fakt;
s:=s+a;
END;
WRITE(При a= ,a:9:7, сумма= ,s:9:7);
WRITELN(на i:2,-ой итерации);
END.
3б) Схема алгоритма задачи 4 (2-й способ (цикл WHILE))
PROGRAM z43;
(* 3-й способ с оператором цикла REPEAT *)
CONST
k=2; (* поименованная константа *)
VAR
x,s,a:REAL; (* переменная, сумма, элемент суммы *)
i,j,znak,fakt:INTEGER; (* номер элемента суммы, переменная цикла, знак, факториал *)
BEGIN
s:=0.0;
i:=0;
znak:=1;
x:=0.1;
REPEAT
i:=i+1;
znak:=znak*(-1);
fakt:=1;
FOR j:=1 TO (k*i+1) DO
fakt:=fakt*j;
a:=znak*EXP((k*i+1)*LN(k*x)/fakt;
s:=s+a:
UNTIL ABS(a)>0.0001;
WRITE(При а= ,а:9:7, сумма= ,s:9:7);
WRITELN(на i:2,-ой итерации);
END.
3в) Схема алгоритма задачи 4 (3-й способ (цикл REPEAT))
PROGRAM z44; (* 4-й способ с операторами описания и вызова процедур и функций *)
CONST
k=2; (* поименованная константа )
VAR
x,s,a,i:REAL; (* переменная, сумма, элемент суммы,
номер элемента суммы *)
i1:INTEGER; (* целый тип номера элемента суммы *)
FUNCTION fakt(f:INTEGER):INTEGER; (* функция факториал *)
VAR fak,j:INTEGER; (* локальные переменные *)
BEGIN
fak:=1;
FOR j:=1 TO f DO
fak:=fak*j;
fakt:=fak;
END;
PROCEDURE summa(VAR,s:REAL; b:REAL); (* процедура суммы *)
BEGIN
s:=s+b;
END;
FUNCTION stepen(osn:REAL;step:INTEGER):RЕАL; (* функция степени *)
VAR k:INTEGER; (* локальные*)
st:REAL; (* переменные *)
BEGIN
st:=1.0;
FOR k:=1 TO step DO
st:=st*osn;
stepen:=st;
END;
BEGIN
s:=0.0;
i:=0;
x:=0.1;
REPEAT
summa(i,1.0);
i1:=TRUNC(i);
a:=stepen(-1.0,i1)* stepen(k*x,k*i1+1)/fakt(k*i1+1);
summa(s,a);
UNTIL ABS(a)<0.0001;
WRITE(При a= ,a:9:7, сумма= ,s:9:7);
WRITELN(на ,i1:2,-ой итерации);
END.
3г) Схема алгоритма задачи 4 (4-й способ (FUNCTION и PROCEDURE))
Функция FAKT
Процедура SUMMA
Функция STEPEN
Задача 5
1. Условие: Составить схему алгоритма и написать ВР-программу обработки одномерного массива целых чисел (вид обработки см. в табл. П. 2). Результат вывести на экран дисплея.
Пример: вид обработки заключается в подсчете количества положительных элементов массива.
2. Текст программы:
PROGRAM z5;
VAR mas:ARRAY[1..10] OF INTEGER; (* массив *)
i,kol:INTEGER; (* переменная цикла, количество *)
BEGIN
WRITELN(Введите значения элементов массива);
FOR i=1 TO 10 DO
READ(mas[i]);
kol:=0;
FOR i:=1 TO 10 DO
IF mas[i]>0 THEN kol:=kol+1;
IF kol>0 THEN
WRITELN(Кол-во положительных элементов в массиве =,kol:2)
ELSE
WRITELN(Положительных элементов в массиве нет)
END.
3. Схема алгоритма задачи 5
Задача 6
1. Условие: Составить схему алгоритма и написать ВР-программу обработки двухмерного массива целых чисел (вид обработки см. в табл. П. 2). Результат вывести на экран дисплея.
Пример: вид обработки заключается в определении той диагонали квадратной матрицы (главной или обратной), которая имеет большую сумму элементов.
2. Текст программы:
PROGRAM z6;
VAR mas:ARRAY[1..3,1..3] OF INTEGER; (* массив *)
i,j,s1,s2:INTEGER; (* 2 индекса циклов, 2 суммы *)
BEGIN
WRITELN(Введите значения элементов массива);
FOR i:=1 TO 3 DO
FOR j:=1 TO 3 DO
READ(mas[i,j]);
s1:=0;
s2:=0;
FOR i:=1 TO 3 DO
BEGIN
j:=3-(i-1);
sl:=s1+mas[i,i];
s2:=s2+mas[i,j];
END;
IF s1>s2 THEN
WRITELN(Сумма элементов главной диагонали)
ELSE
IF s2>s1 THEN
WRITELN(Сумма элементов обратной диагонали)
ELSE
WRITELN(Суммы элементов диагоналей равны);
END.
3. Схема алгоритма задачи 6
Задача 7
1. Условие: Составить схему алгоритма и написать ВР-программу обработки массива записей (вид обработки см. в табл. П. 3), каждая из которых содержит информацию об одном студенте. Расположение информации в каждой записи следующее:
Результат вывести на экран.
Пример: вид обработки заключается в определении списка студентов, получивших в сумме по трем экзаменам 14 баллов.
2. Текст программы:
PROGRAM z7;
TYPE st=RECORD (* запись*)
fam:STRING; (* фамилия *)
godr:INTEGER; (* год рождения *)
otm:ARRAY[1..3] OF INTEGER; (* массив отметок *)
prop:INTEGER; (* кол-во пропусков *)
END;
VAR gr:ARRAY[1..5] OF st; (* массив записей *)
i,j,ind: INTEGER; (* 2 индекса циклов,индикатор *)
BEGIN
WRITELN(Введите информацию о студентах);
FOR i:=1 TO 5 DO
BEGIN
READ(gr[i].fam);
READ(gr[i].godr);
FOR j:=1 TO 3 DO READ(gr[i].otm[j]);
READLN(gr[i].prop);
END;
ind:=0;
FOR i:=1 TO 5 DO
IF (gr[i].otm[1]+gr[i].otm[2]+gr[i].otm[3])=14 THEN
BEGIN
IF md=0 THEN
BEGIN
WRITELN(Список студентов, получивших);
WRITELN(14 баллов в сессию);
END;
WRITELN(gr[i].fam);
ind:=1;
END;
IF ind=0 THEN
WRITELN(Студентов, получивших 14 баллов в сессию нет);
END.
3. Схема алгоритма задачи 7
Задача 8
1. Условие: Составить схему алгоритма и написать ВР-программу, которая:
Результат вывести на экран дисплея.
Пример: вид обработки заключается в подсчете количества положительных элементов массива.
2. Текст программы:
PROGRAM z8;
VAR mas:ARRAY[1..10] OF INTEGER; (* массив *)
i,kol,buf:INTEGER; (* индекс цикла, количество, буфер *)
f:TEXT; (* файл *)
BEGIN
ASSIGN(f,f.txt);
REWRITE(f);
WRITELN(Введите значения элементов массива);
FOR i:=1 TO 10 DO
BEGIN
READ(buf);
WRITELN(f,buf);
END;
RESET(f);
kol:=0;
FOR i:=1 TO 10 DO
BEGIN
READLN(f,mas[i]);
IF mas[i]>0 THEN kol:=kol+1;
END;
CLOSE(f);
IF kol>0 THEN
WRITELN(Кол-во положительных эл-ов в массиве =,kol:2)
ELSE
WRITELN(Положительных элементов в массиве нет)
END.
3. Схема алгоритма задачи 8
Основные символы схем алгоритмов
Выполнение схем алгоритмов регламентируется ГОСТ 19.008-80 «ЕСПД. Схемы алгоритмов и программ. Правила выполнения».
Для изображения схем алгоритмов используются следующие графические символы:
процесс выполнение операций или группы операций, в результате которых изменяются значения, форма представ-ления или расположение данных; |
|
решение выбор дальнейшего направ-ления выполнения алгоритма в зависимости от заранее определенных условий; |
|
модификация выполнение операций, меняющих команду или группу команд, изменяющих программу; |
|
предопределенный процесс ис-пользование ранее созданных и отдельно описанных алгоритмов; |
|
ввод-вывод преобразование данных в форму, пригодную для обработки (ввод) или отображения результатов обработки (вывод); |
|
пуск-останов начало, конец, пре-рывание процесса обработки данных |
Таблица П. 1
№ п/п |
Значение переменной |
Заданное выражение |
Формула общего члена ряда |
1 |
0.9 |
exp(х) |
|
2 |
0.6 |
cos(x) |
|
3 |
0.5 |
||
4 |
0.2 |
||
5 |
0.2 |
||
6 |
0.4 |
||
7 |
0.7 |
||
8 |
0.4 |
||
9 |
0.4 |
||
10 |
0.6 |
||
11 |
0.3 |
||
12 |
0.2 |
Таблица П. 2
№ п/п |
Результат обработки |
1 |
Сумма всех положительных элементов массива |
2 |
Количество элементов массива, больших 50 |
3 |
Среднее арифметическое значение всех отрицательных элементов массива |
4 |
Сумма положительных элементов массива, имеющих нечетные номера |
5 |
Количество элементов массива, значения которых делятся нацело на 2 |
6 |
Элементы массива, значения которых больше 50 |
7 |
Сумма всех отрицательных элементов массива, имеющих четные номера |
8 |
Количество элементов массива, имеющих нечетные значения |
9 |
Количество элементов массива, значения которых лежат в диапазоне от 25 до 75 |
10 |
Сумма элементов массива, значения которых по модулю меньше 25 |
11 |
Элементы массива, имеющие четные значения |
12 |
Количество элементов массива, значения которых кратны 10 |
Таблица П. 3
№ п/п |
Результат обработки |
1 |
Фамилия самого старшего студента |
2 |
Список отличников |
3 |
Список студентов, не имеющих пропусков занятий |
4 |
Список хорошистов |
5 |
Список двоечников |
6 |
Фамилия студента, имеющего наибольшее количество пропусков занятий |
7 |
Список студентов, которым в этом году исполняется 20 лет |
8 |
Средний бал сдачи студентами первого экзамена |
9 |
Средний бал сдачи студентами сессии |
10 |
Список студентов, получивших тройки по третьему экзамену |
11 |
Средний возраст студентов группы |
12 |
Список однофамильцев, при условии, что фамилия-эталон вводится с экрана дисплея |