SlideShare une entreprise Scribd logo
1  sur  19
Объектно – ориентированное программирование на DELPHI - 5
Создаем программуСоздаем программу
расчета корнейрасчета корней
квадратного уравненияквадратного уравнения
Программа расчета корней квадратного уравнения
Прежде, чем приступить к разработке программы, мы должны разработать ее
алгоритм (что является, пожалуй, самым сложным), а затем реализовать его в
конкретной системе программирования
Алгоритм данной
программы известен
каждому школьнику, его
можно изобразить в виде
следующей блок - схемы
Нахождение дискриминанта
d = b2
– 4 ac
Конец
Ввод
коэффициентов
a, b, c
Корней нет
Начало
d<0
нетда
d=0
нет да
Два корня Один корень
a
db
x
2
12
±−
=
a
b
x
2
−
=
Программа расчета корней квадратного уравнения
После разработки алгоритма приступим к его реализации в Delphi
На форме должны быть:
• 3 Edit-a для ввода коэффициентов уравнения
• 1 Edit для отображения вычисления дискриминанта
• 2 Edit-a для отображения вычисления корней уравнения
• 2 кнопки:
«НАЙТИ» - для вычисления корней
«ОЧИСТИТЬ» - для очистки всех Edit – oв
• несколько Label –ов для вывода текста
Причем для украшения программы применим компонент Manifest XP, а также
Group Box
Рассмотрим создание программы по шагам, причем объяснений будет уже
меньше – мы уже кое – что умеем (смотри предыдущие уроки)
Программа расчета корней квадратного уравнения
ШАГ 1 Запускаем Delphi, размещаем на форме необходимые компоненты:
Group Box2
Компонент Group Box
находится на стандартной
панели компонент
В свойстве Group Box –
Caption делаем
соответствующие надписи
Group Box1
Group Box3
Программа расчета корней квадратного уравнения
ШАГ 1 Размещаем все Label –ы для отображения текста
Label1
Label2
Label3
Label4
Label5
Label6
Label7
Программа расчета корней квадратного уравнения
ШАГ 1 Размещаем Edit-ы для отображения и ввода данных
Edit1
Edit2
Edit3
Edit6
Edit4
Edit5
Программа расчета корней квадратного уравнения
ШАГ 1 И наконец размещаем кнопки и манифест XP
Manifest XP
Button1
Button2
Делаем соответствующие
надписи на кнопках,
подгоняем размер формы – и
сейчас можно приступать к
написанию кода
Программа расчета корней квадратного уравнения
ШАГ 2 Сейчас в интерфейсной части модуля необходимо объявить
используемые переменные (нажмите F12 – и вы в редакторе)
Объявляем
переменные и
указываем их тип –
real (все величины
могут принимать
действительные
значения
Программа расчета корней квадратного уравнения
ШАГ 3 Приступаем к написанию кода, сначала для кнопки «НАЙТИ»
(Button1). Делаем по ней двойной щелчок и мы в редакторе
кода, где записываем следующий код (это знакомый нам
Паскаль, но есть небольшие отличия)
Это процедура
нажатия на кнопку
«НАЙТИ», созданная
Delphi
автоматически
А эти три строчки
нам пока незнакомы
Что это?
Программа расчета корней квадратного уравнения
ШАГ 3 Приступаем к написанию кода, сначала для кнопки «НАЙТИ»
(Button1). Делаем по ней двойной щелчок и мы в редакторе
кода, где записываем следующий код (это знакомый нам
Паскаль, но есть небольшие отличия)
Дело в том, что
переменные a,b и с –
вещественного типа, а
значение окна
редактирования (Edit.Text)
–имеет строковый тип
Поэтому присваивание
напрямую:
a:= Edit1.Text вызовет
ошибку несоответствия
типов
Выражение strtofloat –
указание компилятору
перевести строковый тип,
присущий тексту Edit-а, в
вещественный тип,
соответствующий
переменной a (b и с)
Программа расчета корней квадратного уравнения
ШАГ 3 Приступаем к написанию кода, сначала для кнопки «НАЙТИ»
(Button1). Делаем по ней двойной щелчок и мы в редакторе
кода, где записываем следующий код (это знакомый нам
Паскаль, но есть небольшие отличия)
Это понятно: вычисление
дискриминанта
А здесь опять
преобразование типов,
только наоборот:
Значению Edit6.Text
присваивается значение
дискриминанта, но при этом
вещественный тип
переменной d
преобразуется в строковый
тип значения Edit-а
(floattostr)
Программа расчета корней квадратного уравнения
ШАГ 3 Приступаем к написанию кода, сначала для кнопки «НАЙТИ»
(Button1). Делаем по ней двойной щелчок и мы в редакторе
кода, где записываем следующий код (это знакомый нам
Паскаль, но есть небольшие отличия)
Проверяем условие (если
дискриминант меньше
нуля), то выводим в Edit-ах
для корней значения
«Корней нет»
Иначе рассчитываем корни
и выводим их в
соответствующих Edit-ах
(Здесь мы немного упростили,
объединив две ветви
алгоритма в одну)
Программа расчета корней квадратного уравнения
ШАГ 4 Сейчас запишем код для кнопки «ОЧИСТИТЬ» (Button2)
Свойству Text каждого Edit- а присваиваем пустое значение
Программа расчета корней квадратного уравнения
ШАГ 6 Сохраняем проект, компилируем и запускаем готовую
программу
Попробуем ввести значение
коэффициентов и посмотреть
результат
Попробовать ->
 А сейчас проверьте
работу программы по
контрольным примерам:
a b c x1 x2
1 2 1 -1 -1
2.18 -23.54 0.35 0.01488 10.7832
12.5 2.354 235.12
корней
нет
корней
нет
Объектно – ориентированное программирование на DELPHI - 5
2. Обработка исключений2. Обработка исключений
Программа расчета корней квадратного уравнения
Давайте разберемся, что такое исключение
Запустим калькулятор и попробуем ввести следующие значения
коэффициентов:
(а=0, b и c – произвольные)
При нажатии кнопки «НАЙТИ» программа не
работает, выходит окно сообщения
В чем дело ?
Давайте посмотрим, как мы
находим корни уравнения
a
db
x
2
12
±−
=
Когда переменной а присваивается значение
0, то знаменатель этой дроби тоже ноль, а на
ноль делить нельзя –программа не может
выполнить действие, которое мы ее
заставляем и прерывается – возникает
исключительная ситуация (исключение),
которое мы должны обработать –
написать код
Программа расчета корней квадратного уравнения
Обработка этого исключения
Ясно, что мы перед расчетом дискриминанта и корней должны проверить – а не
введен ли в Label1 ноль. Если введен – то это уже не квадратное уравнение и
считать надо по другой формуле (x= - c / b), если не введен – можно считать как
обычно
Откроем файл нашего
проекта (ведь он у нас
сохранен) и перейдем в
редактор кода
После присвоения
переменным a,b и с
значений из
соответствующих Label-ов
вставляем проверку этого
условия
Если условие
выполняется, то в одном
Label-е выводим
сообщение, а в другом –
результат вычисления по
другой формуле
Программа расчета корней квадратного уравнения
Обработка этого исключения
Ясно, что мы перед расчетом дискриминанта и корней должны проверить – а не
введен ли в Label1 ноль. Если введен – то это уже не квадратное уравнение и
считать надо по другой формуле (x= - c / b), если не введен – можно считать как
обычно
Иначе действуем по
старому, не забудьте
добавить begin …end
Сохраните,
скомпилируйте, запустите
программу и попробуйте
ввести для а ноль, для b,с
– произвольно: программа
считает
Таким образом мы
обработали одно
исключение, но может
быть, есть еще что-то?
попробовать
Программа расчета корней квадратного уравнения
А что будет, если мы случайно в окно ввода коэффициента уравнения введем вместо
числа – текст или какие – то знаки препинания (или вообще ничего не введем)?
Опять возникает ситуация, когда наша программа не
может выполнить действие и прерывается, а нам
выводится сообщение об этом . В этом случае мы
заставляем программу переводить символы АВС в
вещественное число, но эти символы числом не
являются – возникает несоответствие типов
 При создании даже простой программы мы всегда должны
обдумывать и обрабатывать исключения, хотя часто они «не видны» и
проявляются только в некоторых ситуациях при работе уже готовой
программы
Обработка исключений – дело довольно кропотливое и в наш курс не
входит, хотя на следующих уроках мы будем на это обращать внимание

Contenu connexe

Tendances

паскаль. часть1
паскаль. часть1паскаль. часть1
паскаль. часть1igorm9so
 
10 10 pascal_urok_
10 10 pascal_urok_10 10 pascal_urok_
10 10 pascal_urok_Ann Eres
 
C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.Igor Shkulipa
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программTatyanazaxarova
 
апкс 2011 05_verilog
апкс 2011 05_verilogапкс 2011 05_verilog
апкс 2011 05_verilogIrina Hahanova
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETGoSharp
 
Candidates for-php-developers-tests
Candidates for-php-developers-testsCandidates for-php-developers-tests
Candidates for-php-developers-testsguest5fa21c
 
Флажок - переключатель - Мемо
Флажок - переключатель - МемоФлажок - переключатель - Мемо
Флажок - переключатель - МемоDbeshenov
 
22 pascal urok_6
22 pascal urok_622 pascal urok_6
22 pascal urok_6Ann Eres
 
C++ осень 2012 лекция 6
C++ осень 2012 лекция 6C++ осень 2012 лекция 6
C++ осень 2012 лекция 6Technopark
 
C++ Базовый. Занятие 01.
C++ Базовый. Занятие 01.C++ Базовый. Занятие 01.
C++ Базовый. Занятие 01.Igor Shkulipa
 
практикум по выполнению блока с (с1)
практикум по выполнению блока с (с1)практикум по выполнению блока с (с1)
практикум по выполнению блока с (с1)Екатерина Луговова
 
Программирование на языке C Sharp (СИ решетка) ПРАКТИКУМ
Программирование на языке C Sharp (СИ решетка) ПРАКТИКУМПрограммирование на языке C Sharp (СИ решетка) ПРАКТИКУМ
Программирование на языке C Sharp (СИ решетка) ПРАКТИКУМAlexandr Konfidentsialno
 
Конструирование алгоритмов
Конструирование алгоритмовКонструирование алгоритмов
Конструирование алгоритмовAndrey Dolinin
 

Tendances (19)

паскаль. часть1
паскаль. часть1паскаль. часть1
паскаль. часть1
 
паскаль
паскальпаскаль
паскаль
 
10 10 pascal_urok_
10 10 pascal_urok_10 10 pascal_urok_
10 10 pascal_urok_
 
лр8
лр8лр8
лр8
 
лр6
лр6лр6
лр6
 
C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программ
 
апкс 2011 05_verilog
апкс 2011 05_verilogапкс 2011 05_verilog
апкс 2011 05_verilog
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
 
Candidates for-php-developers-tests
Candidates for-php-developers-testsCandidates for-php-developers-tests
Candidates for-php-developers-tests
 
Флажок - переключатель - Мемо
Флажок - переключатель - МемоФлажок - переключатель - Мемо
Флажок - переключатель - Мемо
 
22 pascal urok_6
22 pascal urok_622 pascal urok_6
22 pascal urok_6
 
лек11 8
лек11 8лек11 8
лек11 8
 
C++ осень 2012 лекция 6
C++ осень 2012 лекция 6C++ осень 2012 лекция 6
C++ осень 2012 лекция 6
 
C++ Базовый. Занятие 01.
C++ Базовый. Занятие 01.C++ Базовый. Занятие 01.
C++ Базовый. Занятие 01.
 
практикум по выполнению блока с (с1)
практикум по выполнению блока с (с1)практикум по выполнению блока с (с1)
практикум по выполнению блока с (с1)
 
Программирование на языке C Sharp (СИ решетка) ПРАКТИКУМ
Программирование на языке C Sharp (СИ решетка) ПРАКТИКУМПрограммирование на языке C Sharp (СИ решетка) ПРАКТИКУМ
Программирование на языке C Sharp (СИ решетка) ПРАКТИКУМ
 
Конструирование алгоритмов
Конструирование алгоритмовКонструирование алгоритмов
Конструирование алгоритмов
 
лек1
лек1лек1
лек1
 

En vedette

SINTESE GEOTÉCNICA - CIDADE DE LUANDA
SINTESE GEOTÉCNICA - CIDADE DE LUANDASINTESE GEOTÉCNICA - CIDADE DE LUANDA
SINTESE GEOTÉCNICA - CIDADE DE LUANDAIreneu Vaz
 
The Bakken Formation: Potential Realized through Innovation
The Bakken Formation: Potential Realized through InnovationThe Bakken Formation: Potential Realized through Innovation
The Bakken Formation: Potential Realized through InnovationJoshua Wolcott
 
Anteproyecto de química diapositivas
Anteproyecto de química diapositivasAnteproyecto de química diapositivas
Anteproyecto de química diapositivasveronica valencia
 
Estrategias para la comprensión.
Estrategias para la comprensión.Estrategias para la comprensión.
Estrategias para la comprensión.Laura Colorado
 
Anteproyecto química
Anteproyecto químicaAnteproyecto química
Anteproyecto químicamateo medina
 
The Biggest And Most Disregarded Detail Regarding EGA Futura programa de fact...
The Biggest And Most Disregarded Detail Regarding EGA Futura programa de fact...The Biggest And Most Disregarded Detail Regarding EGA Futura programa de fact...
The Biggest And Most Disregarded Detail Regarding EGA Futura programa de fact...magic68bank
 
La filiera integrata dei dati pubblici. Od2016 cagliari - B
La filiera integrata dei dati pubblici. Od2016 cagliari - BLa filiera integrata dei dati pubblici. Od2016 cagliari - B
La filiera integrata dei dati pubblici. Od2016 cagliari - BSergio Agostinelli
 
Publicidad diario la nación del 3 de junio de 1978.
Publicidad diario la nación del 3 de junio de 1978.Publicidad diario la nación del 3 de junio de 1978.
Publicidad diario la nación del 3 de junio de 1978.AndrinoJuan
 
Achieving Success: Effectively Leveraging Email Marketing Tools
Achieving Success: Effectively Leveraging Email Marketing ToolsAchieving Success: Effectively Leveraging Email Marketing Tools
Achieving Success: Effectively Leveraging Email Marketing ToolsAmericaneagle.com
 
Mudança de Hábito e Wunderkit - Gerente Bem Informado
Mudança de Hábito e Wunderkit - Gerente Bem InformadoMudança de Hábito e Wunderkit - Gerente Bem Informado
Mudança de Hábito e Wunderkit - Gerente Bem InformadoGerente Bem Informado
 
Casa de cultura - modelo de projeto
Casa de cultura - modelo de projetoCasa de cultura - modelo de projeto
Casa de cultura - modelo de projetorosenfeld72
 
Projeto mostra de cultura metodologia em oficinas interdisciplinares- anexo
Projeto mostra de cultura  metodologia em oficinas interdisciplinares- anexoProjeto mostra de cultura  metodologia em oficinas interdisciplinares- anexo
Projeto mostra de cultura metodologia em oficinas interdisciplinares- anexofamiliaestagio
 

En vedette (13)

SINTESE GEOTÉCNICA - CIDADE DE LUANDA
SINTESE GEOTÉCNICA - CIDADE DE LUANDASINTESE GEOTÉCNICA - CIDADE DE LUANDA
SINTESE GEOTÉCNICA - CIDADE DE LUANDA
 
The Bakken Formation: Potential Realized through Innovation
The Bakken Formation: Potential Realized through InnovationThe Bakken Formation: Potential Realized through Innovation
The Bakken Formation: Potential Realized through Innovation
 
Anteproyecto de química diapositivas
Anteproyecto de química diapositivasAnteproyecto de química diapositivas
Anteproyecto de química diapositivas
 
ESTERO DEL YUGO
ESTERO DEL YUGOESTERO DEL YUGO
ESTERO DEL YUGO
 
Estrategias para la comprensión.
Estrategias para la comprensión.Estrategias para la comprensión.
Estrategias para la comprensión.
 
Anteproyecto química
Anteproyecto químicaAnteproyecto química
Anteproyecto química
 
The Biggest And Most Disregarded Detail Regarding EGA Futura programa de fact...
The Biggest And Most Disregarded Detail Regarding EGA Futura programa de fact...The Biggest And Most Disregarded Detail Regarding EGA Futura programa de fact...
The Biggest And Most Disregarded Detail Regarding EGA Futura programa de fact...
 
La filiera integrata dei dati pubblici. Od2016 cagliari - B
La filiera integrata dei dati pubblici. Od2016 cagliari - BLa filiera integrata dei dati pubblici. Od2016 cagliari - B
La filiera integrata dei dati pubblici. Od2016 cagliari - B
 
Publicidad diario la nación del 3 de junio de 1978.
Publicidad diario la nación del 3 de junio de 1978.Publicidad diario la nación del 3 de junio de 1978.
Publicidad diario la nación del 3 de junio de 1978.
 
Achieving Success: Effectively Leveraging Email Marketing Tools
Achieving Success: Effectively Leveraging Email Marketing ToolsAchieving Success: Effectively Leveraging Email Marketing Tools
Achieving Success: Effectively Leveraging Email Marketing Tools
 
Mudança de Hábito e Wunderkit - Gerente Bem Informado
Mudança de Hábito e Wunderkit - Gerente Bem InformadoMudança de Hábito e Wunderkit - Gerente Bem Informado
Mudança de Hábito e Wunderkit - Gerente Bem Informado
 
Casa de cultura - modelo de projeto
Casa de cultura - modelo de projetoCasa de cultura - modelo de projeto
Casa de cultura - modelo de projeto
 
Projeto mostra de cultura metodologia em oficinas interdisciplinares- anexo
Projeto mostra de cultura  metodologia em oficinas interdisciplinares- anexoProjeto mostra de cultura  metodologia em oficinas interdisciplinares- anexo
Projeto mostra de cultura metodologia em oficinas interdisciplinares- anexo
 

Similaire à 206297

презентация ИНТЕРПАЙП НТЗ в Delphi
презентация ИНТЕРПАЙП НТЗ в Delphiпрезентация ИНТЕРПАЙП НТЗ в Delphi
презентация ИНТЕРПАЙП НТЗ в Delphiryska ryska
 
C++ теория
C++ теорияC++ теория
C++ теорияtank1975
 
C++ теория
C++ теорияC++ теория
C++ теорияtank1975
 
C++ теория
C++ теорияC++ теория
C++ теорияtank1975
 
Algorithms and programming lecture in ru
Algorithms and programming lecture in ruAlgorithms and programming lecture in ru
Algorithms and programming lecture in russuser0562f1
 
Алгоритмизация и программирование С/С++
Алгоритмизация и  программирование С/С++Алгоритмизация и  программирование С/С++
Алгоритмизация и программирование С/С++ssuser0562f1
 
Неудачная попытка сравнить PVS-Studio (VivaMP) и Intel C/C++ ("Parallel Lint")
Неудачная попытка сравнить PVS-Studio (VivaMP) и Intel C/C++ ("Parallel Lint")Неудачная попытка сравнить PVS-Studio (VivaMP) и Intel C/C++ ("Parallel Lint")
Неудачная попытка сравнить PVS-Studio (VivaMP) и Intel C/C++ ("Parallel Lint")Tatyanazaxarova
 
алг и прогр (11кл)
алг и прогр (11кл)алг и прогр (11кл)
алг и прогр (11кл)isva69
 
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) it-people
 
