Скачать .zip |
Реферат: Построение блок схем алгоритмов. Алгоритмические языки высокого уровня
#include<iostream.h> #include<math.h> void main() {
float dx=0.25,y,x;
for (x=2.0;x<=5.0 +0.5*dx;x+=dx)
{
if (x<=3.5)
y=cos(x)*cos(x);
else
y=sin(x)*log(x);
cout<<"Y= "<<y<<endl;
} }
Program lab_2; Uses Crt; Const
dx=0.25; Var
x,y:real; Begin
clrscr;
x:=2.0;
while x<5.0+dx/2 do
begin
if x<=3.5 then
begin
y:=sqr(cos(x));
end
else y:=sin(x)*ln(x);
writeln(y:3:5);
x:=x+dx;
end;
readln; End.
unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject); private
{ Private declarations } public
{ Public declarations } end; Const
dx=0.25;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button2Click(Sender: TObject); begin
Close(); end;
procedure TForm1.Button1Click(Sender: TObject); var
Code:integer;
x,y:real;
s:string[11]; begin
x:=2.0;
while (x<5.0+0.5*dx) do
begin
if x<=3.5 then y:=sqr(cos(x))
else y:=sin(x)*ln(x);
x:=x+dx;
Str(y:2:7,s);
Listbox1.Items.Add(s);
end; end;
procedure TForm1.Button3Click(Sender: TObject); begin
Listbox1.Items.Clear; end;
end.
35
СодержаниеРеферат | 5 |
Введение | 6 |
Построение блок – схем алгоритмов | 8 |
Алгоритмические языки высокого уровня | 12 |
Программирование в среде Borland Pascal | 15 |
Основы визуального программирование в среде Delphi | 17 |
Объектно – ориентированное программирование и С++ | 18 |
Приложение 1 | 20 |
Приложение 2 | 23 |
Список используемой литературы | 35 |
Реферат
Настоящий курсовой проект по дисциплине "Основы программирования и алгоритмические языки" состоит из двух частей:
Пояснительной записки,
графической части.
Пояснительная записка включает в себя следующие элементы:
Титульный лист и задание на курсовой проект,
«Содержание»,
«Реферат»,
«Введение»,
«Основную часть»,
"Заключение".
В данном курсовом проекте были решены три задачи. Алгоритмы задач представлены в блок-схемах, которые дают общий подход к решению поставленных задач. Задачи реализованы на трех различных языках программирования. Блок-схемы алгоритмов, листинги программ и результаты их работы приведены в приложениях.
Графическая часть курсового проекта состоит из двух листов формата А1. Первый лист включает в себя блок–схемы трех задач, второй – листинги программ, реализующие эти алгоритмы на рассматриваемых языках программирования.
Введение
Алгоритм – это однозначная конечная последовательность точно определенных шагов или действий которые обеспечивают решение задачи при наличии исходных данных за конечный промежуток времени. Это процедура поиска решения задачи, однозначно представляющая как и в какой последовательности выполнять действия. Любой алгоритм предполагает исполнителя. При решении задач с помощью компьютера, исполнителем является компьютер.
Алгоритмические языки – это основное направление в современной разработке компьютерных программ.
Алгоритмические языки основываются на разработке алгоритма.
Современные языки в своем развитии алгоритмизации переходят на следующий уровень, а именно объектно-ориентированное программирование.
Объектно-ориентированная парадигма предлагает новый подход к разработке программного обеспечения, предназначенного для решения задач различных классов. Фундаментальная концепция объектно-ориентированной парадигмы состоит в передачи сообщений объектам.
Существует пять компонентов объектно-ориентированной парадигмы: объект, сообщение, класс, наследование и метод.
В данном курсовом проекте рассмотрены следующие алгоритмические языки:
Borland Pascal,
C++,
Borland Delphi.
Все эти языки, на современном этапе, являются также языками объектно-ориентированными.
Основная цель работы – освоитьна практикеэтапыразработки ПАСКАЛЬ-программ, С++-программ и Delphi–программ для решения вычислительныхзадачи на ЭВМ.
В данном курсовом проекте необходимо было решить следующие задачи:
Даны X и E. Вычислить значение функции
...
Вычисления закончить, когда модуль последнего просуммированного члена ряда станет меньше Е.
Вычислить таблицу значений функции при изменении аргумента в заданном интервале с равномерным шагом:
x>3,5 x≤3,5 | x[2;5] ∆x=0,25 |
Задана матрица G(A,B). Найти в ней количество L1 отрицательных и количество L2 положительных элементов. Если L1>L2, то найти сумму отрицательных элементов. В противном случае найти сумму положительных элементов.
Построения блок–схем алгоритмов программ.
Алгоритм – это однозначная конечная последовательность точно определенных шагов или действий которые обеспечивают решение задачи при наличии исходных данных за конечный промежуток времени.
Основные свойства алгоритма:
Массовость – алгоритм должен быть применим для целого класса однотипных задач –
;
Конечность – алгоритм должен состоять из конечного числа шагов, каждый из которых выполняется за конечный промежуток времени.
Результативность – по окончании работы алгоритма должен быть получен некоторый результат.
Однозначность – применение алгоритма к одним и тем же исходным данным всегда должно давать один и тот же результат.
Правильность – при применении алгоритма к правильным исходным данным или допустимым исходным данным должно приводить к получению необходимых результатов. Доказательство правильности алгоритма – один из наиболее трудных этапов его создания. Наиболее распространенная процедура правильности алгоритма – это обоснование правомерности и проверка правильности выполнения каждого из шагов на наборе тестов, подобранных так, чтобы охватить все допустимые входные данные и все допустимые выходные данные.
Эффективность – алгоритм должен обеспечивать решение задачи за минимальный промежуток времени с минимальными затратами памяти. Для оценки алгоритмов существует много критериев. Чаще всего оценка алгоритма состоит в оценке временных затрат на решение задачи в зависимости от «размера» исходных данных. Используется также термин, временная способность и «трудоемкость алгоритма». Фактически эта оценка сводится к оценке количества основных операций, выполняемых алгоритмами, поскольку каждая конкретная операция выполняется за конечное заранее известное время.
Алгоритм решения задачи получается более эффективным, если использовать метод пошаговой разработки, суть которого заключается в том, что алгоритм разрабатывается «сверху вниз». Вначале определяется общий подход к решению задачи, затем выделяются отдельные самостоятельные части, которые выполняют какую-то конечную обработку данных. Каждая из выделенных частей в свою очередь может разбиваться на отдельные части. Такой подход позволяет разбить алгоритм на части (модули), каждая из которых решает самостоятельную подзадачу. Каждый из модулей реализуется в виде отдельной процедуру или функции. Тогда решение задачи состоит из последовательного вызова процедур. Программа, реализующая такой алгоритм, называется структурированной программой.
Построенные блок-схемы алгоритмов заданий приведены в приложении.
Описание задания № 1.
В задании требуется организовать начальную проверку Е после ввода. Организовать проверку на окончание выполнения программы по условию, если модуль последнего просуммированного члена ряда станет меньше Е.
Если условие не выполняется организовать цикл, вычисления очередного члена ряда и общей суммы ряда до выполнения условия.
Описание блок–схемы алгоритма для задания № 1.
Блок схема начинается с блока №1 <Начало>.
Следующий блок№2 – это инициализация данных для работы программы по умолчанию. Переменная n – номер члена ряда: начальное значение =1.
Блок <Ввода> №3 значений Е, Х.
Блок №4: инициализация вспомогательной переменной Z значением Z=X+1.
Блок №5 <Ветвления> проверяет значение переменной Е на корректность согласно условию Е<1. Если условие выполняется, то осуществляется переход к блоку №6. Иначе – к блоку №9 (вывод сообщения о неверно введённых данных).
Блок <ветвления> №6 проверяет значение модуля второго члена ряда Х на условие |Х|> E. Если условие выполняется, то осуществляется переход к блоку №8 (инициализация переменной R значением Х). Иначе – к блоку №7 (вывод суммы Z=1).
Блок №10 (модификация) – проверка условия |R|>E. Если условие выполняется, то осуществляется переход к блоку №11 (инициализация переменных Z, n, R). Иначе осуществляется переход к блоку №12 (вывод результата Z).
Блок №13 – конец программы.
Описание задания № 2.
В задании требуется организовать цикл вычисления Y в заданном интервале X при равномерном изменении его на заданный шаг ∆x. Произвести проверку X для вычисления по выражению в заданном диапазоне значений переменной X, что и реализовано с помощью блок схемы алгоритма.
Описание блок-схемы алгоритма задания № 2.
Блок-схема начинается с блока №1 <Начало>.
Блок №2 присвоение начальных значений переменным, используемых в задании;
Блок №3 (модификация) – организация цикла с начальным и конечным значениями Х=2, Х=5 соответственно. Если условие выполняется, то осуществляется переход к блоку №4. Иначе – к блоку №9 (конец программы).
Блок №4<ветвления> - начало проверки вхождения переменной X в заданные интервалы, проверят X≤3,5. Если да – в блок № 6 (инициализация переменной Y значением cos2x), если нет - переход к блоку № 5 (инициализация переменной Y значением sin x*Ln x). Осуществляется переход к блоку №7.
Блок №7 – вывод значения Y.
Блок №8 – добавляет шаг к X :Х=Х+. Осуществляется переход к блоку №3, где определяется, лежит ли X в заданном диапазоне или нет. Если да, то повторить вычисления с блока №4. Если X вышел за заданный интервал, закончить вычисления (переход к блоку №9).
Описание задания № 3.
В задании требуется организовать массив G(A,B) для данных и организовать обработку его элементов согласно заданию. В результате такой обработки необходимо вывести на экран сумму положительных или отрицательных элементов в зависимости от введённых элементов массива.
Описание блок-схемы алгоритма задания № 3.
Блок-схема начинается с блока №1 <Начало>.
Блок №2: инициализация нулевыми значениями переменных L1 и L2, количество положительных и отрицательных элементов соответственно и SUM1, SUM2 – сумма положительных и отрицательных элементов, соответственно.
Блок №3: Ввод переменных А и В, определяющих размерность массива G(A,B).
Блок №4(модификация): осуществляется проверка условия 1<i<A. Если условие выполняется, то осуществляется переход к блоку №5. Иначе – переход к блоку №7.
Блок №5(модификация): осуществляется проверка условия 1<j<В. Если условие выполняется, то осуществляется переход к блоку №6, где происходит ввод элемента G[i , j]. Иначе – то осуществляется переход к блоку №4 с увеличенным значением переменной – счётчика кол-ва строк на единицу.
Блок №7(модификация): осуществляется проверка условия 1<i<A. Если условие выполняется, то осуществляется переход к блоку №8. Иначе – переход к блоку №15(конец программы).
Блок №8(модификация): осуществляется проверка условия 1<j<В. Если условие выполняется, то осуществляется переход к блоку №9.
Блок №9: проверяется выполнение условия положительности элемента G[i , j]. Если условие выполняется, то осуществляется переход к блоку №11. Иначе – переход к блоку №10.
Блок №10: увеличение значения переменной L2 на единицу; добавление к переменной SUM2 значения элемента G[i , j]. Переход к блоку №12.
Блок №11: увеличение значения переменной L1 на единицу; добавление к переменной SUM1 значения элемента G[i , j]. Переход к блоку №12.
Блок №12: сравнение значений переменных L1 и L2. Если L1 > L2, то осуществляется переход к блоку №14. Иначе осуществляется переход к блоку №13.
Блок №13: осуществляется вывод значения переменной SUM1. Переход к блоку №15.
Блок №14: осуществляется вывод значения переменной SUM2. Переход к блоку №15.
Алгоритмические языки высокого уровня.Программа – это набор машинных команд, которые следует выполнить компьютеру для реализации того или иного алгоритма. Иными словами, программа – это форма представления алгоритма для исполнения его машиной. «Грамматические» правила языка программирования формулируются предельно четко и не допускают вольного расположения отдельных элементов команды и знаков препинания (иначе программа – посредник «не поймет» наши указания). Каждая команда имеет строго определенный синтаксис (правила записи). Команды на языке программирования часто называют операторами или инструкциями. Последовательность таких команд, реализуют тот или иной алгоритм, называют программой на исходном языке или просто исходным текстом (листингом программы).
Существуют два типа программ – посредников, работающих с исходными текстами:
Программа – компилятор (от слова compile – составлять, собирать) переводит исходный текст в машинный код и записывает его на диск в форме исполняемого (загрузочного) файла. После этого программа выполняется не зависимо от исходного текста. Раньше программы–компиляторы назывались просто и точно трансляторами (переводчиками).
Программа – интерпретатор всегда работает совместно с исходным текстом. Она разбирает каждую инструкцию исходного текста (интерпретирует ее) и немедленно исполняет (т.е. файл на машинного кода не создается). Программа в режиме интерпретации работает гораздо медленнее, чем такая же программа в машинном коде. Это связано с тем, что каждую инструкцию приходится разбирать во время выполнения (а не заранее, как при компиляции). Многие инструкции в программе выполняются многократно, – и при каждом выполнении интерпретируются заново. Поэтому, всюду, где возможно стремятся заменить режим интерпретации режимом компиляции.
Для рассматриваемых нами языков высокого уровня, ведущими фирмами, были написаны программы трансляторы, которые работают по компилирующему принципу. Для более глубокого понимания базовых конструкций языков, кратко рассмотрим упрощенную модель компилятора, показанную на рис. 1.
Рис. 1. Упрощенная модель компилятора.
ЛЕКСИЧЕСКИЙ АНАЛИЗАТОР.
Исходная программа на языке высокого уровня (ЯВУ), представляет собой цепочку символов, образуемую последовательным сцеплением всех строк программы. Среди допустимых для языка символов всегда выделяют несколько, так называемых,символов-разделителей, благодаря которым предложения исходной программы разбиваются на отдельные слова. Такие слова в теории компиляции называютсялексемами. Например, предложение (оператор)
for i:=1 to n do Writeln(i) ;
будет разбито на лексемы
for, i, :=, 1, to, n, do, Writeln, (, i, ), ;.
Здесь в качестве разделителя используется символ «пробел». Однако можно заметить, что между некоторыми лексемами пробел не стоит. Это связано с тем, что эти лексемы сами являются разделителями и поэтому для отделения их от других лексем специальные символы-разделители использовать не обязательно, хотя и допустимо. Например, то же самое предложение без изменения смысла можно было бы записать так
fox i := 1 to n do Writeln ( i ) ;
СИНТАКСИЧЕСКИЙ АНАЛИЗАТОР.
Синтаксический анализатор на основе синтаксических правил грамматики языка проверяет корректность записи предложений программы и переводит последовательность лексем в последовательность внутренних кодов компилятора. Эта последовательность уже отражает порядок действий, которые должен выполнить компьютер, но еще не является окончательным машинным кодом. В теории компиляции разработано несколько разновидностей внутренних кодов компилятора (триады, тетрады, ПОЛИЗ, деревья, атрибутированные деревья, р-код), однако их рассмотрение выходит за рамки упрощенной модели.
ГЕНЕРАТОР КОДА.
Генератор кода осуществляет перевод внутреннего кода компилятора в окончательный машинный код компьютера.
ТАБЛИЦЫ.
В процессе работы все рассмотренные выше блоки компилятора обращаются к общему наборутаблиц, куда помещается как постоянная для трансляции всех программ информация (например, таблица зарезервированных слов), так и информация, индивидуальная для каждой программы (например, таблицы идентификаторов, литералов и др.).
Языки высокого уровня.
Язык высокого уровня состоит из алфавита и ключевых слова, правил написания идентификаторов, а также особенности построения программ.
Алфавит языка.
Рассматриваемые нами языки программирования, имеют сходный алфавит — набор символов, разрешенных к использованию и воспринимаемых компилятором. В алфавит языка входят:
Латинские строчные и прописные буквы:
A,B,…,Z и a,b,…,z
Цифры от 0 до 9.
Символ подчеркивания «_» (код ASCII номер 95).
Из этих символов (и только из них!) конструируются идентификаторы — имена типов, переменных, констант, процедур, функций и модулей, а также меток переходов. Имя может состоять из любого числа перечисленных выше символов, но должно начинаться с буквы, или символа «_» например:
IX Char Var My_Int_Var C_Dd16_32m int _L
Прописные и строчные буквы не различаются на языках Pascal и Delphi: идентификаторы FILENAME и filename — это одно и тоже. Но на языке С, С++ прописные и строчные буквы различаются, поэтому приведенные идентификаторы – это два различных идентификатора. Длина имен формально не ограничена, но различаются в них – «лишь» первые 32–63 символа (остальные игнорируются [зависит от установок в компиляторе]).
Символ «пробел» (код 32). Пробел является разделителем в языках. Если между двумя буквами имени или ключевого слова стоит пробел, то две буквы будут считаться принадлежащими разным именам (словам). Пробелы отделяют ключевые слова от имен. Количество пробелов не является значащим. Там, где можно поставить один пробел, можно поставить их сколько угодно. Например, выражения
С=2+2; и С = 2 + 2 ; С:=2+2; С := 2+2;
для компиляторов эквивалентны.
Символы с кодами ASCII от 0 до 31 (управляющие коды). Они могут участвовать в написании значений символьных и строчных констант. Некоторые из них (7,10,13,8,26) имеют специальный смысл при проведении ряда операций с ними. Символы, замыкающие строку (коды 13 и 10), и символ табуляции (код 9) также могут быть разделителями:
С:=2+2;
эквивалентно построению
С := 2
+
2;
Специальные символы, участвующие в построении конструкций языка:
+-*/=<>[ ] .,():;-@ { } $ # '
Составные символы, воспринимаемые как один символ:
<= >= := (* *) (. .) .. && != <> \\
Разделители (пробелы) между элементами составных символов недопустимы.
Каждый из языков программирования имеет большое количество зарезервированных (или ключевых) слов. Эти слова не могут быть использованы в качестве имен (идентификаторов) в программе. Попытка нарушить этот запрет вызовет ошибку при обработке программы компилятором языка.
Программирование в среде компиляции Borland Pascal (BP).
Перейдем к рассмотрению программирования в среде Borland Pascal.
Написанная по правилам стандарта языка программа будет иметь в своем полном варианте структуру, показанную на рис. 2.
Регистр написания заголовков блоков неважен. Название программы в Borland Pascal имеет чисто декоративное назначение, как комментарий. Обязательная для многих других версий Паскаля конструкция
PROGRAM Имя ( input, output, … )
здесь не является необходимой.
PROGRAM Имя_программы; USES Список используемых библиотек (модулей); LABEL Список меток в основном блоке программы; CONST Определение констант программ; TYPE Описание типов; ОПРЕДЕЛЕНИЕ ПРОЦЕДУР (возможно заголовки); BEGIN тела процедур; END; ОПРЕДЕЛЕНИЕ ФУНКЦИЙ (возможно заголовки); BEGIN тела функций; END; BEGIN Основной блок программы; END. |
Рис. 2.
Группа целых типов.
В Borland Pascal включены пять типов для описания переменных и констант, представляющих целые числа. Их характеристики приведены в таблице 1.
Таблица № 1.
Название типа | Идентификатор | Диапазон представления чисел | Размер памяти |
Короткое целое со знаком | Shortint | -128..127 | 1 байт |
Целое со знаком | Integer | -32768..32767 | 2 байта |
Длинное целое со знаком | Longint | -2147483648.. 2147483647 | 4 байта |
Короткое целое без знака | Byte | 0..255 | 1байт |
Целое без знака | Word | 0..65535 | 2 байта |
Группа вещественных типов.
В группу вещественных типов входят пять типов, показанных в таблице 2.
Таблица №2.
Название типа | Иденти-фикатор | Диапазон представления чисел | Значащие цифры мантиссы | Размер памяти |
Вещественное одинарной точности | Single | от 1.5* 10–45 до 3.4* 1038 | 7..8 | 4 байта |
Вещественное | Real | от 2.9* 10–39 до 1.7* 1038 | 11..12 | 6 байтов |
Вещественное двойной точности | Double | от 5.0* 10–324 до 1.7* 10308 | 15..16 | 8 байтов |
Вещественное повышенной точности | Extended | от 3.4*10–4932 до 1.1*104932 | 19..20 | 10 байтов |
Целое в формате вещественного | Comp | от – 263 + 1 до 263 – 1 или приблизительно от -9.2* 1018 до 9.2* 1018 | 19..20 | 8 байтов |
Функция function Factor_n (n:longint):longint; получает длинное целое и возвращает длинное целое в точку вызова.
В функции используется оператор цикла со счетчиком (с параметром) for. Оператор цикла со счетчиком, в Паскале, подходит для программирования только таких циклических фрагментов, в которых до выполнения цикла известны начальное и конечное значения счетчика повторения цикла.
При вычислении факториала как раз и известны начальное и конечное значение счетчика и составной оператор цикла со счетчиком имеет несомненное преимущество перед операторами цикла с условиями.
В функции также используются две локальные переменные Il счетчик цикла, Rez результат вычисления факториала в цикле, это применяется потому что имя функции выступающее здесь переменной не может в теле функции появляться в правой части присвоения.
Функция function Pow (R:Real;N:integer):Real; Получает вещественное число возведения в степень R, степень возведения N целое число, и возвращает вещественное число Real.
Так как в Borland Pascal нет функции–оператора возведения в степень больше 2х то используя эту функцию можно получить вещественное число в степени большей двух без потери знака.
Для вычисления степени используется выражение для проверки знака используется условный оператор if .
ОСНОВЫ ВИЗУАЛЬНОГО ПРОГРАММИРОВАНИЯ
Программирование в Delphi строится на тесном взаимодействии двух процессов: процесса конструирования визуального проявления программы (т. е. ее Windows-окна) и процесса написания кода, придающего элементам этого окна и программе в целом необходимую функциональность. Для написания кода используется окно кода, для конструирования программы - остальные окна Delphi, и прежде всего - окно формы.
Между содержимым окон формы и кода существует неразрывная ;вязь, которая строго отслеживается Delphi. Это означает, что размещение на форме компонента приводит к автоматическому изменению кода программы и наоборот - удаление тех или иных автоматически вставленных фрагментов кода может привести к удалению соответствующих компонентов. Помня об этом, программисты вначале конструируют форму, размещая на ней очередной компонент, а уже только после этого переходят, если это необходимо, к писанию фрагмента кода, обеспечивающего требуемое поведение компонента в работающей программе.
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ И C++
Объектно-ориентировaнное прогрaммировaние (сокрaщенно ООР) является методом прогрaмировaния, имитирующим то, кaк человек выполняет кaкую-либо рaботу. Объектно-ориентировaнное прогрaммировaние - результaт естественной эволюции более рaнних методологий прогрaммировaния: оно более структурировaно и более модульное и aбстрaктное,
чем трaдиционное прогрaммировaние.
Объект - это абстрактная сущность, наделенная характеристиками объектов окружающего нас реального мира. Создание объектов и манипулирование ими - это вовсе не привилегия языка C++, а скорее результат методологии программирования, воплощающей в кодовых конструкциях описания объектов и операции над ними. Каждый объект программы, как и любой реальный объект, отличается собственными атрибутами и характерным поведением.
Объектно-ориентированное программирование (ООП) — это методика, которая концентрирует основное внимание программиста на связях между объектами, а не на деталях их реализации.
Три основных свойства хaрaктеризуют язык объектно-ориентированного прогрaммировaния:
Инкапсуляция
Инкапсуляция есть объединение в едином объекте данных и кодов, оперирующих с этими данными. В терминологии ООП данные называются членами данных (data members) объекта, а коды - объектными методами или функциями-членами (methods, member functions).
Инкапсуляция позволяет в максимальной степени изолировать объект от внешнего окружения. Она существенно повышает надежность разрабатываемых программ, т.к. локализованные в объекте функции обмениваются с программой сравнительно небольшими объемами данных, причем количество и тип этих данных обычно тщательно контролируются. В результате замена или модификация функций и данных, инкапсулированных в объект, как правило, не влечет за собой плохо прослеживаемых последствий для программы в целом (в целях повышения защищенности программ в ООП почти не используются глобальные переменные).
Другим немаловажным следствием инкапсуляции является легкость обмена объектами, переноса их из одной программы в другую.
Наследование
Одной из самых восхитительных особенностей живой природы является ее способность порождать потомство, обладающее характеристиками, сходными с характеристиками предыдущего поколения. Заимствованная у природы идея наследования решает проблему модификации поведения объектов и придает ООП исключительную силу и гибкость. Наследование позволяет, практически без ограничений, последовательно строить и расширять классы, созданные вами или кем-то еще. Начиная с самых простых классов, можно создавать производные классы по возрастающей сложности, которые не только легки в отладке, но и просты по внутренней структуре.
Последовательное проведение в жизнь принципа наследования, особенно при разработке крупных программных проектов, хорошо согласуется с техникой нисходящего структурного программирования (от общего к частному), и во многом стимулирует такой подход. При этом сложность кода программы в целом существенно сокращается. Производный класс (потомок) наследует все свойства, методы и события своего базового класса (родителя) и всех его предшественников в иерархии классов.
При наследовании базовый класс обрастает новыми атрибутами и операциями. В производном классе обычно объявляются новые члены данных, свойства и методы. При работе с объектами программист обычно подбирает наиболее подходящий класс для решения конкретной задачи и создает одного или нескольких потомков от него, которые приобретают способность делать не только то, что заложено в родителе. Дружественные функции позволяют производному классу получить доступ ко всем членам данных внешних классов.
Полиморфизм
Это придaвaние действию одного имени, которое совместно используется объектами всей иерархии, причем каждый объект иерархии реализует это действие своим собственным, подходящим для него, образом.
Языковые расширения Turbo Pascal 5.5 дают Вам возможность полностью использовать все мощные средства объектно-ориентированного прогрaммировaния: повышенная структурированность, повышенная модульность и aбстрaкция, a также возможность многократного использования, встроенные прямо в язык прогрaммировaния. Все эти свойства делают программу более структурированной, легко поддерживаемой и легко расширяемой.
Новизна ООР зaключaется в том, что оно иногда зaстaвляет Вас отбросить знакомые привычки и стaндaртные способы мышления, которые в течение многих лет использовались в традиционном прогрaммировaнии. Если Вы сможете это сделaть, ООР стaнет для Вaс простой, незaмысловaтой методологией прогрaммировaния, превосходящей трaдиционную методологию прогрaммировaния, и незаменимой для решения многих зaдaч по созданию программного обеспечения.
ПРИЛОЖЕНИЕ №1
Блок-схемы алгоритмов
Задание №1
Задание №2
Задание№3
ПРИЛОЖЕНИЕ №2
Листинги программ и результат работы
Задание №1 | Turbo C++ IDE |
#include<iostream.h>
#include<math.h>
#include<conio.h>
void main()
{
int n=1;
double e,x,r,z;
clrscr();
cout<<"Input X:\t";
cin>>x;
cout<<"Input E:\t";
cin>>e;
z=1+x;
if (1>e)
{
if (fabs(x)>e)
{
r=x;
while (fabs(r)>e)
{
z+=r; n++; r*=x/n;
}
cout<<"Z= \t\t"<<z<<endl;
}
else
cout<<"Z=\t\t1"<<endl;
}
else
cout<<"\nОшибка ввода: E>1"<<endl;
}
Задание №1 | Turbo Pascal |
Program lab_1;
Uses Crt;
Var
n:integer;
e,x,r,z:real;
Begin
clrscr;
n:=1;
Write('Input E:');Readln(e);
Write('Input X:');Readln(x);
z:=1.0+x;
if 1.0>e then
begin
if abs(x)>e then
begin
r:=x;
while abs(r)>e do
begin
z:=z+r;
n:=n+1;
r:=r*(x/n);
end;
writeln('Summa=',z:3:5);
end
else writeln('Z=1');
end
else writeln('Ошибка ввода: E>1 !');
readln;
End.
Задание №1 | Borland Delphi 5 |
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
e,x,r,z:real;
n:integer;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
Code:integer;
s: string[11];
begin
n:=1;
val(Edit1.Text,e,Code);
val(Edit2.Text,x,Code);
z:=1+x;
if 1>e then
begin
if Abs(x)>e then
begin
r:=x;
while Abs(r)>e do
begin
z:=z+r; n:=n+1; r:=r*(x/n);
end;
Str(z:2:7,s);Edit3.Text:=s;
end
else Edit3.Text:='Z=1';
end
else Edit3.Text:='Warning! E>1';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Close();
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
end;
end.
Задание №2 | Turbo C++ IDE |
#include<iostream.h>
#include<math.h>
void main()
{
float dx=0.25,y,x;
for (x=2.0;x<=5.0 +0.5*dx;x+=dx)
{
if (x<=3.5)
y=cos(x)*cos(x);
else
y=sin(x)*log(x);
cout<<"Y= "<<y<<endl;
}
}
Задание №2 | Turbo Pascal |
Program lab_2;
Uses Crt;
Const
dx=0.25;
Var
x,y:real;
Begin
clrscr;
x:=2.0;
while x<5.0+dx/2 do
begin
if x<=3.5 then
begin
y:=sqr(cos(x));
end
else y:=sin(x)*ln(x);
writeln(y:3:5);
x:=x+dx;
end;
readln;
End.
Задание №2 | Borland Delphi 5 |
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Const
dx=0.25;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button2Click(Sender: TObject);
begin
Close();
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Code:integer;
x,y:real;
s:string[11];
begin
x:=2.0;
while (x<5.0+0.5*dx) do
begin
if x<=3.5 then y:=sqr(cos(x))
else y:=sin(x)*ln(x);
x:=x+dx;
Str(y:2:7,s);
Listbox1.Items.Add(s);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Listbox1.Items.Clear;
end;
end.
Задание №3 | Turbo C++ IDE |
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
int main()
{
int l1=0,l2=0,i,j,a,b;
float G[10][10],sum1=0,sum2=0;
clrscr();
cout<<"Input A and B: ";
cin>>a;
cin>>b;
for (i=1;i<=a;i++)
for (j=1;j<=b;j++)
{
cout<<"G["<<i<<","<<j<<"]= ";
cin>>G[i][j];
}
for (i=1;i<=a;i++)
for (j=1;j<=b;j++)
{
if (G[i][j]>=0.0)
{
l1+=1;sum1+=G[i][j];
}
else
{
l2+=1;sum2+=G[i][j];
}
}
if (l1>l2) cout<<"Summa(+)= "<<sum1;
if (l1<l2) cout<<"Summa(-)= "<<sum2;
if (l1==l2) cout<<"(-) = (+)";
getch();
return 0;
}
Задание №3 | Turbo Pascal |
Program lab_3;
Uses Crt;
Var
g:array[1..100,1..100] of real;
l1,l2,i,j,a,b:integer;
sum1,sum2:real;
Begin
clrscr;
l1:=0;l2:=0;sum1:=0;sum2:=0;
write('Input a: ');
readln(a);
write('Input b: ');
readln(b);
for i:=1 to a do
begin
for j:=1 to b do
begin
write('Input G[',i,',',j,']:');readln(g[i,j]);
end;
writeln;
end;
for i:=1 to a do
begin
for j:=1 to b do
begin
if g[i,j]>=0.0 then
begin
l1:=l1+1;sum1:=sum1+g[i,j];
end
else
begin
l2:=l2+1;sum2:=sum2+g[i,j];
end;
end;
end;
if l1>l2 then write('Z+ =',sum1:3:5);
if l1<l2 then write('Z- =',sum2:3:5);
if l1=l2 then write('l1=l2');
readln;
End.
Задание №3 | Borland Delphi 5 |
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
ListBox1: TListBox;
Button5: TButton;
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i,j,m,n:integer;
g:array[1..100,1..100] of real;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
i:=1;
j:=1; {FormCreate}
m:=1;
n:=0;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
i:=i+1;
j:=1; {NEXT}
m:=m+1;
n:=0;
Listbox1.Items.Add('');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Listbox1.Items.Add(Edit1.Text);
g[i,j]:=StrToFloat(Edit1.Text);
j:=j+1;
n:=n+1; {ADD}
Edit1.Text:='';
end;
procedure TForm1.Button4Click(Sender: TObject);
var
l1,l2:integer;
sum1,sum2:real;
s:string;
begin
l1:=0;l2:=0;sum1:=0.0;sum2:=0.0;
for i:=1 to m do {CALC}
for j:=1 to n do
begin
if g[i,j]>=0.0 then
begin
sum1:=sum1+g[i,j];
l1:=l1+1;
end;
if g[i,j]<0.0 then
begin
sum2:=sum2+g[i,j];
l2:=l2+1;
end;
end;
if l1>l2 then
begin
str(sum1:3:5,s);
Edit2.Text:=s;
end;
if l1<l2 then
begin
str(sum2:3:5,s);
Edit2.Text:=s;
end;
if l1=l2 then Edit2.Text:=' "+" = "-" ';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Close();
end;
procedure TForm1.Button5Click(Sender: TObject);
var
sum1,sum2:real;
begin
Edit1.Text:='';
Edit2.Text:=''; {CLEAR}
Listbox1.Clear;
sum1:=0.0;
sum2:=0.0;
i:=1;j:=1;m:=1;n:=0;
end;
end.
Список используемой литературы:
1 | Джесс Либерти. Освой самостоятельно С++ за 21 день. М, Вильямс, 2001 |
2 | Конспект лекций по курсам «Системное программирование», «Алгоритмические языки». |
3 | Г.С. Прокудин, Л.М. Оленина. Компьютерная техника и программирование. Часть 2. Алгоритмизация и программирование. Издательство Украинско-финского института менеджмента и бизнеса. Киев, 1998, 56. |
4 | В.И. Пономарёва. Практикум по программированию в среде Turbo Pascal. Симферополь, Таврида, 1998, 256. |
5 | Глушаков С.В., Коваль А.В., Смирнов С.В. Язык программирования С++. Харьков, Фолио, 2002, 500. |