Основы программирования на языке Delphi
Основы языка Object Pascal. Примеры простейших программ на языке Delphi с использованием: линейных, разветвляющихся и циклических алгоритмов, массивов, подпрограмм и модулей. Способы организации ветвящихся и циклических вычислительных процессов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 03.09.2013 |
Размер файла | 548,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
1. Программирование линейных алгоритмов
Цель работы: Изучить основы языка Object Pascal. Научиться составлять программы в среде DELPHI.
Задание: По указанию преподавателя выберите индивидуальное задание. Установите необходимое количество окон TEdit и меток TLabel. Выберите необходимые типы переменных и функции их преобразования при вводе и выводе данных. Для проверки правильности написания программы введите указанные в задании значения x, y и z - результат должен быть равен s.
.
При x=17.421, y=10.365ґ10-3, z=0.828ґ105 s=0.33056.
Вид формы
Текст программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, Math;
type
TForm1 = class(TForm)
Label2: TLabel;
Edit1: TEdit;
Memo1: TMemo;
Button1: TButton;
Edit3: TEdit;
Label1: TLabel;
Edit2: TEdit;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x,y,z,s: real;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
x:=StrToFloat(Edit1.Text);
y:=StrToFloat(Edit2.Text);
z:=StrToFloat(Edit3.Text);
s:=power(y+power(x-1,1/3),1/4)/(abs(x-y)*(sqr(sin(z))+tan(z)));
Memo1.Lines.Add('Результат s='+FloatToStrF(s,fffixed,8,5));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='17,421';
Edit2.Text:='10,365e-3';
Edit3.Text:='0,828e5';
end;
end.
Выводы: Изучены основы языка Object Pascal. Научились составлять программы в среде DELPHI.
2. Программирование разветвляющихся алгоритмов
Цель работы: изучить способы организации ветвящихся вычислительных процессов. Написать и отладить программу разветвляющегося алгоритма.
Задание: По указанию преподавателя выберите индивидуальное задание. В качестве f(x) использовать по выбору: Sin(x), Cos(x) или Tg(x). Отредактируйте вид формы и текст программы, в соответствии с полученным заданием.
.
Вид формы
Текст программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, Math, ExtCtrls;
type
TForm1 = class(TForm)
Label2: TLabel;
Edit1: TEdit;
Memo1: TMemo;
Button1: TButton;
Label1: TLabel;
Edit2: TEdit;
RadioGroup1: TRadioGroup;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x,y,f,s: real;
st: String;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
x:=StrToFloat(Edit1.Text);
y:=StrToFloat(Edit2.Text);
Case RadioGroup1.ItemIndex of
0: f:=sin(x);
1: f:=cos(x);
2: f:=tan(x);
End;
If f<10 Then
s:=3*power(x,y)+sqrt(sin(y))
Else If f<12 Then
s:=sin(x)*2*tan(x*y)
Else
s:=cos(x)+sqr(ln(y));
Memo1.Lines.Add('Результат s= '+FloatToStrF(s,ffGeneral,8,3));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='10';
Edit2.Text:='3';
RadioGroup1.ItemIndex:=0;
end;
end.
Выводы: Изучены способы организации ветвящихся вычислительных процессов. Написана и отлажена программа разветвляющегося алгоритма.
3. Программирование циклических алгоритмов
Цель работы: изучить способы организации циклических вычислительных процессов.
Задание: Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) для x изменяющихся от xn до xk с заданным количеством шагов n (). Близость значений S(x) и Y(x) во всем диапазоне значений x указывает на правильность вычисления S(x) и Y(x).
После написания программы и исправления ошибок трансляции изучите средства отладки программ (см. прилож.), для чего установите курсор на первый оператор и нажмите клавишу F4. После этого, нажимая клавишу F7, выполните пошагово программу и проследите, как меняются все переменные в процессе выполнения.
S(x) |
n |
Y(x) |
|||
-2 |
-0.1 |
300 |
Вид формы
Текст программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, Math;
type
TForm1 = class(TForm)
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Label3: TLabel;
Memo1: TMemo;
Button1: TButton;
Edit3: TEdit;
Label1: TLabel;
Edit4: TEdit;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x,xn,xk,h,s,y: real;
i,m:integer;
const pi = 3.14159265;
implementation
{$R *.dfm}
function fact(n: integer): extended;
var i: integer;
f: extended;
begin
if n<2 then fact:=1
else begin
f:=1;
for i:=1 to n do f:=f*i;
fact:=f;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var k, n: integer;
a,b,h,s,x,y: extended;
begin
Memo1.Clear;
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
h:=StrToFloat(Edit3.Text);
n:=StrToInt(Edit4.Text);
x:=a;
repeat
s:=0;
a:=0;
for k:=0 to n do begin
a:=power(-1,k)*power(2*x,2*k)/fact(2*k+1);
s:=s+a;
end;
y:=sin(x)/x;
Memo1.Lines.Add(' при x='+FloatToStrF(x,ffFixed,4,2)+' y='+
FloatToStrF(y,ffFixed,8,4)+' s='+FloatToStrF(y,ffFixed,8,4));
x:=x+h;
until (x>b+h/2); // Добавляется h/2 для вывода последнего элемента
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Clear;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear;
Edit1.Text:='-2';
Edit2.Text:='-0,1';
Edit3.Text:='0,1';
Edit4.Text:='300';
end;
end.
Выводы: Изучены способы организации циклических вычислительных процессов. программа delphi алгоритм массив
4. Программирование с использованием массивов
Цель работы: изучить свойства компонента TStringGrid. Написать программу с использованием массивов.
Задание: По указанию преподавателя выберите вариант задачи. Во всех заданиях переменные вводить и выводить с помощью компонента TEdit, массивы - c помощью компонента TStringGrid, в котором 0-й столбец и 0-ю строку использовать для отображения индексов массивов. Вычисления выполнять, после нажатия кнопки типа TВutton.
Задан двухмерный массив целых чисел A размером N на M, состоящий из нулей и единиц. Найти количество нулей и единиц в этом массиве.
Вид формы
Текст программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
StringGrid1: TStringGrid;
Button2: TButton;
Memo1: TMemo;
Label1: TLabel;
Label2: TLabel;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Const
Nmax=100; // Максимальный размер массива
Type // Объявление типа одномерного массива
Mas = Array [1..Nmax,1..Nmax]of Extended; // размерностью Nmax
Var
Form1: TForm1;
A:Mas; // Объявление одномерного массива
i, j, n, m: Byte;
T: Extended;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear;
n:=4; // Число строк в массиве
m:=4; // Число столбцов в массиве
Edit1.Text:='4';
Edit2.Text:='4';
StringGrid1.Cells [0,0]:='A';
for i:=1 to n do StringGrid1.Cells [0,i]:='i='+IntToStr(i);
for j:=1 to m do StringGrid1.Cells [j,0]:='j='+IntToStr(j);
end;
procedure TForm1.Button1Click(Sender: TObject); // Изменить размер
begin
n:=StrToInt(Edit1.Text); // Число строк в массиве
m:=StrToInt(Edit2.Text); // Число столбцов в массиве
{Задание числа строк и столбцов в таблице}
StringGrid1.RowCount:=N+1;
StringGrid1.ColCount:=M+1;
for i:=1 to n do StringGrid1.Cells [0,i]:='i='+IntToStr(i);
for j:=1 to m do StringGrid1.Cells [j,0]:='j='+IntToStr(j);
end;
procedure TForm1.Button2Click(Sender: TObject);
var sum: extended;
nul, odin: integer;
begin
Memo1.Clear;
nul:=0;
odin:=0;
{Заполнение массива А элементами из таблицы StringGrid1}
for i:=1 to n do
for j:=1 to m do begin
A [i,j]:=StrToInt(StringGrid1.Cells [j,i]);
{Расчет}
if A [i,j]=0 then nul:=nul+1
else if A [i,j]=1 then odin:=odin+1
end;
{ Вывод результата }
Memo1.Lines.Add('Количество нулей = ' + IntToStr(nul));
Memo1.Lines.Add('Количество единиц = ' + IntToStr(odin));
end;
end.
Выводы: Изучены свойства компонента TStringGrid. Написана программа с использованием массивов.
5. Программирование с использованием подпрограмм и модулей
Цель работы: изучить возможности DELPHI для написания подпрограмм и создания модулей. Составить и отладить программу, использующую внешний модуль UNIT с подпрограммой.
Задание: По указанию преподавателя выберите вариант задачи. Составьте программу, оформив вычисления в виде подпрограммы (процедуры или функции). В головной программе произвести ввод исходных данных, вызов подпрограммы и вывод результатов.
Задана матрица размером NxM. Определить K - количество "особых" элементов матрицы, считая, что элемент "особый", если он больше суммы остальных элементов своего столбца.
Вид формы
Текст программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids, MyMath;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
StringGrid1: TStringGrid;
Button2: TButton;
Memo1: TMemo;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Const
Nmax=100; // Максимальный размер массива
Var
Form1: TForm1;
A: TMas; // Объявление одномерного массива
i, j, n, m: Byte;
T: Extended;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear;
n:=4; // Число строк в массиве
m:=4; // Число столбцов в массиве
Edit1.Text:='4';
Edit2.Text:='4';
StringGrid1.Cells [0,0]:='A';
for i:=1 to n do StringGrid1.Cells [0,i]:='i='+IntToStr(i);
for j:=1 to m do StringGrid1.Cells [j,0]:='j='+IntToStr(j);
end;
procedure TForm1.Button1Click(Sender: TObject); // Изменить размер
begin
n:=StrToInt(Edit1.Text); // Число строк в массиве
m:=StrToInt(Edit2.Text); // Число столбцов в массиве
{Задание числа строк и столбцов в таблице}
StringGrid1.RowCount:=n+1;
StringGrid1.ColCount:=m+1;
for i:=1 to n do StringGrid1.Cells [0,i]:='i='+IntToStr(i);
for j:=1 to m do StringGrid1.Cells [j,0]:='j='+IntToStr(j);
end;
procedure TForm1.Button2Click(Sender: TObject);
var kol: integer;
sum: extended;
begin
Memo1.Clear;
{Заполнение массива А элементами из таблицы StringGrid1}
for i:=1 to n do
for j:=1 to m do
A [i,j]:=StrToInt(StringGrid1.Cells [j,i]);
{Расчет}
Matric(A, n, m, Memo1);
end;
end.
Текст модуля MyMath
unit MyMath;
interface
uses SysUtils, StdCtrls;
type TMas = array [1..10, 1..10]of extended;
Procedure Matric(A: TMas; n: integer; m: integer; Memo1: TMemo);
implementation
Procedure Matric(A: TMas; n: integer; m: integer; Memo1: TMemo);
var i,j,kol: integer;
sum: Extended;
st: string;
begin
kol:=0;
for i:=1 to n do begin
sum:=0;
for j:=1 to m do
sum:=sum+A [i,j];
for j:=1 to m do
if A [i,j]>sum-A [i,j]then inc(kol);
end;
Memo1.Lines.Add('Количество "особых" элементов = ' + IntToStr(kol));
end;
end.
Выводы: Изучены возможности DELPHI для написания подпрограмм и создания модулей. Составлена и отлажена программа, использующая внешний модуль UNIT с подпрограммой.
Размещено на Allbest.ru
Подобные документы
Разработка программы обработки типизированных файлов с кодом на языке Object Pascal, с использованием компонентов Delphi для ввода и вывода данных. Разработка экранных форм и алгоритма программы. Описание программных модулей и инструкция оператору.
курсовая работа [1,5 M], добавлен 08.02.2011Особенности и тонкости программирования в среде Delphi. Специфика перехода от алгоритмического решения к непосредственной программной реализации на языке Object Pascal с использованием всех необходимых средств данного языка. Анализ полученных результатов.
реферат [246,2 K], добавлен 17.11.2012Разработка простейших линейных алгоритмов (составление логических выражений), программ с ветвлениями, циклических программ и составление их блок-схем. Практическое выполнение обработки массивов на примере вычисления элементов квадратной матрицы.
контрольная работа [173,3 K], добавлен 01.03.2010Основные понятия и структура обработчика на языке Pascal. Элективные курсы по информатике в системе профильного обучения. Элективный курс "Программирование в среде Delphi". Методические материалы по изучению программирования на языке Object Pascal.
методичка [55,4 K], добавлен 08.12.2010Создание Windows-приложения на алгоритмическом языке Object Pascal в среде визуального программирования Delphi, которое, как планируется, будет обеспечивать решение специализированных задач по формированию, обработке на ЭВМ и выводу информации.
курсовая работа [967,6 K], добавлен 20.05.2008Методы грамматического разбора. Разработка структуры учебного транслятора на базовом языке программирования Object Pascal в среде объектно-ориентированного визуального программирования Borland DELPHI 6.0 с использованием операционной системы Windows XP.
курсовая работа [493,8 K], добавлен 12.05.2013Структура и основные элементы языка Turbo Pascal. Алгоритм составления простейших программ на Turbo Pascal. Применение условного оператора и сильноветвящихся алгоритмов. Циклы с предусловием и постусловием, сочетание циклических и условных операторов.
реферат [64,0 K], добавлен 20.03.2016Решение задач с помощью языка программирования Delphi: вычисление значения функции Y от X; систем двух уравнений; прогрессий; последовательностей; вычисление числа с определенной точностью; перевод числа из десятичной в восьмеричную систему счисления.
отчет по практике [83,8 K], добавлен 08.06.2010Организация файлов и доступ к ним. Файловые операции. Программирование с использованием встроенных функций ввода-вывода; линейных, разветвляющихся и циклических вычислительных процессов с использованием If-else, оператора выбора Case; массивов и матриц.
курсовая работа [5,8 M], добавлен 24.05.2014Характеристика вычислительной системы и инструментов разработки. Программирование на языке Pascal в среде Turbo Pascal и на языке Object Pascal в среде Delphi. Использование процедур, функций, массивов, бинарного поиска. Создание базы данных в виде файла.
отчет по практике [2,1 M], добавлен 02.05.2014