Метрики кода программного обеспечения
Метрики кода программного обеспеченияМетрики кода программного обеспечения
Метрики кода программного обеспеченияTatyanazaxarova
 
Cреда программирования
Cреда программированияCреда программирования
Cреда программированияirina8682
 
операторы и выражения
операторы и выраженияоператоры и выражения
операторы и выраженияLidiKashka
 
Решение заданий типа с1 егэ по информатике
Решение заданий типа с1 егэ по информатикеРешение заданий типа с1 егэ по информатике
Решение заданий типа с1 егэ по информатикеЕкатерина Луговова
 
VAMR ACADEMY Второе занятие
VAMR ACADEMY Второе занятиеVAMR ACADEMY Второе занятие
VAMR ACADEMY Второе занятиеmixARConference
 
Deep c slides_oct2011_rus
Deep c slides_oct2011_rusDeep c slides_oct2011_rus
Deep c slides_oct2011_rusGarrikus
 

Similaire à 206297 (20)

презентация ИНТЕРПАЙП НТЗ в Delphi
презентация ИНТЕРПАЙП НТЗ в Delphiпрезентация ИНТЕРПАЙП НТЗ в Delphi
презентация ИНТЕРПАЙП НТЗ в Delphi
 
C++ теория
C++ теорияC++ теория
C++ теория
 
