Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ПРАКТИЧЕСКИМ ЗАНЯТИЯМ
Методические указания к практическим занятиям содержат примеры решения восьми типовых задач. Решение состоит в построении по индивидуальному заданию (условию задачи) схемы алгоритма и написании текста программы на языке 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
Задача 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. Вид таблицы:
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; 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))
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))
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; 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
Процедура 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), каждая из которых содержит информацию об одном студенте. Расположение информации в каждой записи следующее: – фамилия студента; – год рождения; – оценка сдачи 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
Задача 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
Приложения
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2018-04-12; просмотров: 389. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |