Файл: Зотов Методичка Delphi.doc

Добавлен: 20.10.2018

Просмотров: 1842

Скачиваний: 21

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

САНКТ–ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

МОРСКОЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ


Кафедра судовой автоматики и измерений










ЛАБОРАТОРНЫЙ ПРАКТИКУМ ПО ДИСЦИПЛИНЕ «ИНФОРМАТИКА»

ЧАСТЬ 1. ПРОГРАММИРОВАНИЕ



Методические указания











Санкт-Петербург

2012


Методические указания предназначены для изучения приемов программирования на одном из языков высокого уровня. Главное внимание уделено решению задач, относящихся к вычислительным алгоритмам. Практикум состоит из ряда тем, по которым выполняются лабораторные работы на ЭВМ. Указания содержат пример оформления отчета по лабораторной работе и набор задач для самостоятельного решения по каждой теме.

Методические указания могут быть использованы студентами всех специальностей при изучении дисциплин «Информатика», «Вычислительная техника и программирование», «Языки программирования» в соответствии с учебными планами третьего поколения.


ПШЕНИЧНАЯ

Клавдия Викторовна


ЗОТОВ

Андрей РОСТИСЛАВОВИЧ




ЛАБОРАТОРНЫЙ ПРАКТИКУМ ПО ДИСЦИПЛИНЕ «ИНФОРМАТИКА»

ЧАСТЬ 1. ПРОГРАММИРОВАНИЕ


Методические указания

СПбГМТУ

2012


Редактор


ОБЩИЕ УКАЗАНИЯ

Целью выполнения лабораторных работ по дисциплинам «Информатика», «Вычислительная техника и программирование», «Языки программирования» является изучение одного из языков программирования высокого уровня, приобретение навыков самостоятельной разработки и отладки программ.

Лабораторные работы проводятся по следующим темам:

- Программирование линейных алгоритмов.

- Программирование разветвляющихся алгоритмов.

- Программирование циклических алгоритмов. Табулирование функции.

- Программирование циклических алгоритмов. Вложенные циклы.

- Циклическая обработка одномерных массивов.

- Циклическая обработка двумерных массивов.

- Подпрограммы. Использование функций.

- Подпрограммы. Использование процедур.

- Подпрограммы. Использование подпрограмм для обработки массивов.

Программы по каждой теме разрабатываются либо в виде консольного приложения, либо в виде приложения Windows.

Лабораторные работы выполняются по вариантам. Цель каждой работы и общая для всех вариантов постановка задачи сформулированы до перечня вариантов.


Рекомендуется следующий порядок подготовки и выполнения лабораторных работ.

1. Изучение соответствующих элементов языка программирования с использованием материалов лекций и рекомендуемой литературы, например, [1].

2. Анализ задачи и разработка алгоритма ее решения. (Алгоритм может быть представлен как на псевдокоде, так и в виде схемы алгоритма).

3. Разработка программы.

4. Отладка и тестирование программы.

5. Подготовка отчета по лабораторной работе.

6. Защита лабораторной работы.


После выполнения всех лабораторных работ рекомендуется ознакомиться с пособиями [2], [3], в которых на конкретных примерах из судостроения подробно разобран процесс решения реальных инженерных задач на ЭВМ.

Ниже представлены пример отчета по лабораторной работе, и варианты задач для самостоятельного решения по основным темам курса. В ряде случаев варианты представляют из себя переработанные материалы [4]. При подборе примеров использовались также другие источники, например [5].

ПрИМЕР ОТЧЕТА ПО ЛАБОРАТОРНОЙ РАБОТЕ

Основная часть отчета должна содержать следующие разделы:

  1. Постановка задачи.

  2. Метод решения и алгоритм.

  3. Программа.

  4. Результаты тестирования и выполнения программы.

  5. Заключение.

1. Постановка задачи

1.1. Исходное условие

Вычислить корни квадратного уравнения

    1. Уточнение постановки задачи

Исходные данные: вещественные коэффициенты уравнения а, b, с.

Результаты: два вещественных корня х1 и х2 или вещественная α и мнимая β части двух комплексно-сопряженных корней.

2. Метод решения и алгоритм

2.1. Метод решения

Если d= b2-4ac0, корни определяются по формулам:


.

Если d = b2-4ac<0, корни определяются по формулам:

, .


2.2. Алгоритм

Алгоритм решения задачи включает одну алгоритмическую единицу (назовем ее Roots) и может быть представлен в следующем виде.



Алгоритм Roots

переменные

a, b, c : вещ; {входные параметры}

х1, х2 : вещ; {выходные параметры – вещественные корни}

α, β : вещ; {выходные параметры- вещ. И мнимая части

комплексно-сопряженных корней }

d : вещ; {вспомогательный параметр}

начало

ввести (a, b, c);

если d 0

то х1: = (-b + )/2a ; х2: = (-b - )/2a ;

вывести (‘корни вещественные’, х1, х2 )

иначе α: = -b/2a ; ß: = /2a ;

вывести (‘корни комплексно-сопряженные ’,

α, ‘+j’, β, α, ‘-j’, β)

ке

конец

Учитывая дальнейшую программную реализацию, представим объекты алгоритма в виде таблицы.

Объекты алгоритма

Имена

Описания

Алгоритм

Программа

a

a

Входной, вещ.

B

b

Входной, вещ.

C

c

Входной, вещ.

D

d

Вспомогательный, вещ.

X1

x1

Выходной, вещ.

X2

x2

Выходной, вещ.

Α

Alfa

Выходной, вещ.

Β

Beta

Выходной, вещ.


3. Программа

3.1. Интерфейс



3.2. Программа на языке Delphi

procedure TForm1.Button1Click(Sender: TObject);

{-------------------------------------------------------------------------}

{--- Вычисление корней квадратного уравнения ---}

{--- Входные параметры: ---}

{--- a, b, c - коэффициенты уравнения ---}

{--- Выходные параметры: ---}

{--- х1, х2 - вещественные корни ---}

{--- или ---}

{--- Alfa, Beta - вещественная и мнимая ---}

{--- части комплексно-сопряженных корней ---}

{-----------------------------------------------------------------------}

Var

a,b,c : real; { коэффициенты уравнения }

x1, x2 : real; { вещественные корни }

Alfa, Beta : real; { вещественная и мнимая части }

d : real; { рабочая переменная }

Begin

{Ввод исходных данных}

a:= StrToFloat(Edit1.Text);

b:= StrToFloat(Edit2.Text);

c:= StrToFloat(Edit3.Text);



{Вычисления}

d := b*b - 4.0*a*c;

if d >=0.0

then begin

x1 := ( - b + sqrt (d) ) / (2.0 * a) ;

x2 := ( -b - sqrt (d) ) / (2.0 * a) ;

Label4.Caption := 'Корни вещественные:' + #13 +

'х1= '+ FloatToStr(x1) + #13 +

'х2= '+ FloatToStr(x2);

end

else begin

Alfa := - b / (2.0 *a) ;

Beta := sqrt (abs (d)) / (2.0 *a) ;

Label4.Caption := 'Корни комплексно-сопряженныe:' + #13 +

'х1= '+ FloatToStr(Alfa) + '+ ' + FloatToStr(Beta) + ' j' + #13 +



'х2= '+ FloatToStr(Alfa) + '- ' + FloatToStr(Beta) + ' j';

end;

end;



4. Результаты тестирования и выполнения программы

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


Исходные данные: а = 1.00 b = 0.00 c = -1.00.

Результаты: Корни вещественные: х1= 1.00 х2 = -1.00.


Исходные данные: а = 1.00 b = 0.00 c = 1.00.

Результаты: Корни комплексно-сопряженные:

х1= 0.00 + 1.00 j х2= 0.00 – 1.00 j.


Исходные данные: а = 1.00 b = -2.00 c = 1.00.

Результаты: Корни вещественные: х1= 1.00 х2= 1.00.


Исходные данные: а = 1.00 b = -4.00 c = 5.00.

Результаты: Корни комплексно-сопряженные:

х1= 2.00 + 1.00 j х2= 2.00 – 1.00 j




5. Заключение

Программа проверена. Решение задачи закончено.




ЛАБОРАТОРНАЯ работа 1. Программирование линейных алгоритмов

Цель работы: приобретение практических навыков составления и отладки программ, реализующих ввод и вывод информации и вычисление значений арифметических выражений.

Задания

Общая постановка задачи:

Разработать алгоритм и программу для ввода значений аргументов и вычисления значений функций. Протестировать программу для нескольких значений аргументов.

Программа должна быть представлена в нескольких вариантах: с использованием готовой операции или процедуры возведения в степень и без её использования.


Варианты:

1.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

2.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

3.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

4.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

5.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

6.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

7.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

8.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

9.

Заданы аргументы x, y, u, v.

Вычислить значения функций a, b.

10.

Заданы аргументы x, y, u, v.

Вычислить значения функций a, b.

11.

Заданы аргументы x, y, u.

Вычислить значения функций a, b.

12.

Заданы аргументы x, y, u, v.

Вычислить значения функций a, b.

13.

Заданы аргументы x, y, u, v.

Вычислить значения функций a, b.

14.

Заданы аргументы x, y, u, v.

Вычислить значения функций a, b.

15.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

16.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

17.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

18.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

19.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

20.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

21.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

22.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

23.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

24.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

25.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

26.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

27.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

28.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

29.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.

30.

Заданы аргументы x, y, z.

Вычислить значения функций a, b.