C++ теория
C++ теорияC++ теория
C++ теория
 
C++ теория
C++ теорияC++ теория
C++ теория
 
Algorithms and programming lecture in ru
Algorithms and programming lecture in ruAlgorithms and programming lecture in ru
Algorithms and programming lecture in ru
 
Алгоритмизация и программирование С/С++
Алгоритмизация и  программирование С/С++Алгоритмизация и  программирование С/С++
Алгоритмизация и программирование С/С++
 
пр 15.docx
пр 15.docxпр 15.docx
пр 15.docx
 
прак 15.docx
прак 15.docxпрак 15.docx
прак 15.docx
 
Неудачная попытка сравнить PVS-Studio (VivaMP) и Intel C/C++ ("Parallel Lint")
Неудачная попытка сравнить PVS-Studio (VivaMP) и Intel C/C++ ("Parallel Lint")Неудачная попытка сравнить PVS-Studio (VivaMP) и Intel C/C++ ("Parallel Lint")
Неудачная попытка сравнить PVS-Studio (VivaMP) и Intel C/C++ ("Parallel Lint")
 
алг и прогр (11кл)
алг и прогр (11кл)алг и прогр (11кл)
алг и прогр (11кл)
 
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
 
Метрики кода программного обеспечения
Метрики кода программного обеспеченияМетрики кода программного обеспечения
Метрики кода программного обеспечения
 
