Разработка комплекса алгоритмов. Кодирование и компиляция. Тестирование, отладка, испытание и сдача программы. Минимальные системные требования для использования Delphi 7. Написание программы с использованием инструментального языка высокого уровня.
Программирование - одновременно наука и искусство создания компьютерных программ и\или программного обеспечения с помощью языков программирования. Программирование сочетает в себе элементы искусства, фундаментальных наук (прежде всего информатика и математика). Цель программирования состоит в том, чтобы создать программу, которая показывает определенное желательное поведение в ответ на действия пользователя либо автономно - независимо от пользователя.
Программирование включает в себя: · Анализ
· Проектирование - разработка комплекса алгоритмов
· Кодирование и компиляцию - написание исходного текста программы и преобразование его в исполнимый код с помощью компилятора
· Тестирование и отладку - выявление и устранение ошибок в программах
· Испытания и сдачу программ
· Сопровождение
Большая часть работы программистов связана с написанием исходного кода, тестированием и отладкой программ на одном из языков программирования. Исходные тексты и исполняемые файлы программ являются объектами авторского права и являются интеллектуальной собственностью их авторов и правообладателей.
Язык программирования - формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под ее управлением.
Со времени создания первых программируемых машин человечество придумало более двух с половиной тысяч языков программирования. Каждый год их число пополняется новыми. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.
Теоретическую основу языков программирования составляют алгоритмические языки. В настоящее время для ЭВМ разработано значительное количество языков программирования. Они отличаются друг от друга различными свойствами, а значит, и областью применения.
· Паскаль Самоучитель программирования
· Ассемблер Леонтьев
· Си
· BASIC
· Delphi - язык программирования, который используется в одноименной среде разработки. Сначала язык назывался Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal.
Время компиляции программ у любого С-языка на порядок дольше, чем у Delphi, это понижает отдачу от программиста - не каждый может писать код без малейших ошибок. Даже на мощных машинах С-продукты не могут обеспечить быстродействия, присущего Delphi.
Другим важным фактором успеха Delphi является его "визуальность". Можно сказать, что здесь программист не должен думать о всяких мелочах - как создать окно или кнопку, какие для этого необходимы классы или библиотеки. Задачи, для которых на C требуется множество усилий, в Delphi решаются несколькими кликами. Однако, вопреки сложившемуся мнению, при этом язык не теряет возможности доступа к низкоуровневым свойствам объектов, это делает его уникальным.
Для многих программистов немаловажным фактором является способность системы работать с базами данных. Delphi поддерживает базы данных, причем с той же присущей системе визуальностью. С таким же изяществом позволяет она разрабатывать и клиентский уровень СУБД "клиент-сервер", что чрезвычайно актуально сейчас. Встроенные мастера позволяют быстро создать необходимые компоненты и процедуры, а программисту остается лишь дописать свой код.
Основная часть
Постановка задачи
Составить программу, которая для задаваемых натуральных значений N и M не больших 10, принимает значение элемента массивов А(n,m) и В(m,n). Интерпретируя массивы А(n,m) и В(m,n) как матрицы, формирует массив С(n,n), являющийся произведением матриц А и В, и выводит массив С на экран.
Функции программы
Данный программный продукт позволит пользователю самому выбрать размерность матриц не больших 10. Далее на экран будут выведены 2 матрицы: А и B. Впоследствии эти матрицы будем автоматически перемножать, и получится матрица С. Выводим ее на экран.
Данная программа будет выполнена на инструментальном языке высокого уровня Delphi 7.
Ключевые возможности, появившиеся в Delphi 7: · предварительный вариант средств для работы с Microsoft .NET Framework;
· Kylix 3.0 для Linux в составе пакета;
· бесплатная лицензия на развертывание многозвенных приложений (которая до этого была платной), использующих технологию DATASNAP (прежнее название - MIDAS);
· полное решение проектирования и развертывания корпоративных приложений по технологии Model Driven Architecture (MDA);
· мощные и удобные средства разработки WEB-приложений;
· средства создания качественных кроссплатформенных отчетов Rave Reports;
· среда моделирования MODELMAKER (по технологии UML).
Компания Borland первой предоставила разработчикам возможность перехода на .NET при помощи Delphi 7. Поддержка компанией Borland платформы .NET позволяет разработчиками, использующим Delphi, быстро и продуктивно создавать приложения для .NET с сохранением существующих инвестиций в информационные технологии. Теперь работа в Delphi 7 позволяет программистам легко переносить имеющиеся у них знания, навыки и ресурсы на платформу .NET.
Системные требования
Минимальные системные требования для использования Delphi 7: · Процессор - Intel Pentium 233 МГЦ и выше
· Операционная система - Microsoft Windows XP, Windows 2000
· Оперативная память - 64 Мбайт (рекомендуется 128 Мбайт)
· Пространство на жестком диске - 450 Мбайт
· Монитор - SVGA или выше
· Другое аппаратное обеспечение - CD-ROM, мышь, клавиатура
Данная программа находится в папке «Программа» размером 1,53 МБ на диске CD-R размером 700 МБ, которая представляет собой исполняемый файл COURSE.exe размером 765 КБ.
Для тестирования программы необходимы следующие технические средства: · процессор Intel Celeron 300 и выше;
· память 32Mb;
· свободное пространство на жестком диске 5Mb;
· видеокарта встроенная;
· монитор Samsung SYNCMASTER с разрешением не менее 1024x768;
· CD-ROM;
· клавиатура;
· мышь;
Блок схема программы
В блок-схеме использовались следующие типы блоков: 1. Операция начала и конца алгоритма
2. Оператор ввода и вывода данных
3. Оператор присваивания
4. Оператор действия
5. Оператор логического условия
Блок-схема заполнения массивов A и B:
Блок-схема перемножения матриц A и B:
Структура данных
Integer- один из простейших и самых распространенных типов данных в языках программирования. Целые типы подразделяются на беззнаковые (без знака) и знаковые (со знаком).
Как правило, диапазон целых чисел определяется количеством байтов в памяти компьютера, отводимых под одну переменную: m-байтовая переменная целого типа без знака принимает значения от 0 до 28m-1;
m-байтовая переменная целого типа со знаком принимает значения от ?28m-1 до 28m-1-1.
Boolean- тип данных - примитивный тип данных в информатике, которые могут принимать два возможных значения, иногда называемых правдой и ложью. Присутствует в подавляющем большинстве языков программирования как самостоятельная сущность или реализуется через численный тип. В подавляющем большинстве языков за истину полагается единица, за ложь - ноль.
String-В компьютерном программировании, строка, по существу, последовательность символов. Строка, как правило, понимается как тип данных хранения последовательности значений данных, как правило, байт, в котором элементы обычно стоят иероглифы по кодировку, которая отличает его от более общих типов данных массива. В этом контексте термины двоичную строку и байт строки использоваться, чтобы предложить строки, в которых хранятся данные не (обязательно) представляют собой текст.
Longint- целое 32 битное число со знаком. Этот размер фиксирован, и не будет изменяться в будущих выпусках Delphi. В настоящее время он имеет тот же самый размер как тип Integer.
Проектирование
В проектирование моей программы я должна учесть все нюансы работы с матрицами, в особенности их умножения. Перемножение матриц происходит, последовательно перемножая элементы строки одной матрицы, на элементы столбца другой матрицы.
Для хранения матриц, а также операций с ними, я выбрала объект Delphi STRINGGRID типа TSTRINGGRID. Этот объект удобен тем, что его структура напоминает строение матрицы, то есть так же имеются строки и столбцы.
Работая с заданным проектом получила навыки оперировать объектами Delphi, в частности объектом STRINGGRID, Label, Edit, BITBTN.
Интерфейс программы
Рис. 1
При запуске программы вы увидите окно, изображенное на рис.1. В верху окна расположено меню для операций с программой. С кнопки Выполнить можно начать работу для перемножения матриц. Калькулятор - запуск приложения калькулятор, Помощь - имеет 2 вкладки: О программе и About, далее кнопка Выход - выход из программы.
Написание программы
Для написания программы я использовала инструментальный язык высокого уровня Delphi 7, который в свою очередь использует Object Pascal.
Перед запуском, программа предлагает ввести пароль для подтверждения запуска, неправильно введенный пароль не позволит запустить программу. Это реализовано в отдельной форме, которая запускается обработчиком событий (EVENTS=>ONSHOW), то есть не покажется главное окно, пока не исполнится запущенное => ввод пароля.
При загрузке программы в меню, нажимая на кнопку выполнить запускается процедура (procedure TFORM1.N1Click(Sender: TOBJECT)), которая создает форму (Form3:=TFORM3.Create(Application)) для задания размерности матриц. Это выполняется полем Edit и объектом UPDOWN.
Зная размерность нужно заполнить эту матрицу. Заполнение происходит через циклы случайными числами от 1 до 30 при помощи функции Random.
Матрицы будут перемножаться после нажатия на кнопку «Подсчитать», которая вызывает процедуру (procedure TFORM3.BITBTN1Click(Sender: TOBJECT)), после перемножения, полученная матрица выводится на главную форму в STRINGGRID для просмотра результатов.
Калькулятор, в меню запускает встроенное в windows-приложение, калькулятор.
var i,j,raz:integer; //объявления локальных переменных begin randomize;//исключение псевдослучайных чисел st:=strtoint(edit1.Text); //присвоение переменной значения размерности матрицы, строки col:=strtoint(edit2.Text);//присвоение переменной значения размерности матрицы, столбцы
Label1.Visible:=false;//сделать надпись невидимой
Label2.Visible:=false;//сделать надпись невидимой
Label3.Visible:=false;//сделать надпись невидимой edit1.Visible:= false;//сделать поле ввода невидимым edit2.Visible:= false;//сделать поле ввода невидимым
STRINGGRID1.ROWCOUNT:=st; //задание колличества строк первой матрицы STRINGGRID1.COLCOUNT:=col ;//задание колличества столбцов первой матрицы
STRINGGRID2.ROWCOUNT:=col; //задание колличества строк второй матрицы
STRINGGRID2.COLCOUNT:=st;//задание колличества столбцов второй матрицы form1.STRINGGRID1.ROWCOUNT:=col ;//задание размерности на главном окне матрицы для показа form1.STRINGGRID1.COLCOUNT:=col;//задание размерности на главном окне матрицы для показа for i:=0 to col-1 do //циклы для запонения матрицы числами for j:=0 to st-1 do begin
STRINGGRID1.Cells[i,j]:= inttostr(random(30) 1);//заполнения первой матрицы
STRINGGRID2.Cells[j,i]:= inttostr(random(30) 1);//заполнения второй матрицы end;
procedure TFORM3.BITBTN1Click(Sender: TOBJECT); {процедура перемножения матриц и выведения в главную форму} var i,j,k:integer; {объявление переменных} l:Longint; {объявление переменных} begin for i:=0 to col-1 do {цикл от 0 до колличества столбцов, т.к с нуля, отнимаем единицу} for j:=0 to col-1 do begin l:=0; {обнуления переменной для правильного подсчета} for k:=0 to st-1 do begin l:=l strtoint(STRINGGRID1.cells[i,k])* strtoint(STRINGGRID2.cells[k,j]);{перемножения матриц} form1.STRINGGRID1.Cells[i,j]:=inttostr(l);{Выведение на блавную форму} end;
begin edit1.Text:=INTTOSTR(UPDOWN1.Position){Присвоени позиции в edit, для задания размерности} end;
procedure TFORM3.UPDOWN2Changing(Sender: TOBJECT;
var ALLOWCHANGE: Boolean);
begin edit2.Text:=INTTOSTR(UPDOWN2.Position){Присвоени позиции в edit, для задания размерности} end;
end. {конец модуля}
Тестирование программы
Данный программный продукт испытывался постоянно в процессе его создания, проверялась практически каждая ветвь алгоритма. При возникновении ошибок они устранялись, и программа испытывалась вновь. Испытания проводились до тех пор, пока не были устранены все найденные ошибки.
Для проведения испытаний использовался самый простой метод - динамический, который заключается в том, что все испытания проводились в разное время и на разных компьютерах.
Начинаем тестирование
Запуск программы производится при помощи ехе-файла . Сразу появляется окно запроса пароля (рис.2) , вводим пароль, и нажимаем кнопку Ок.
Если же пароль введен неверно всплывает сообщение пользователю (рис.3), Если пароль введен верно, запускается загрузка программы (рис.4).
Далее после загрузки открывается главное окно программы (рис. 5)
При нажатии кнопки Выполнить открывается окно для задания размерности матриц А и В (рис.6)
После того, как вы ввели нужные вам размеры, после нажатия кнопки ОК данные матрицы будут показаны для обозрения пользователю (рис.7)
Подсчитать - окно выдачи результатов перемножения данных матриц (рис.8)
Калькулятор - вспомогательная кнопка, которая при нажатии открывает калькулятор (рис.9)
алгоритм программа инструментальный язык
Кнопка Помощь имеет 2 вкладки: О программе (рис.10) и About (рис.11).
При нажатии на кнопку Выход всплывает сообщение пользователю о подтверждении закрытия программы (рис.12)
Заключение
Разработка данного программного показывает, что данный процесс требует значительных творческих и умственных усилий, наличия определенного объема знаний по программированию на языке Delphi и умелого использования этих знаний.
Кроме того, важными моментами при разработки программы являются описание спецификации программы, алгоритма ее реализации, хотя Delphi и предоставляет необходимые средства для упрощения процесса программирования.
Проведенное тестирование программы позволяет сделать вывод о работоспособности программы и ее соответствии заданию. Выявленные недостатки предполагают дальнейшую работу над совершенствованием программы, что предоставляет начинающему программисту обширное поле деятельности для повышения знаний и совершенствовании навыков программирования на Delphi, освоении новых аспектов программирования в современной среде.net.
В результате учета всех отмеченных при тестировании недостатков возможно улучшение созданного программного продукта, на которое потребуется необходимое количество изменений исходного кода программы.
var i,j,raz:integer; //объявления локальных переменных begin randomize;//исключение псевдослучайных чисел st:=strtoint(edit1.Text); //присвоение переменной значения размерности матрицы, строки col:=strtoint(edit2.Text);//присвоение переменной значения размерности матрицы, столбцы
Label1.Visible:=false;//сделать надпись невидимой
Label2.Visible:=false;//сделать надпись невидимой
Label3.Visible:=false;//сделать надпись невидимой edit1.Visible:= false;//сделать поле ввода невидимым edit2.Visible:= false;//сделать поле ввода невидимым
STRINGGRID1.ROWCOUNT:=st; //задание колличества строк первой матрицы STRINGGRID1.COLCOUNT:=col ;//задание колличества столбцов первой матрицы
STRINGGRID2.ROWCOUNT:=col; //задание колличества строк второй матрицы
STRINGGRID2.COLCOUNT:=st;//задание колличества столбцов второй матрицы form1.STRINGGRID1.ROWCOUNT:=col ;//задание размерности на главном окне матрицы для показа form1.STRINGGRID1.COLCOUNT:=col;//задание размерности на главном окне матрицы для показа for i:=0 to col-1 do //циклы для запонения матрицы числами for j:=0 to st-1 do begin
STRINGGRID1.Cells[i,j]:= inttostr(random(30) 1);//заполнения первой матрицы
STRINGGRID2.Cells[j,i]:= inttostr(random(30) 1);//заполнения второй матрицы end;
procedure TFORM3.BITBTN1Click(Sender: TOBJECT); {процедура перемножения матриц и выведения в главную форму} var i,j,k:integer; {объявление переменных} l:Longint; {объявление переменных} begin for i:=0 to col-1 do {цикл от 0 до колличества столбцов, т.к с нуля, отнимаем единицу} for j:=0 to col-1 do begin l:=0; {обнуления переменной для правильного подсчета} for k:=0 to st-1 do begin l:=l strtoint(STRINGGRID1.cells[i,k])* strtoint(STRINGGRID2.cells[k,j]);{перемножения матриц} form1.STRINGGRID1.Cells[i,j]:=inttostr(l);{Выведение на блавную форму} end;