Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Перечень лабораторных работ1. Освоение клавиатуры IBM-совместимого персонального компьютера и основных команд, необходимых при работе на Турбо - Паскале. 2. Программирование вычислений по формулам 3. Программирование разветвлений 4. Программирование циклов. Вычисление сумм и произведений Суммирование рядов с заданной точностью. 5. Обработка одномерных массивов. 6. Обработка двумерных массивов.
3.КРАТКИЕ МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ ЛАБОРАТОРНЫХ РАБОТ. ПРИМЕРЫ ВЫПОЛНЕНИЯ ЗАДАНИЙ. В течение первого семестра студентам-заочникам предлагается выполнить одну контрольную работу, которая в общей сложности включает шесть заданий. Номер варианта выбирается из таблицы вариантов заданий и совпадает с последними двумя цифрами личного шифра студента (Приложение 1).При выполнении контрольных работ во всех заданиях, кроме первого, необходимо разработать блок-схему алгоритма и программу на языке Турбо - Паскаль (в первом задании только программу). Задания 1.1 - 1.4 охватывают тему «Основные конструкции языка программирования Турбо – Паскаль». Задания 1.3-1.4 и 2.1 охватывают тему «Организация циклических вычислений». Задание 2.2 охватывает тему «Обработка одномерных массивов». Задание 2.3 — тему «Обработка двумерных массивов».
¨ Пример выполнения задания 1.1. Условие задачи: Два числа X и Y задаются при помощи оператора ввода. Вычислить сумму их квадратов, модуль разности и произведение. Текст программы на языке Паскаль приводится на Рис.1. Здесь переменная SUM используется для обозначения суммы квадратов, переменная М - для обозначения модуля разности, переменная P -для обозначения произведения. program prim_1; {вычисления по формулам} var x,y:real; sum,m,p:real; begin write('введите x=');readln(x); write('введите y=');readln(y); sum:=x*x+y*y; m:=abs(x-y); p:=x*y; writeln('сумма квадратов=',sum:6:3); writeln('модуль разности=',m:6:3); writeln('произведение=',p:6:3); end. Рис.1 Текст программы для задания 1.1. ¨ Пример выполнения задания 1.2. Условие задачи: Значения переменных А и В задаются оператором ввода. Программа должна отпечатать А > B, A < B или A = B в зависимости от значений А и В. Рис.2. Блок-схема для задания 1.2. Блок-схема и текст программы приведены на Рис.2 и 3. Алгоритм заключается в сравнении вводимых величин А и В и выводе на экран соответствующих сообщений.
program prim_2; {использование условного оператора} var a,b:real; begin write('введите а=');readln(a); write('введите b=');readln(b); if a>b then writeln('А больше В') else if a<b then writeln('А меньше В') else writeln('А равно В'); end. Рис.3 Текст программы для задания 1.2. ¨ Пример выполнения задания 1.3.,варианты 1..4. Условие задачи: Составить блок-схему алгоритма и программу для вычисления и вывода на экран таблицы значений функции , где аргумент Х изменяется от начального значения (например, 1) до конечного (например, 2) с заданным шагом (например, 0,05). Параметры А и В задаются оператором ввода. Здесь переменная xmin используется для обозначения начального значения аргумента Х, xmax - для обозначения конечного значения аргумента Х, dx - для обозначения шага, А и В - для обозначения параметров, необходимых для вычислений, X и Y - для обозначения текущего значения аргумента и текущего значения функции. Эта задача может быть решена четырьмя способами Блок-схема алгоритма и текст программы с использованием: - оператора условия (IF-THEN) приведены на Рис.4,8 - цикла с параметром (FOR-DO) приведены на Рис.5,9 - цикла с предусловием (WHILE-DO) приведены на Рис.6,10 - цикла с постусловием (REPEAT-UNTIL) приведены на Рис.7,11
Рис.4. Блок-схема для задания 1.3.,вариант 1.
Рис.5. Блок-схема для задания 1.3.,вариант 2.
Рис.6. Блок-схема для задания 1.3.,вариант 3.
Рис.7. Блок-схема для задания 1.3.,вариант 4.
program prim_3; {программа вычислений и вывода на экран таблицы значений функции с использованием оператора IF-THEN} label l10; var a,b:real; xmin,xmax,dx:real; x,y:real; begin write('A=');readln(a); write('B=');readln(b); write('начальное значение=');readln(xmin); write('конечное значение=');readln(xmax); write('шаг=');readln(dx); writeln('|___|___|'); writeln('| X | Y |'); writeln('|___|___|'); x:=xmin; l10: y:=A*sin(B*x)/x; writeln('|',x:6:2,'|',y:7:2,'|'); x:=x+dx; if (x<=xmax) then goto l10; writeln('|___|___|'); end. Рис.8. Текст программы для задания 1.3.,вариант 1. program prim_4; {программа вычислений и вывода на экран таблицы значений функции с использованием оператора FOR-DO} var a,b:real; xmin,xmax,dx:real; x,y:real; i,n:integer; begin write('A=');readln(a); write('B=');readln(b); write('начальное значение=');readln(xmin); write('конечное значение=');readln(xmax); write('шаг=');readln(dx); writeln('|___|___|'); writeln('| X | Y |'); writeln('|___|___|'); n:=trunc((xmax-xmin)/dx)+1; x:=xmin; for i:=1 to n do begin y:=A*sin(B*x)/x; writeln('|',x:6:2,'|',y:7:2,'|'); x:=x+dx; end; writeln('|___|___|'); end. Рис.9. Текст программы для задания 1.3.,вариант 2. program prim_5; {программа вычислений и вывода на экран таблицы значений функции с использованием оператора WHILE-DO} var a,b:real; xmin,xmax,dx:real; x,y:real; begin write('A=');readln(a); write('B=');readln(b); write('начальное значение=');readln(xmin); write('конечное значение=');readln(xmax); write('шаг=');readln(dx); writeln('|___|___|'); writeln('| X | Y |'); writeln('|___|___|'); x:=xmin; while x < xmax+dx/2 do begin y:=A*sin(B*x)/x; writeln('|',x:6:2,'|',y:7:2,'|'); x:=x+dx; end; writeln('|___|___|'); end. Рис.10. Текст программы для задания 1.3.,вариант 3. program prim_6; {программа вычислений и вывода на экран таблицы значений функции с использованием оператора REPEAT-UNTIL} var a,b:real; xmin,xmax,dx:real; x,y:real; begin write('A=');readln(a); write('B=');readln(b); write('начальное значение=');readln(xmin); write('конечное значение=');readln(xmax); write('шаг=');readln(dx); writeln('|___|___|'); writeln('| X | Y |'); writeln('|___|___|'); x:=xmin; repeat y:=A*sin(B*x)/x; writeln('|',x:6:2,'|',y:7:2,'|'); x:=x+dx; until x > xmax+dx/2; writeln('|___|___|'); end. Рис.11. Текст программы для задания 1.3.,вариант 4. ¨ Пример выполнения задания 1.4. Условие задачи: Составить блок-схему алгоритма и программу для вычисления и вывода на экран таблицы значений функции , которая не определена на интервале (1.0,4.0) Результаты работы программы должны быть представлены в виде таблицы: начальное значение=3 конечное значение=6 шаг=0.5 ---------------------- x | y ---------------------- 3.00 |Функция не определена 3.50 |Функция не определена 4.00 | 0.00 4.50 | 1.32 5.00 | 2.00 5.50 | 2.60 6.00 | 3.16 ---------------------- Здесь переменная xmin используется для обозначения начального значения аргумента Х, xmax - для обозначения конечного значения аргумента Х, dx - для обозначения шага, X и Y - для обозначения текущего значения аргумента и текущего значения функции, R -вспомогательная переменная.
program prim_7; {программа вычислений и вывода на экран таблицы значений функции с использованием оператора WHILE и проверкой на допустимость вычисляемого значения} var xmin,xmax,dx:real; y,x,r:real; begin write('начальное значение=');readln(xmin); write('конечное значение=');readln(xmax); write('шаг=');readln(dx); writeln('|___|___|'); writeln('| X | Y |'); writeln('|___|___|'); x:=xmin; while x < (xmax+dx/2) do begin r:=x*x-5*x+4; if (r>=0.0) then begin y:=sqrt(r); writeln('|',x:6:2,'|',y:7:2,'|'); end else writeln('|',x:6:2,'|','Функция не определена'); x:=x+dx; end; writeln('|___|___|'); end. Рис 12. Текст программы для задания 1.4.
¨ Пример выполнения задания 2.1. Условие задачи: составить блок-схему алгоритма и программу для вычисления суммы бесконечного числового ряда:
Суммирование прекратить при появлении в сумме слагаемых, имеющих абсолютную величину, меньшую заданной погрешности d. Значение d задается при помощи оператора ввода. Блок-схема алгоритма и вариант текста программы приведены на Рис.14,15.Переменная I обозначает номер, а переменная А- значение каждого слагаемого, входящего в сумму. Суммирование слагаемых продолжается до тех пор, пока выполняется условие A > d.
program prim_8; var s,a,d:real; i:integer; begin write('введите погрешность');readln(d); s:= 0; i:= 2; a:= 1/4; while abs(a) > d do begin s:= s+a; inc(i,2); a:= 1/sqr(i); end; writeln('сумма ряда =',s:8:5); end. Рис.14. Текст программы для задания 2.1. Рис.15. Блок-схема для задания 2.1.
¨ Пример 1 выполнения задания 2.2. Условие задачи: В заданном целочисленном массиве A из 20 элементов найти сумму элементов, имеющих четное значение, и сумму элементов, имеющих нечетное значение. Рис.16.Блок-схема для выполнения задания 2.2,пример 1. Блок-схема алгоритма и текст программы изображены на Рис.16,17.Переменные S1 и S2 обозначают соответственно суммы четных и нечетных элементов, переменная I - порядковый номер элементов массива. program prim_9; type vector = array[1..20] of integer; var A:vector; i,s1,s2:integer; begin writeln('введите массив целочисленных значений'); for i:= 1 to 20 do begin write('A[',i,']='); readln(A[i]); end; s1:= 0; s2:= 0; for i:= 1 to 20 do if A[i] mod 2 =0 then s1:= s1 + A[i] else s2:= s2 + A[i]; writeln('сумма четных элементов=',s1); writeln('сумма нечетных элементов=',s2); end. Рис.17. Текст программы для задания 2.2,пример 1. ¨ Пример 2 задания 2.2. Условие задачи: В заданном массиве X из N элементов найти элемент, имеющий максимальное значение, и его порядковый номер. Переменная nmax обозначает порядковый номер элемента, имеющего максимальное значение. Переменная xmax содержит его значение. Массив X определен, как вектор вещественных значений, содержащий максимум 100 элементов. Реальное количество элементов вводится во время выполнения программы. Поиск элемента, имеющего максимальное значение, и его порядкового номера выполняется в цикле FOR. Перед выполнением цикла предполагается, что максимальным является первый элемент массива. В цикле происходит сравнение всех последующих элементов с максимальным. Если очередной проверяемый элемент окажется больше, то он принимается за максимальный и т.д. Блок-схема и текст программы изображены на Рис. 18,19. Рис.18.Блок-схема алгоритма для задания 2.2,пример 2.
program prim_10; type vector = array[1..100] of real; var X:vector; n,i,nmax:integer; xmax:real; begin write('введите число элементов массива'); readln(n); writeln('введите массив '); for i:= 1 to N do begin write('X[',i,']='); readln(X[i]); end; xmax:= X[1]; nmax:= 1; for i:= 2 to N do if X[i] > xmax then begin xmax:= X[i]; nmax:= i; end; writeln('максимальный элемент массива=',xmax:8:4); writeln('номер элемента=',nmax); end. Рис.19. Текст программы для задания 2.2,пример 2. ¨ Пример выполнения задания 2.3. Условие задачи: Ввести двумерный вещественный массив, выполнить его транспонирование: поменять строки и столбцы местами. Осуществить контрольный вывод исходного массива и массива результатов. Результаты работы программы должны быть представлены в виде: Введите к-во строк и столбцов 2 2 Введите массив А a(1,1)=1 a(1,2)=2 a(2,1)=3 a(2,2)=4 Массив A 1.0 2.0 3.0 4.0 Массив B 1.0 3.0 2.0 4.0 Рис.21.Блок-схема для выполнения задания 2.3.
program prim_11; const row=10;col=10; type matr1=array[1..row,1..col] of real; matr2=array[1..col,1..row] of real; var i,j,n,m:integer; a:matr1; b:matr2; begin {ввод массива A} writeln('Введите к-во строк и столбцов'); readln(n,m); writeln('Введите массив А'); for i:=1 to n do for j:=1 to m do begin write('a(',i:1,',',j:1,')='); readln(a[i,j]); end; {вывод массива A} writeln('Массив A'); for i:=1 to n do begin for j:=1 to m do write(a[i,j]:7:1); writeln; end; {формирование массива В} for i:=1 to n do for j:=1 to m do b[j,i]:=a[i,j]; {вывод массива B} writeln('Массив B'); for i:=1 to n do begin for j:=1 to m do write(b[i,j]:7:1); writeln; end; readln; end. Рис.21. Текст программы для задания 2.3. Упрощенная блок-схема алгоритма и текст программы изображены на Рис.20,21. 4. ВАРИАНТЫ ЗАДАНИЙ à Задание 1.1.
|