Cреда программирования
Cреда программированияCреда программирования
Cреда программирования
 
лек11 7
лек11 7лек11 7
лек11 7
 
лек11 7
лек11 7лек11 7
лек11 7
 
операторы и выражения
операторы и выраженияоператоры и выражения
операторы и выражения
 
Решение заданий типа с1 егэ по информатике
Решение заданий типа с1 егэ по информатикеРешение заданий типа с1 егэ по информатике
Решение заданий типа с1 егэ по информатике
 
VAMR ACADEMY Второе занятие
VAMR ACADEMY Второе занятиеVAMR ACADEMY Второе занятие
VAMR ACADEMY Второе занятие
 
Bobrovckii
BobrovckiiBobrovckii
Bobrovckii
 
Deep c slides_oct2011_rus
Deep c slides_oct2011_rusDeep c slides_oct2011_rus
Deep c slides_oct2011_rus
 

206297

  • 1. Объектно – ориентированное программирование на DELPHI - 5 Создаем программуСоздаем программу расчета корнейрасчета корней квадратного уравненияквадратного уравнения
  • 2. Программа расчета корней квадратного уравнения Прежде, чем приступить к разработке программы, мы должны разработать ее алгоритм (что является, пожалуй, самым сложным), а затем реализовать его в конкретной системе программирования Алгоритм данной программы известен каждому школьнику, его можно изобразить в виде следующей блок - схемы Нахождение дискриминанта d = b2 – 4 ac Конец Ввод коэффициентов a, b, c Корней нет Начало d<0 нетда d=0 нет да Два корня Один корень a db x 2 12 ±− = a b x 2 − =
  • 3. Программа расчета корней квадратного уравнения После разработки алгоритма приступим к его реализации в Delphi На форме должны быть: • 3 Edit-a для ввода коэффициентов уравнения • 1 Edit для отображения вычисления дискриминанта • 2 Edit-a для отображения вычисления корней уравнения • 2 кнопки: «НАЙТИ» - для вычисления корней «ОЧИСТИТЬ» - для очистки всех Edit – oв • несколько Label –ов для вывода текста Причем для украшения программы применим компонент Manifest XP, а также Group Box Рассмотрим создание программы по шагам, причем объяснений будет уже меньше – мы уже кое – что умеем (смотри предыдущие уроки)
  • 4. Программа расчета корней квадратного уравнения ШАГ 1 Запускаем Delphi, размещаем на форме необходимые компоненты: Group Box2 Компонент Group Box находится на стандартной панели компонент В свойстве Group Box – Caption делаем соответствующие надписи Group Box1 Group Box3
  • 5. Программа расчета корней квадратного уравнения ШАГ 1 Размещаем все Label –ы для отображения текста Label1 Label2 Label3 Label4 Label5 Label6 Label7
  • 6. Программа расчета корней квадратного уравнения ШАГ 1 Размещаем Edit-ы для отображения и ввода данных Edit1 Edit2 Edit3 Edit6 Edit4 Edit5
  • 7. Программа расчета корней квадратного уравнения ШАГ 1 И наконец размещаем кнопки и манифест XP Manifest XP Button1 Button2 Делаем соответствующие надписи на кнопках, подгоняем размер формы – и сейчас можно приступать к написанию кода
  • 8. Программа расчета корней квадратного уравнения ШАГ 2 Сейчас в интерфейсной части модуля необходимо объявить используемые переменные (нажмите F12 – и вы в редакторе) Объявляем переменные и указываем их тип – real (все величины могут принимать действительные значения
  • 9. Программа расчета корней квадратного уравнения ШАГ 3 Приступаем к написанию кода, сначала для кнопки «НАЙТИ» (Button1). Делаем по ней двойной щелчок и мы в редакторе кода, где записываем следующий код (это знакомый нам Паскаль, но есть небольшие отличия) Это процедура нажатия на кнопку «НАЙТИ», созданная Delphi автоматически А эти три строчки нам пока незнакомы Что это?
  • 10. Программа расчета корней квадратного уравнения ШАГ 3 Приступаем к написанию кода, сначала для кнопки «НАЙТИ» (Button1). Делаем по ней двойной щелчок и мы в редакторе кода, где записываем следующий код (это знакомый нам Паскаль, но есть небольшие отличия) Дело в том, что переменные a,b и с – вещественного типа, а значение окна редактирования (Edit.Text) –имеет строковый тип Поэтому присваивание напрямую: a:= Edit1.Text вызовет ошибку несоответствия типов Выражение strtofloat – указание компилятору перевести строковый тип, присущий тексту Edit-а, в вещественный тип, соответствующий переменной a (b и с)
  • 11. Программа расчета корней квадратного уравнения ШАГ 3 Приступаем к написанию кода, сначала для кнопки «НАЙТИ» (Button1). Делаем по ней двойной щелчок и мы в редакторе кода, где записываем следующий код (это знакомый нам Паскаль, но есть небольшие отличия) Это понятно: вычисление дискриминанта А здесь опять преобразование типов, только наоборот: Значению Edit6.Text присваивается значение дискриминанта, но при этом вещественный тип переменной d преобразуется в строковый тип значения Edit-а (floattostr)
  • 12. Программа расчета корней квадратного уравнения ШАГ 3 Приступаем к написанию кода, сначала для кнопки «НАЙТИ» (Button1). Делаем по ней двойной щелчок и мы в редакторе кода, где записываем следующий код (это знакомый нам Паскаль, но есть небольшие отличия) Проверяем условие (если дискриминант меньше нуля), то выводим в Edit-ах для корней значения «Корней нет» Иначе рассчитываем корни и выводим их в соответствующих Edit-ах (Здесь мы немного упростили, объединив две ветви алгоритма в одну)
  • 13. Программа расчета корней квадратного уравнения ШАГ 4 Сейчас запишем код для кнопки «ОЧИСТИТЬ» (Button2) Свойству Text каждого Edit- а присваиваем пустое значение
  • 14. Программа расчета корней квадратного уравнения ШАГ 6 Сохраняем проект, компилируем и запускаем готовую программу Попробуем ввести значение коэффициентов и посмотреть результат Попробовать ->  А сейчас проверьте работу программы по контрольным примерам: a b c x1 x2 1 2 1 -1 -1 2.18 -23.54 0.35 0.01488 10.7832 12.5 2.354 235.12 корней нет корней нет
  • 15. Объектно – ориентированное программирование на DELPHI - 5 2. Обработка исключений2. Обработка исключений
  • 16. Программа расчета корней квадратного уравнения Давайте разберемся, что такое исключение Запустим калькулятор и попробуем ввести следующие значения коэффициентов: (а=0, b и c – произвольные) При нажатии кнопки «НАЙТИ» программа не работает, выходит окно сообщения В чем дело ? Давайте посмотрим, как мы находим корни уравнения a db x 2 12 ±− = Когда переменной а присваивается значение 0, то знаменатель этой дроби тоже ноль, а на ноль делить нельзя –программа не может выполнить действие, которое мы ее заставляем и прерывается – возникает исключительная ситуация (исключение), которое мы должны обработать – написать код
  • 17. Программа расчета корней квадратного уравнения Обработка этого исключения Ясно, что мы перед расчетом дискриминанта и корней должны проверить – а не введен ли в Label1 ноль. Если введен – то это уже не квадратное уравнение и считать надо по другой формуле (x= - c / b), если не введен – можно считать как обычно Откроем файл нашего проекта (ведь он у нас сохранен) и перейдем в редактор кода После присвоения переменным a,b и с значений из соответствующих Label-ов вставляем проверку этого условия Если условие выполняется, то в одном Label-е выводим сообщение, а в другом – результат вычисления по другой формуле
  • 18. Программа расчета корней квадратного уравнения Обработка этого исключения Ясно, что мы перед расчетом дискриминанта и корней должны проверить – а не введен ли в Label1 ноль. Если введен – то это уже не квадратное уравнение и считать надо по другой формуле (x= - c / b), если не введен – можно считать как обычно Иначе действуем по старому, не забудьте добавить begin …end Сохраните, скомпилируйте, запустите программу и попробуйте ввести для а ноль, для b,с – произвольно: программа считает Таким образом мы обработали одно исключение, но может быть, есть еще что-то? попробовать
  • 19. Программа расчета корней квадратного уравнения А что будет, если мы случайно в окно ввода коэффициента уравнения введем вместо числа – текст или какие – то знаки препинания (или вообще ничего не введем)? Опять возникает ситуация, когда наша программа не может выполнить действие и прерывается, а нам выводится сообщение об этом . В этом случае мы заставляем программу переводить символы АВС в вещественное число, но эти символы числом не являются – возникает несоответствие типов  При создании даже простой программы мы всегда должны обдумывать и обрабатывать исключения, хотя часто они «не видны» и проявляются только в некоторых ситуациях при работе уже готовой программы Обработка исключений – дело довольно кропотливое и в наш курс не входит, хотя на следующих уроках мы будем на это обращать внимание