Курсовая Алгоритмизация и программирование на языке Паскаль
Работа добавлена на сайт bukvasha.net: 2015-10-25Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
Федеральное агентство по образованию
Государственное образовательное учреждение высшего профессионального образования
Омский государственный технический университет
Кафедра: «Средства связи и информационная безопасность»
Курсовая работа
по дисциплине «Информатика»
тема:
Алгоритмизация и программирование на языке Паскаль
Выполнил студент:
Кузюков Виктор Васильевич
Группа: ЗРП-118 (210402)
Вариант: № 8
Омск 2009 г.
Содержание
Лабораторная работа 1 «Программирование формул; операторы ввода и вывода» (Read, Write)
Лабораторная работа 2 «Условный оператор» (If..then..else)
Лабораторная работа 3 «Цикл с предусловием» (While..do)
Лабораторная работа 4 «Цикл с постусловием» (Repeat..until)
Лабораторная работа 5.1 «Цикл с заданным числом повторений» (For..to..do)
Лабораторная работа 5.2 «Цикл с заданным числом повторений» (For..to..do)
Лабораторная работа 10 «Графические средства» (модуль - Graph)
Список используемой литературы
Лабораторная работа 1
Программирование формул; операторы ввода и вывода (Read, Write)
Лабораторное задание
Для данных из таблицы 3 написать алгоритм и программу для вычисления формулы для х, введенных с клавиатуры. Произвести тестирование программы с помощью имеющегося математического пакета или калькулятора.
|
Алгоритм выполнения:
|
Текст программы:
Program lab1v8;
Uses
Crt ;
Label
1,2 ;
const
a = 1.1;
b = 4;
var
y,x: Real;
ch: Char;
begin
1:
clrscr;
textcolor (11);
Writeln (' ПРОГРАММИРОВАНИЕ ФОРМУЛ; ОПЕРАТОРЫ ВВОДА И ВЫВОДА');
Writeln ;
Writeln (' Лабораторная работа № 1, 8-ой вариант');
Writeln (' Дано:');
Writeln (' Константы a=1.1 и b=4');
Writeln (' Переменные x, которые надо ввести с клавиатуры = -3 и 3');
Writeln ;
Writeln (' При -3 y=1.31; 3 y=2.87');
Writeln (' Вычисленение производится по формуле:');
Writeln ;
Writeln (' ln(|x+a|)*b');
Writeln (' y = -----------');
Writeln (' √a^b-sin(b)');
Writeln ;
textcolor (LightGreen);
Write ('
Введите
значение
x: ');
Read (x);
{-= вычисляем формулу =-}
y:= ln(abs(x+a))*b/(sqrt(exp(b*ln(a)))-sin(b));
{Выводим полученный результат}
Writeln ;
textcolor (Yellow);
WriteLn ('Результат вычисления y =',y:6:2);
Writeln ;
textcolor (LightRed);
Writeln(' для завершения нажмите "Esc", для повтора любую клавишу');
Writeln ;
textcolor (White);
Ch := ReadKey;
If Ch=#27 Then goto 2;
goto 1;
2:
Writeln ('До свидания');
Writeln ('Работу выполнил:');
Writeln ('К.Виктор гр. ЗРП-118 (210402) 2009г.');
end.
Лабораторная работа 2
Условный оператор (If..then..else)
Лабораторное задание
Написать алгоритм и программу для вычисления значения у из таблицы 4 для х, введенного с клавиатуры. Произвести тестирование программы.
Алгоритм выполнения:
Текст программы:
Program lab2v8;
Uses Crt ;
Label 1,2 ;
Var y,x: Real; ch: Char;
begin
1:
clrscr;
textcolor (11);
Writeln (' УСЛОВНЫЙ ОПЕРАТОР');
Writeln ;
Writeln (' Лабораторная работа № 2, 8-ой вариант');
Writeln (' Дано:');
Writeln (' Дана система уравнений для вычисления значения y');
Writeln (' при котором x требуется ввести с клавиатуры.');
Writeln ;
Writeln (' Диапазон, при которых значение x подходит к решению,');
Writeln (' должно контролироваться программой.');
Writeln (' /');
Writeln (' | x*(3-x) , -1<= x <0');
Writeln (' y = < 1 , 0<= x <1');
Writeln (' | tg(2x) , 1<= x <=2');
Writeln (' \');
Writeln (' Производя проверку, в значении tg(2x) - х является ГРАДУСОМ!');
Writeln ;
textcolor (LightGreen);
Write ('
Введите
значение
x: ');
Read (x);
{-= делаем проверку и вычисления =-}
if ((x<-1) or (x>2)) then Writeln ('Введённое значение выходит за пределы')
else
Begin
if x<0 then y := x*(3-x)
else if x<1 then y := 1
else y := (sin(2*x*Pi/180)/cos(2*x*Pi/180));
{Выводим полученный результат }
Writeln ;
textcolor (Yellow);
WriteLn ('Результат вычисления y =',y:7:3);
End;
Writeln ;
textcolor (LightRed);
Writeln(' для завершения нажмите "Esc", для повтора любую клавишу');
Writeln ;
textcolor (White);
Ch := ReadKey;
If Ch=#27 Then goto 2;
goto 1;
2:
Writeln ('До свидания.');
Writeln ('Работу выполнил:');
Writeln ('К.Виктор гр. ЗРП-118 (210402) 2009г.');
end.
Лабораторная работа 3
«Цикл с предусловием» (While..do)
Лабораторное задание
Написать алгоритм и программу вычисления у(х) или z(t) из лабораторной работы № 1 для заданных значений диапазона и шага аргументов z, t, таблица 5. Первое значение вычисляется в крайней левой точке заданного диапазона значений аргументов х. Произвести тестирование программы.
|
Алгоритм выполнения:
Текст программы:
Program lab3v8;
Uses
Crt ;
Label
1,2 ;
const
a = 1.1;
b = 4;
dx = 0.5;
var
y,x: Real;
ch: Char;
begin
1:
clrscr;
textcolor (11);
Writeln (' ЦИКЛ С ПРЕДУСЛОВИЕМ');
Writeln ;
Writeln (' Лабораторная работа № 3, 8-ой вариант');
Writeln (' Дано:');
Writeln (' Константы a=1.1; b=4');
Writeln ;
Writeln (' Изменение x происходит от -3 до 3 с шагом 0,5');
Writeln (' Вычисленение производится по формуле:');
Writeln ;
Writeln (' ln(|x+a|)*b');
Writeln (' y = -----------');
Writeln (' √a^b-sin(b)');
Writeln ;
textcolor (LightGreen);
Writeln ('Для продолжения нажмите "Enter"');
Ch := ReadKey;
If Ch<>#13 Then goto 1;
clrscr;
Writeln (' Вычисленение производится по формуле:');
Writeln ;
Writeln (' ln(|x+a|)*b');
Writeln (' y = ----------- ; a=1.1, b=4' );
Writeln (' √a^b-sin(b)');
Writeln ;
{-= вычисляем формулу в цикле =-}
x := -3;
While (x<=3) do
Begin
y:= ln(abs(x+a))*b/(sqrt(exp(b*ln(a)))-sin(b));
{Выводим полученный результат}
textcolor (Yellow);
WriteLn
('Результат вычисления
y
=',
y
:6:2, ' при
x
= ',
x
:6:2);
x := x+dx;
End;
Writeln ;
textcolor (LightRed);
Writeln(' для завершения нажмите "Esc", для повтора любую клавишу');
Writeln ;
textcolor (White);
Ch := ReadKey;
If Ch=#27 Then goto 2;
goto 1;
2:
Writeln ('До свидания.');
Writeln ('Работу выполнил:');
Writeln ('К.Виктор гр. ЗРП-118 (210402) 2009г.');
end.
алгоритм программа формула тестирование
Лабораторная работа 4
«Цикл с постусловием» (Repeat..until)
Лабораторное задание
Задание 1. Написать алгоритм и программу вычисления функции у(х) из лабораторной работы №2 в N равномерно распределенных в диапазоне Х1<х<Х2 точках, таблица 6. Результаты сформировать в виде таблицы. Произвести тестирование.
Задание 2. Произвести пошаговое выполнение программы, наблюдая переменные х, у, n
Алгоритм выполнения:
|
Текст программы:
Program lab4v8;
Uses
Crt ;
Label
1,2 ;
Const
X1=-1; X2=2; N=11;
var
y,x,dx: Real;
i: Integer;
ch: Char;
vr: Byte;
begin
1:
clrscr;
textcolor (11);
Writeln (' ЦИКЛ С ПОСТУСЛОВИЕМ');
Writeln ;
Writeln (' Лабораторная работа № 4, 8-ой вариант');
Writeln (' Дано:');
Writeln (' Дана система уравнеий для вычисления значения y,');
Writeln (' /');
Writeln (' | x*(3-x) , -1<= x <0');
Writeln (' y = < 1 , 0<= x <1');
Writeln (' | tg(2x) , 1<= x <=2');
Writeln (' \');
Writeln (' При выводе значении tg(2x) - х является ГРАДУСОМ!');
Writeln ;
Writeln (' Значение x = [-1;2].');
Writeln (' Из диапазона x выбирается 10 значений, которые');
Writeln (' атоматически вычисляются, разбив промежуток на равные части.');
Writeln ;
textcolor (LightGreen);
Writeln
('Выберите вариант вывода значений:');
Writeln
(' 1 - вывод всех значений');
Writeln
(' 2 - пошаговый режим');
Writeln
('(нажмите соотв. цифру на клавиатуре)');
{Проверяем выбораный режим 49="1", 50="2"}
Ch
:=
ReadKey
;
If Ch=#49 then vr:=10
else if Ch=#50 then vr := 1
else
goto
1;
clrscr ;
Writeln (' Cистема уравнеий для вычисления значения y,');
Writeln (' /');
Writeln (' | x*(3-x) , -1<= x <0');
Writeln (' y = < 1 , 0<= x <1');
Writeln (' | tg(2x) , 1<= x <=2');
Writeln (' \');
if vr = 1 then
begin
textcolor (LightRed);
Writeln(' для завершения нажмите "Esc", для продолжения любую клавишу');
Writeln ;
textcolor (LightGreen);
end
else Writeln ;
{-= выводим в табличном значении =-}
Writeln (' ==================');
Writeln (' = n = x = y =');
Writeln (' ==================');
dx := (X2-X1)/(N-1);
x
:=
X
1;
i := 1;
Repeat
{ на всякий случай пусть проверяет ;) }
if
((
x
<-1)
or
(
x
>2))
then
Writeln
('Значение вышло за пределы - ГЛЮК 8)')
else
Begin
if x<0 then y := x*(3-x)
else if x<1 then y := 1
else y := (sin(2*x*Pi/180)/cos(2*x*Pi/180));
Writeln (' =',i:3,'=',x:7:2,'=',y:7:2,'=');
x
:=
x
+
dx
;
i
:=
i
+1;
{проверка для пошагового режима}
if vr < 10 then
begin
Ch := ReadKey;
If Ch=#27 then goto 2;
end;
End
Until x>2;
Writeln (' ================== ');
Writeln ;
textcolor (LightRed);
Writeln(' для завершения нажмите "Esc", для повтора любую клавишу');
Writeln ;
textcolor (White);
Ch := ReadKey;
If Ch=#27 then goto 2;
goto 1;
2:
Writeln ('До свидания.');
Writeln ('Работу выполнил:');
Writeln ('К.Виктор гр. ЗРП-118 (210402) 2009г.');
end
Лабораторная работа 5.1
«Цикл с заданным числом повторений» (For..to..do)
Лабораторное задание
Задание 1. Изменить алгоритм и программу из лабораторной работы 4, используя вместо цикла с постусловием счетный цикл.
Алгоритм выполнения:
Текст программы:
Program lab5_1v8;
Uses
Crt ;
Label
1,2 ;
Const
X1=-1; X2=2; N=11;
var
y,x,dx: Real;
i: Integer;
ch: Char;
vr: Byte;
begin
1:
clrscr;
textcolor (11);
Writeln (' ЦИКЛ С ЗАДАННЫМ ЧИСЛОМ ПОВТОРЕНИЙ');
Writeln ;
Writeln (' Лабораторная работа № 5 (задания 1), 8-ой вариант');
Writeln (' Дано:');
Writeln (' Дана система уравнеий для вычисления значения y,');
Writeln (' /');
Writeln (' | x*(3-x) , -1<= x <0');
Writeln (' y = < 1 , 0<= x <1');
Writeln (' | tg(2x) , 1<= x <=2');
Writeln (' \');
Writeln (' При выводе значении tg(2x) - х является ГРАДУСОМ!');
Writeln ;
Writeln (' Значение x = [-1;2].');
Writeln (' Из диапазона x выбирается N значений, которые');
Writeln (' атоматически вычисляются, разбив промежуток на равные части.');
Writeln ;
textcolor (LightGreen);
Writeln ('Выберите вариант вывода значений:');
Writeln (' 1 - вывод всех значений');
Writeln (' 2 - пошаговый режим');
Writeln ('(нажмите соотв. цифру на клавиатуре)');
{Проверяем выбораный режим 49="1", 50="2"}
Ch := ReadKey;
If Ch=#49 then vr:=10
else if Ch=#50 then vr := 1
else goto 1;
clrscr ;
Writeln (' Cистема уравнеий для вычисления значения y,');
Writeln (' /');
Writeln (' | x*(3-x) , -1<= x <0');
Writeln (' y = < 1 , 0<= x <1');
Writeln (' | tg(2x) , 1<= x <=2');
Writeln (' \');
if vr = 1 then
begin
textcolor (LightRed);
Writeln(' для завершения нажмите "Esc", для продолжения любую клавишу');
Writeln ;
textcolor (LightGreen);
end
else Writeln ;
{-= выводим в табличном значении =-}
Writeln (' ==================');
Writeln (' = n = x = y =');
Writeln (' ==================');
dx := (X2-X1)/(N-1);
x := X1;
For i:=1 to N do
Begin
if x<0 then y := x*(3-x)
else if x<1 then y := 1
else y := (sin(2*x*Pi/180)/cos(2*x*Pi/180));
Writeln (' =',i:3,'=',x:7:2,'=',y:7:2,'=');
x := x+dx;
{проверка для пошагового режима}
if vr < 10 then
begin
Ch := ReadKey;
If Ch=#27 then goto 2;
end;
End;
Writeln (' ==================');
Writeln ;
textcolor (LightRed);
Writeln(' для завершения нажмите "Esc", для повтора любую клавишу');
Writeln ;
textcolor (White);
Ch := ReadKey;
If Ch=#27 then goto 2;
goto 1;
2:
Writeln ('До свидания.');
Writeln ('Работу выполнил:');
Writeln ('К.Виктор гр. ЗРП-118 (210402) 2009г.');
end.
Лабораторная работа 5.2
«Цикл с заданным числом повторений» (For..to..do)
Лабораторное задание
Задание 2. Для заданного х, числа слагаемых или п вычислить следующее.
Алгоритм выполнения:
Текст программы:
Program lab5_2v8;
Uses Crt ;
Label 1,2 ;
var
b,x,s: real;
a: Shortint;
ch: Char;
vr: Byte;
c,zn,zi,i,n : Longint;
begin
1:
clrscr;
textcolor (11);
Writeln (' ЦИКЛ С ЗАДАННЫМ ЧИСЛОМ ПОВТОРЕНИЙ');
Writeln ;
Writeln (' Лабораторная работа ь 5 (задания 2), 8-ой вариант');
Writeln (' Дано:');
Writeln (' Дана последовательность s,');
Writeln ;
Writeln (' x^2 x^4 x^6 x^n');
Writeln (' s = 1 - --- + --- - --- + ... ---');
Writeln (' 2! 4! 6! n!');
Writeln ;
Writeln (' Значение x и n надо ввести с клавиатуры.');
Writeln (' Где: x - не известная x');
Writeln (' n - кол-во решений (дробей)');
Writeln ;
Writeln (' *для примера x,n большими лучше не вводить ');
Writeln (' ограничение и переполнение не учитывается ');
Writeln (' т.к. это выходит за рамки данного задания* ');
Writeln ;
textcolor (LightGreen);
Write ('
Введите
занчение
х
нажмите
Enter: ');
Read (x);
Write ('
Введите
значенеи
n
нажмите
Enter: ');
Read (n);
Writeln ;
Writeln ('Выберите вариант вывода значений:');
Writeln (' 1 - вывод итогового значения s');
Writeln (' 2 - вывод значения s, для каждого решения');
Writeln ('(нажмите соотв. цифру на клавиатуре)');
{Проверяем выбораный режим 49="1" vr=10, 50="2" vr=1}
Ch := ReadKey;
If Ch=#49 then vr:=10
else if Ch=#50 then vr := 1
else goto 1;
clrscr ;
if vr = 1 then
begin
textcolor (LightRed);
Writeln ;
Writeln(' для завершения нажмите "Esc", для продолжения любую клавишу');
Writeln ;
textcolor (LightGreen);
end
else Writeln ;
Writeln (' x^2 x^4 x^6 x^n');
Writeln (' s = 1 - --- + --- - --- + ... ---');
Writeln (' 2! 4! 6! n!');
Writeln ;
{-= выводим в табличном значении =-}
Writeln (' ==================');
Writeln (' = решение = s при x = ', x:6:5);
Writeln (' ==================');
s := 1;
For i:=1 to n do
Begin
{проверяем на чётность и соответственно добавляем знак}
if odd(i) then a := -1 else a := 1;
{находим степень с}
c := 2*i;
{вычисляем факториал знаменателя - zn (n!)}
zn := 1; {zn - факториал в знаменателе}
For zi:=1 to c do zn := zn * zi;
{находим дробь - b = x^c / zn
!ПРИМЕЧАНИЕ так как отрицательное число под знаком логарифма приведёт к ошибке, дополнительно при вычислении избавляемся от знака "-". В нашём конкретном случае это не будет ошибкой т.к. при нашем задании степень ЧЕТНАЯ т.е. при любом значении x оно всегда будет чётное. Поэтому смело можно применять abs.}
b
:=
exp
(
c
*
ln
(
abs
(
x
)))/
zn
;
{находим результат s = s+a*b (= 1 - (x^n/n!) + .. - ..}
s := s+a*b ;
{проверка дял пошагового режима}
if vr < 10 then
begin
Writeln (' =',i:7,'=',s:7:5,' x^',c,'=',b*zn:7:5,' ',c,'!=',zn);
Ch := ReadKey;
If Ch=#27 then goto 2;
end;
End;
if vr = 10 then Writeln (' =',i:7,'=',s:7:5);
Writeln (' ==================');
Writeln ;
textcolor (LightRed);
Writeln(' для завершения нажмите "Esc", для повтора любую клавишу');
Writeln ;
textcolor (White);
Ch := ReadKey;
If Ch=#27 then goto 2;
goto 1;
2:
Writeln ('До свидания.');
Writeln ('Работу выполнил:');
Writeln ('К.Виктор гр. ЗРП-118 (210402) 2009г.');
end.
Лабораторная работа 10
«Графические средства» (модуль - Graph)
Лабораторное задание
Пользуясь, по возможности, процедурами: Bar, Bar3D, Line, Ellipse, FloodFill, написать программу рисования на экране Вашей фамилии.
Текст программы:
Program lab10v8;
Uses
Crt, Graph;
Label
1,2 ;
var
ch: Char;
GraphDriver, GraphMode : Integer;
dx, dy,dy2,dx2: Integer;
Color : Byte;
begin
1:
clrscr;
textcolor (11);
Writeln (' ГРАФИЧЕСКИЕ СРЕДСТВА');
Writeln ;
Writeln (' Лабораторная работа ь 10');
Writeln ;
Writeln (' Вывести на экран фамилию в графическом режиме.');
Writeln ;
textcolor (LightRed);
Writeln(' для завершения нажмите "Esc", для продолжения любую клавишу');
Writeln ;
textcolor (White);
Ch := ReadKey;
If Ch=#27 then goto 2;
GraphDriver := Detect;
GraphMode := 0; {640x480x16}
InitGraph (GraphDriver, GraphMode, 'C:\Pascal\Bp\Bgi');
if GraphResult <> grOk then Halt (1);
{начинаем рисовать}
dx := GetMaxX div 40;
dy := GetMaxY div 35;
dx2 := dx div 2;
dy2 := dy div 2;
Color := White;
SetColor (Color);
SetFillStyle (1,Color);
{Cкобки}
Bar (2*dx,2*dy,6*dx,3*dy);
Bar (2*dx,2*dy,3*dx,6*dy);
Bar (35*dx,10*dy,36*dx,13*dy);
Bar (32*dx,14*dy,36*dx,13*dy);
{-----}
{К}
SetFillStyle (7,green);
Line (4*dx,11*dy,4*dx,4*dy);
Line (4*dx,4*dy,5*dx,4*dy);
Line (5*dx,4*dy,5*dx,7*dy);
Line (5*dx,7*dy,7*dx,4*dy);
Line (8*dx,4*dy,7*dx,4*dy);
Line (8*dx,4*dy,5*dx+dx2,8*dy);
Line (5*dx+dx2,8*dy,8*dx,11*dy);
Line (8*dx,11*dy,7*dx,11*dy);
Line (7*dx,11*dy,5*dx,9*dy);
Line (5*dx,9*dy,5*dx,11*dy);
Line (5*dx,11*dy,4*dx,11*dy);
FloodFill { PutPixel} (5*dx,8*dy,Color);
{У}
SetFillStyle (2,Yellow);
Line (10*dx,6*dy,9*dx,6*dy);
Line (11*dx,9*dy,10*dx,6*dy);
Line (12*dx,6*dy,11*dx,9*dy);
Line (13*dx,6*dy,12*dx,6*dy);
Line (11*dx,11*dy,13*dx,6*dy);
Line (9*dx,11*dy,11*dx,11*dy);
Line (9*dx,11*dy,9*dx,10*dy);
Line (9*dx,10*dy,10*dx+dx2,10*dy);
Line (9*dx,6*dy,10*dx+dx2,10*dy);
FloodFill { PutPixel} (10*dx,8*dy,Color);
{З}
SetFillStyle (5,White);
Line (14*dx,7*dy,13*dx+dx2,6*dy+dx2);
Line (13*dx+dx2,6*dy+dx2,14*dx+dx2,5*dy+dx2);
Line (14*dx+dx2,5*dy+dy2,15*dx+dx2,5*dy+dy2);
Line (15*dx+dx2,5*dy+dy2,16*dx+dx2,6*dy+dy2);
Line (16*dx+dx2,6*dy+dy2,16*dx+dx2,7*dy+dy2);
Line (16*dx+dx2,7*dy+dy2,15*dx,8*dy+dy2);
Line (15*dx,8*dy+dy2,16*dx+dx2,9*dy);
Line (16*dx+dx2,9*dy,16*dx+dx2,10*dy+dy2);
Line (16*dx+dx2,10*dy+dy2,16*dx,11*dy);
Line (16*dx,11*dy,13*dx+dx2,11*dy);
Line (13*dx+dx2,11*dy,13*dx,10*dy+dy2);
Line (13*dx,10*dy+dy2,13*dx+dx2,10*dy);
Line (13*dx+dx2,10*dy,14*dx,10*dy+dy2);
Line (14*dx,10*dy+dy2,15*dx+dx2,10*dy+dy2);
Line (15*dx+dx2,10*dy+dy2,15*dx+dx2,9*dy+dy2);
Line (15*dx+dx2,9*dy+dy2,14*dx+dx2,9*dy);
Line (14*dx+dx2,9*dy,14*dx,8*dy+dy2);
Line (14*dx,8*dy+dy2,14*dx+dx2,8*dy);
Line (14*dx+dx2,8*dy,15*dx+dx2,7*dy+dy2);
Line (15*dx+dx2,7*dy+dy2,15*dx+dx2,6*dy+dy2);
Line (15*dx+dx2,6*dy+dy2,14*dx+dx2,6*dy+dy2);
Line (14*dx+dx2,6*dy+dy2,14*dx,7*dy);
FloodFill { PutPixel} (15*dx,9*dy,Color);
{Ю}
SetFillStyle (9,Magenta);
Line (17*dx,5*dy,18*dx,5*dy);
Line (18*dx,5*dy,18*dx,8*dy);
Line (19*dx,8*dy,18*dx,8*dy);
Line (19*dx,8*dy,19*dx,9*dy);
Line (18*dx,9*dy,19*dx,9*dy);
Line (18*dx,11*dy,18*dx,9*dy);
Line (17*dx,11*dy,18*dx,11*dy);
Line (17*dx,5*dy,17*dx,11*dy);
{Circle (20*dx,8*dy,7); }
FillEllipse (20*dx,8*dy,15,40);
FloodFill {PutPixel} (20*dx,8*dy,Color);
FloodFill {PutPixel} (18*dx,8*dy+dy2,Color);
{К}
SetFillStyle (9,Red);
Line (22*dx,5*dy,23*dx,5*dy);
Line (23*dx,5*dy,23*dx,7*dy);
Line (23*dx,7*dy,24*dx,5*dy);
Line (24*dx,5*dy,25*dx,5*dy);
Line (25*dx,5*dy,24*dx,8*dy);
Line (24*dx,8*dy,25*dx,11*dy);
Line (25*dx,11*dy,24*dx,11*dy);
Line (24*dx,11*dy,23*dx,9*dy);
Line (23*dx,9*dy,23*dx,11*dy);
Line (22*dx,11*dy,23*dx,11*dy);
Line (22*dx,5*dy,22*dx,11*dy);
FloodFill { PutPixel} (23*dx,8*dy,Color);
{О}
SetFillStyle (6,Blue);
Circle (27*dx,8*dy,10);
FillEllipse (27*dx,8*dy,20,40);
FloodFill { PutPixel} (27*dx,7*dy,Color);
{В}
SetFillStyle (4,Green);
Line (30*dx,5*dy,30*dx,11*dy);
Circle (31*dx+dx2,6*dy,7);
Circle (31*dx+dx2,9*dy,9);
Arc (31*dx, 6*dy+dy2, 330, 125, 25);
Arc (31*dx+dx2, 9*dy+dy2, 225, 64, 30);
FloodFill {PutPixel} (32*dx,10*dy,Color);
ReadKey;
CloseGraph;
2:
Writeln ('До свидания.');
Writeln ('Работу выполнил:');
Writeln ('К.Виктор гр. ЗРП-118 (210402) 2009г.');
end.
Результат выводимый на дисплей:
Список используемой литературы:
1. Алгоритмизация и программирование на языке паскаль. Методические указания к лабораторным работам. Омск 2005. Составитель Осипов Вадим Евгеньевич
2. Сухарёв М. Turbo Pascal 7.0, теория и практика программирования. – СПб: Наука и Техника, 2003. – 576 стр. с ил. Под редакцией М.В. Финкова ISBN 5-94387-062-8
Размещено на Allbest.ru
x := X1;
For i:=1 to N do
Begin
if x<0 then y := x*(3-x)
else if x<1 then y := 1
else y := (sin(2*x*Pi/180)/cos(2*x*Pi/180));
Writeln (' =',i:3,'=',x:7:2,'=',y:7:2,'=');
x := x+dx;
{проверка для пошагового режима}
if vr < 10 then
begin
Ch := ReadKey;
If Ch=#27 then goto 2;
end;
End;
Writeln (' ==================');
Writeln ;
textcolor (LightRed);
Writeln(' для завершения нажмите "Esc", для повтора любую клавишу');
Writeln ;
textcolor (White);
Ch := ReadKey;
If Ch=#27 then goto 2;
goto 1;
2:
Writeln ('До свидания.');
Writeln ('Работу выполнил:');
Writeln ('К.Виктор гр. ЗРП-118 (210402) 2009г.');
end.
Лабораторная работа 5.2
«Цикл с заданным числом повторений» (For..to..do)
Лабораторное задание
Задание 2. Для заданного х, числа слагаемых или п вычислить следующее.
|
Алгоритм выполнения:
Текст программы:
Program lab5_2v8;
Uses Crt ;
Label 1,2 ;
var
b,x,s: real;
a: Shortint;
ch: Char;
vr: Byte;
c,zn,zi,i,n : Longint;
begin
1:
clrscr;
textcolor (11);
Writeln (' ЦИКЛ С ЗАДАННЫМ ЧИСЛОМ ПОВТОРЕНИЙ');
Writeln ;
Writeln (' Лабораторная работа ь 5 (задания 2), 8-ой вариант');
Writeln (' Дано:');
Writeln (' Дана последовательность s,');
Writeln ;
Writeln (' x^2 x^4 x^6 x^n');
Writeln (' s = 1 - --- + --- - --- + ... ---');
Writeln (' 2! 4! 6! n!');
Writeln ;
Writeln (' Значение x и n надо ввести с клавиатуры.');
Writeln (' Где: x - не известная x');
Writeln (' n - кол-во решений (дробей)');
Writeln ;
Writeln (' *для примера x,n большими лучше не вводить ');
Writeln (' ограничение и переполнение не учитывается ');
Writeln (' т.к. это выходит за рамки данного задания* ');
Writeln ;
textcolor (LightGreen);
Write ('
Введите
занчение
х
нажмите
Enter: ');
Read (x);
Write ('
Введите
значенеи
n
нажмите
Enter: ');
Read (n);
Writeln ;
Writeln ('Выберите вариант вывода значений:');
Writeln (' 1 - вывод итогового значения s');
Writeln (' 2 - вывод значения s, для каждого решения');
Writeln ('(нажмите соотв. цифру на клавиатуре)');
{Проверяем выбораный режим 49="1" vr=10, 50="2" vr=1}
Ch := ReadKey;
If Ch=#49 then vr:=10
else if Ch=#50 then vr := 1
else goto 1;
clrscr ;
if vr = 1 then
begin
textcolor (LightRed);
Writeln ;
Writeln(' для завершения нажмите "Esc", для продолжения любую клавишу');
Writeln ;
textcolor (LightGreen);
end
else Writeln ;
Writeln (' x^2 x^4 x^6 x^n');
Writeln (' s = 1 - --- + --- - --- + ... ---');
Writeln (' 2! 4! 6! n!');
Writeln ;
{-= выводим в табличном значении =-}
Writeln (' ==================');
Writeln (' = решение = s при x = ', x:6:5);
Writeln (' ==================');
s := 1;
For i:=1 to n do
Begin
{проверяем на чётность и соответственно добавляем знак}
if odd(i) then a := -1 else a := 1;
{находим степень с}
c := 2*i;
{вычисляем факториал знаменателя - zn (n!)}
zn := 1; {zn - факториал в знаменателе}
For zi:=1 to c do zn := zn * zi;
{находим дробь - b = x^c / zn
!ПРИМЕЧАНИЕ так как отрицательное число под знаком логарифма приведёт к ошибке, дополнительно при вычислении избавляемся от знака "-". В нашём конкретном случае это не будет ошибкой т.к. при нашем задании степень ЧЕТНАЯ т.е. при любом значении x оно всегда будет чётное. Поэтому смело можно применять abs.}
b
:=
exp
(
c
*
ln
(
abs
(
x
)))/
zn
;
{находим результат s = s+a*b (= 1 - (x^n/n!) + .. - ..}
s := s+a*b ;
{проверка дял пошагового режима}
if vr < 10 then
begin
Writeln (' =',i:7,'=',s:7:5,' x^',c,'=',b*zn:7:5,' ',c,'!=',zn);
Ch := ReadKey;
If Ch=#27 then goto 2;
end;
End;
if vr = 10 then Writeln (' =',i:7,'=',s:7:5);
Writeln (' ==================');
Writeln ;
textcolor (LightRed);
Writeln(' для завершения нажмите "Esc", для повтора любую клавишу');
Writeln ;
textcolor (White);
Ch := ReadKey;
If Ch=#27 then goto 2;
goto 1;
2:
Writeln ('До свидания.');
Writeln ('Работу выполнил:');
Writeln ('К.Виктор гр. ЗРП-118 (210402) 2009г.');
end.
Лабораторная работа 10
«Графические средства» (модуль - Graph)
Лабораторное задание
Пользуясь, по возможности, процедурами: Bar, Bar3D, Line, Ellipse, FloodFill, написать программу рисования на экране Вашей фамилии.
Текст программы:
Program lab10v8;
Uses
Crt, Graph;
Label
1,2 ;
var
ch: Char;
GraphDriver, GraphMode : Integer;
dx, dy,dy2,dx2: Integer;
Color : Byte;
begin
1:
clrscr;
textcolor (11);
Writeln (' ГРАФИЧЕСКИЕ СРЕДСТВА');
Writeln ;
Writeln (' Лабораторная работа ь 10');
Writeln ;
Writeln (' Вывести на экран фамилию в графическом режиме.');
Writeln ;
textcolor (LightRed);
Writeln(' для завершения нажмите "Esc", для продолжения любую клавишу');
Writeln ;
textcolor (White);
Ch := ReadKey;
If Ch=#27 then goto 2;
GraphDriver := Detect;
GraphMode := 0; {640x480x16}
InitGraph (GraphDriver, GraphMode, 'C:\Pascal\Bp\Bgi');
if GraphResult <> grOk then Halt (1);
{начинаем рисовать}
dx := GetMaxX div 40;
dy := GetMaxY div 35;
dx2 := dx div 2;
dy2 := dy div 2;
Color := White;
SetColor (Color);
SetFillStyle (1,Color);
{Cкобки}
Bar (2*dx,2*dy,6*dx,3*dy);
Bar (2*dx,2*dy,3*dx,6*dy);
Bar (35*dx,10*dy,36*dx,13*dy);
Bar (32*dx,14*dy,36*dx,13*dy);
{-----}
{К}
SetFillStyle (7,green);
Line (4*dx,11*dy,4*dx,4*dy);
Line (4*dx,4*dy,5*dx,4*dy);
Line (5*dx,4*dy,5*dx,7*dy);
Line (5*dx,7*dy,7*dx,4*dy);
Line (8*dx,4*dy,7*dx,4*dy);
Line (8*dx,4*dy,5*dx+dx2,8*dy);
Line (5*dx+dx2,8*dy,8*dx,11*dy);
Line (8*dx,11*dy,7*dx,11*dy);
Line (7*dx,11*dy,5*dx,9*dy);
Line (5*dx,9*dy,5*dx,11*dy);
Line (5*dx,11*dy,4*dx,11*dy);
FloodFill { PutPixel} (5*dx,8*dy,Color);
{У}
SetFillStyle (2,Yellow);
Line (10*dx,6*dy,9*dx,6*dy);
Line (11*dx,9*dy,10*dx,6*dy);
Line (12*dx,6*dy,11*dx,9*dy);
Line (13*dx,6*dy,12*dx,6*dy);
Line (11*dx,11*dy,13*dx,6*dy);
Line (9*dx,11*dy,11*dx,11*dy);
Line (9*dx,11*dy,9*dx,10*dy);
Line (9*dx,10*dy,10*dx+dx2,10*dy);
Line (9*dx,6*dy,10*dx+dx2,10*dy);
FloodFill { PutPixel} (10*dx,8*dy,Color);
{З}
SetFillStyle (5,White);
Line (14*dx,7*dy,13*dx+dx2,6*dy+dx2);
Line (13*dx+dx2,6*dy+dx2,14*dx+dx2,5*dy+dx2);
Line (14*dx+dx2,5*dy+dy2,15*dx+dx2,5*dy+dy2);
Line (15*dx+dx2,5*dy+dy2,16*dx+dx2,6*dy+dy2);
Line (16*dx+dx2,6*dy+dy2,16*dx+dx2,7*dy+dy2);
Line (16*dx+dx2,7*dy+dy2,15*dx,8*dy+dy2);
Line (15*dx,8*dy+dy2,16*dx+dx2,9*dy);
Line (16*dx+dx2,9*dy,16*dx+dx2,10*dy+dy2);
Line (16*dx+dx2,10*dy+dy2,16*dx,11*dy);
Line (16*dx,11*dy,13*dx+dx2,11*dy);
Line (13*dx+dx2,11*dy,13*dx,10*dy+dy2);
Line (13*dx,10*dy+dy2,13*dx+dx2,10*dy);
Line (13*dx+dx2,10*dy,14*dx,10*dy+dy2);
Line (14*dx,10*dy+dy2,15*dx+dx2,10*dy+dy2);
Line (15*dx+dx2,10*dy+dy2,15*dx+dx2,9*dy+dy2);
Line (15*dx+dx2,9*dy+dy2,14*dx+dx2,9*dy);
Line (14*dx+dx2,9*dy,14*dx,8*dy+dy2);
Line (14*dx,8*dy+dy2,14*dx+dx2,8*dy);
Line (14*dx+dx2,8*dy,15*dx+dx2,7*dy+dy2);
Line (15*dx+dx2,7*dy+dy2,15*dx+dx2,6*dy+dy2);
Line (15*dx+dx2,6*dy+dy2,14*dx+dx2,6*dy+dy2);
Line (14*dx+dx2,6*dy+dy2,14*dx,7*dy);
FloodFill { PutPixel} (15*dx,9*dy,Color);
{Ю}
SetFillStyle (9,Magenta);
Line (17*dx,5*dy,18*dx,5*dy);
Line (18*dx,5*dy,18*dx,8*dy);
Line (19*dx,8*dy,18*dx,8*dy);
Line (19*dx,8*dy,19*dx,9*dy);
Line (18*dx,9*dy,19*dx,9*dy);
Line (18*dx,11*dy,18*dx,9*dy);
Line (17*dx,11*dy,18*dx,11*dy);
Line (17*dx,5*dy,17*dx,11*dy);
{Circle (20*dx,8*dy,7); }
FillEllipse (20*dx,8*dy,15,40);
FloodFill {PutPixel} (20*dx,8*dy,Color);
FloodFill {PutPixel} (18*dx,8*dy+dy2,Color);
{К}
SetFillStyle (9,Red);
Line (22*dx,5*dy,23*dx,5*dy);
Line (23*dx,5*dy,23*dx,7*dy);
Line (23*dx,7*dy,24*dx,5*dy);
Line (24*dx,5*dy,25*dx,5*dy);
Line (25*dx,5*dy,24*dx,8*dy);
Line (24*dx,8*dy,25*dx,11*dy);
Line (25*dx,11*dy,24*dx,11*dy);
Line (24*dx,11*dy,23*dx,9*dy);
Line (23*dx,9*dy,23*dx,11*dy);
Line (22*dx,11*dy,23*dx,11*dy);
Line (22*dx,5*dy,22*dx,11*dy);
FloodFill { PutPixel} (23*dx,8*dy,Color);
{О}
SetFillStyle (6,Blue);
Circle (27*dx,8*dy,10);
FillEllipse (27*dx,8*dy,20,40);
FloodFill { PutPixel} (27*dx,7*dy,Color);
{В}
SetFillStyle (4,Green);
Line (30*dx,5*dy,30*dx,11*dy);
Circle (31*dx+dx2,6*dy,7);
Circle (31*dx+dx2,9*dy,9);
Arc (31*dx, 6*dy+dy2, 330, 125, 25);
Arc (31*dx+dx2, 9*dy+dy2, 225, 64, 30);
FloodFill {PutPixel} (32*dx,10*dy,Color);
ReadKey;
CloseGraph;
2:
Writeln ('До свидания.');
Writeln ('Работу выполнил:');
Writeln ('К.Виктор гр. ЗРП-118 (210402) 2009г.');
end.
Результат выводимый на дисплей:
|
Список используемой литературы:
1. Алгоритмизация и программирование на языке паскаль. Методические указания к лабораторным работам. Омск 2005. Составитель Осипов Вадим Евгеньевич
2. Сухарёв М. Turbo Pascal 7.0, теория и практика программирования. – СПб: Наука и Техника, 2003. – 576 стр. с ил. Под редакцией М.В. Финкова ISBN 5-94387-062-8
Размещено на Allbest.ru