
- •Содержание
- •1. Введение 7
- •2. Основные этапы развития технологии программирования. 8
- •3. Практическое задание по алгоритмизации и программированию в среде Delphi. 18
- •Implementation 28
- •Var I:integer; 28
- •Var I,j:integer; 29
- •Var I,j,k:integer; 29
- •4. Разработка тестовых заданий. 30
- •5. Заключение. 33
- •6. Список используемых источников 34
- •Введение
- •Основные этапы развития технологии программирования.
- •2.1. Первый этап: «стихийное» программирование (50-60-е годы)
- •2.2. Второй этап: структурный подход к программированию (60-70-е годы)
- •2.3. Третий этап: объектный подход к программированию (с середины 80-х до конца 90-х годов XX в.)
- •2.4. Четвертый этап: компонентный подход и case-технологии (с середины 90-х годов до нашего времени)
- •3. Практическое задание по алгоритмизации и программированию в среде Delphi. Вариант 1.
- •Постановка задачи 1.
- •Анализ задачи составление блок-схем.
- •Процедура для расчета.
- •3.3. Разработка схемы интерфейса.
- •Листинг кода программы.
- •Interface
- •Implementation
- •Var I,imax,imin,max,min:integer;
- •If opendialog1.Execute
- •Постановка задачи 2.
- •Анализ задачи составление блок-схем.
- •Разработка схемы интерфейса.
- •Листинг кода программы
- •Interface
- •Implementation
- •Разработка тестовых заданий.
- •Заключение.
- •Список используемых источников
Implementation
{$R *.dfm}
procedure Schet;
Var I,imax,imin,max,min:integer;
a:array[1..100] of integer;
begin
n:=strToInt(form1.memo1.Lines[0]); // размер массива
for i:=1 to n do
a[i]:=strToInt(form1.memo1.Lines[i]); // берем данные из файла в массив
sum:=0; // Задание 1-А: ищем сумму отрицательных элементов массива
for i:=1 to n do
if a[i]<0 then sum:=sum+a[i];
form1.label1.Visible:=true;
form1.label1.Caption:= 'Сумма отрицательных элементов массива = '+Floattostr(sum)+'.';
imax:=1; // Задание 1-B: ищем произведение элементов массива, расположенных между его максимальным и минимальным элементами
imin:=1;
max:=a[1];
min:=a[1];
for i:=2 to n do
begin
if a[i]>max then
begin max:=a[i]; imax:=i; end;
if a[i]<min then
begin min:=a[i]; imin:=i; end;
end;
if imin>imax then
begin i:=imin; imin:=imax; imax:=i; end;
p:=1;
for i:=imin to imax do
p:=p*a[i];
form1.label2.Visible:=true;
form1.label2.Caption:= 'Произведение элементов массива, расположенных между его максимальным и минимальным элементами, = '+Floattostr(p)+'.';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
If opendialog1.Execute
then memo1.Lines.LoadFromFile(opendialog1.FileName);
Schet;
end;
procedure TForm1.Memo1Change(Sender: TObject);
begin
Schet;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
memo1.Lines[n+1]:= 'Сумма отрицательных элементов массива = '+Floattostr(sum)+'.';
memo1.Lines[n+2]:= 'Произведение элементов массива, расположенных между его максимальным и минимальным элементами, = '+Floattostr(p)+'.';
if savedialog1.Execute
then memo1.Lines.SaveToFile(savedialog1.FileName);
end;
end.
Постановка задачи 2.
Дана целочисленная прямоугольная матрица. Определить количество строк, не содержащих ни одного нулевого элемента.
Анализ задачи составление блок-схем.
Для решения поставленной задачи нам потребуется поля для ввода размерности матрицы, две табличные области (например, StringGrid), куда бы мы записали элементы матрицы и результат вычислений, и процедура, которая бы с помощью определенных циклов и условий выполняла необходимые вычисления. Все это можно реализовать с помощью модуля. Блок-схемы основной программы и необходимых процедур представлены ниже.
Основная программа
начало
Создание формы
Инициализация
Запуск
конец
Процедура, создающая строки матрицы
TForm1.Edit1Change
Вызов
m:=strToInt(edit1.Text)
StringGrid1.RowCount:=m
A1

StringGrid1.Height:=24*m+15
StringGrid1.Visible:=true
StringGrid2.Top:=StringGrid1.Top+24* *m+60
StringGrid2.Visible:=true
label3.Top:=stringgrid1.Top+24*m+25
A1
I:=0, m-1, 1
StringGrid1.Cells[0,i]:='0'
Возврат
Процедура, создающая столбцы матрицы
Procedure TForm1.Edit2Change
n:=strToInt(edit2.Text)
StringGrid1.Visible:=true
StringGrid2.Visible:=true
i:=0, m-1, 1
j:=0, n-1, 1
StringGrid1.Cells[j,i]:='0'
Возврат
Процедура, ограничивающая ввод в edit1
procedure Edit1KeyPress
Вызов
not (key in ['0'..'9',#8])
1
key:=#0
Ø
Возврат
Процедура, ограничивающая ввод в edit2
procedure Edit2KeyPress
Вызов
not (key in ['0'..'9',#8])
1
key:=#0
Ø
Возврат
Вызов
StringGrid1.ColCount:=n
StringGrid2.ColCount:=n
StringGrid1.Width:=64*n+10
StringGrid2.Width:=StringGrid1.Width
Процедура, ограничивающая ввод в табличную область.
procedure StringGrid1KeyPress
Вызов
not (key in ['0'..'9',#8,'-'])
1
key:=#0
Ø
Возврат
i:=1, m, 1
j:=1, n, 1
a[i,j]:=strToInT(stringgrid1.Cells[j-1,i-1])
Процедура, выполняющая основной расчет
Procedure Schet
Вызов
i:=1, m, 1
b[i]:=0
j:=1, m, 1
i:=1, n, 1
a[i,j]=0
1
b[i]:=10
Ø
A2
A2
b[i]=0
1
Ø
k:=k+1
Возврат
k:=0
i:=1, n, 1
stringgrid2.Cells[i-1,0]:=inttostr(b[i])
label3.Caption:=' Количество ненулевых строк - '+IntToStr(k)+ '