Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ПРАКТИЧЕСКИМ ЗАНЯТИЯМ




 

 

 

Методические указания к практическим занятиям содержат при­меры решения восьми типовых задач. Решение состоит в построении по индивидуальному заданию (условию задачи) схемы алгоритма и написании текста программы на языке Borland Pascal 7.0 (BP). Условия задач берутся из соответствующих таблиц, приведенных в приложении. В приложения вынесены и схемы алгоритмов типовых задач.

Третья и четвертая задачи решаются, соответственно, тремя и четырьмя способами, причем для каждого способа приводится от­дельная схема алгоритма и текст программы.

Для некоторых задач приводятся дополнительные разъяснения по постановке задачи.

Зачет по практическому занятию предполагает успешное вы­полнение следующих действий:

– составление схемы алгоритма по индивидуальному условию задачи;

– написание программы на языке 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

 

X – аргумент Y – зн. функции K – коэффициент
Вывод результата
Объявление переменных

 

 

Задача 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

Ввод значения
Вывод результата
X – аргумент S – сумма K – коэффициент
Объявление переменных



Задача 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))

 

 

Печать заголовка
Печать окончания
Печать строки
X – имя аргумента Y – имя функции K – коэффициент I – счетчик циклов
Объявление переменных

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))

Печать окончания
Печать заголовка
Объявление переменных
Печать строки
X – имя аргумента Y – имя функции K – коэффициент

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))

Печать окончания
Печать строки
Печать заголовка
Объявление переменных
X – имя аргумента Y – имя функции K – коэффициент

Задача 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;

FORj:=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))

 

Вывод результата
X – аргумент S – сумма а – член ряда znak – знак члена ряда i – номер итерации j – счётчик циклов K – коэффициент FAKT – факториал
Объявление переменных

 

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;

FORj:=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))

 

Вывод результата
Объявление переменных
X – аргумент S – сумма а – член ряда znak – знак члена ряда i – номер итерации j – счётчик циклов K – коэффициент FAKT – факториал

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))

 

Вывод результата
Объявление переменных
X – аргумент S – сумма а – член ряда znak – знак члена ряда i – номер итерации j – счётчик циклов K – коэффициент FAKT – факториал

 

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;

PROCEDUREsumma(VAR,s:REAL; b:REAL); (* процедура суммы *)

BEGIN

s:=s+b;

END;

FUNCTIONstepen(osn:REAL;step:INTEGER):RЕАL; (* функция степени *)

VARk: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

 

Присвоение значения функции
Объявление переменных
Передача значения параметру
F – формальный параметр j – счётчик циклов FAK – промежуточная переменная

 

 

Процедура SUMMA

 

S, B – формальные параметры
Передача значений параметрам

 

Функция STEPEN

 

Присвоение значения функции
Объявление переменных
Передача значений параметрам
OSN, STEP – формальные параметры K – счётчик циклов ST – промежуточная переменная

 



Задача 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

 

Вывод результатов
Заполнение массива
Объявление переменных
mas – массив чисел i – индекс массива KOL – количество положительных чисел

 

 


Задача 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

 

Заполнение массива
Объявление переменных
mas – массив чисел i, j – индексы массива S1, S2 – сумма элементов главной и обратной диагоналей

 

Задача 7

1. Условие: Составить схему алгоритма и написать ВР-программу обработки массива записей (вид обработки см. в табл. П. 3), каждая из которых содержит информацию об одном студенте. Рас­положение информации в каждой записи следующее:

– фамилия студента;

– год рождения;

– оценка сдачи 1-го экзамена;

– оценка сдачи 2-го экзамена;

– оценка сдачи 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..20] OF st; (* массив записей *)

i,j,ind: INTEGER; (* 2 индекса циклов,индикатор *)

BEGIN

WRITELN(‘Введите информацию о студентах’);

FOR i:=1 TO 5 DO

BEGIN

READ(gr[i].fam);

READ(gr[i].godr);

FORj:=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

 

?  (GR(i).OTM(1)+GR(i).OTM(2)+ +(GR(i).OTM(3))=14
Ввод количества пропусков занятий
Объявление переменных
ST – запись GR – массив записей i – индекс массива записей j – индекс массива оценок ind – индикатор наличия
Ввод оценки
Ввод фамилии
Ввод года рождения

Задача 8

1. Условие: Составить схему алгоритма и написать ВР-программу, которая:

– вводит с клавиатуры последовательность целых чисел;

– размещает их в файле;

– считывает их из файла в одномерный массив и обрабатывает его (вид обработки см. в табл. П. 2).

Результат вывести на экран дисплея.

Пример: вид обработки заключается в подсчете количества положительных элементов массива.

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

Вывод результатов
Закрытие файла
Считывание из файла
Настройка на считывание из файла
Настройка    на запись в файл
Открытие файла
Объявление переменных
mas – массив чисел i – индекс массива KOL – количество положи-тельных чисел в массиве BUF – буферная переменная F – имя файла
Запись в файл

Приложения

 

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 389.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...