data); tmp=top; top=top->prev; free(tmp); } Procedure pop; var tmp: stack; begin writeln(top^.data); tmp:=top; top:=top^.prev; Dispose(tmp); end; Реализация процедуры выталкивания из стека: объявление временной переменной для хранения адреса вершины стека сохранение адреса вершины стека присвоение вершине стека адреса предыдущего элемента освобождение памяти">
Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемМихаил Желваков
1 Сравнение реализаций пользовательских типов переменных в языках высокого уровня. typedef struct tagStack{ double data; struct tagStack* prev; }*stack; stack top; type stack=^tagStack; tagStack=record data: double; prev: stack; end; var top: stack; Структура tagStack вещ data stack prev Конец-структура Тип stack (у)tagStackstack top Определение нового типа данных: Объявление нового типа данных: Объявление переменной нового типа данных:
2 void push(double d){ stack s; s=malloc(sizeof(struct tagStack)); (*s).prev=top; s->data=d; top=s; } Procedure push(d: double); var s: stack; begin s:=new(stack); s^.prev:=top; s^.data:=d; top:=s; end; Процедура push(вещ d) stack s=Выделить(stack) s->prev=top s->data=d top=s Возврат Конец-прцедура Реализация процедуры вставки в стек: объявление переменной выделение памяти сохранение адреса вершины стека присвоение вершине стека адреса нового элемента
data); tmp=top; top=top->prev; free(tmp); } Procedure pop; var tmp: stack; begin writeln(top^.data); tmp:=top; top:=top^.prev; Dispose(tmp); end; Реализация процедуры выталкивания из стека: объявлен" title="void pop(){ stack tmp; fprintf(stdout, "%g\n", top->data); tmp=top; top=top->prev; free(tmp); } Procedure pop; var tmp: stack; begin writeln(top^.data); tmp:=top; top:=top^.prev; Dispose(tmp); end; Реализация процедуры выталкивания из стека: объявлен" class="link_thumb"> 3 void pop(){ stack tmp; fprintf(stdout, "%g\n", top->data); tmp=top; top=top->prev; free(tmp); } Procedure pop; var tmp: stack; begin writeln(top^.data); tmp:=top; top:=top^.prev; Dispose(tmp); end; Реализация процедуры выталкивания из стека: объявление временной переменной для хранения адреса вершины стека сохранение адреса вершины стека присвоение вершине стека адреса предыдущего элемента освобождение памяти data); tmp=top; top=top->prev; free(tmp); } Procedure pop; var tmp: stack; begin writeln(top^.data); tmp:=top; top:=top^.prev; Dispose(tmp); end; Реализация процедуры выталкивания из стека: объявлен"> data); tmp=top; top=top->prev; free(tmp); } Procedure pop; var tmp: stack; begin writeln(top^.data); tmp:=top; top:=top^.prev; Dispose(tmp); end; Реализация процедуры выталкивания из стека: объявление временной переменной для хранения адреса вершины стека сохранение адреса вершины стека присвоение вершине стека адреса предыдущего элемента освобождение памяти"> data); tmp=top; top=top->prev; free(tmp); } Procedure pop; var tmp: stack; begin writeln(top^.data); tmp:=top; top:=top^.prev; Dispose(tmp); end; Реализация процедуры выталкивания из стека: объявлен" title="void pop(){ stack tmp; fprintf(stdout, "%g\n", top->data); tmp=top; top=top->prev; free(tmp); } Procedure pop; var tmp: stack; begin writeln(top^.data); tmp:=top; top:=top^.prev; Dispose(tmp); end; Реализация процедуры выталкивания из стека: объявлен">
4 int main(){ double x; top=NULL; for(x=0.0; x
5 Объектно-ориентированное программирование Центральное место в ООП занимает понятие пользовательского типа данных называемого классом, объединяющего под общим именем не только данные, но и функции. Парадигма ООП родилась из потребностей коллективной разработки, повтоного использования кода и сокрытия кода. Описание класса в соответст вие с UML:
6 В дополнение к классическому представлению типов данных, основанных на структурах данных, ООП вносит в него принципиально новые черты, которые можно разделить на следующие группы: инкапсуляция; наследование; полиморфизм. Переменные соответствующего типа называются объектами (или экземплярами) данного класса. Переменные - члены класса, называются его свойствами, а функции - члены класса, называются его методами.
7 Инкапсуляция: Свойства и методы класса могут быть открытыми или закрытыми для пользователя (программиста, который использует этот класс). В конкретных реализациях языков ООП это достигается использованием модификаторов public, private и (иногда) protected. class Test{ public: int a; private: int f(int a, int b){ return a+b; } public double getData({ return c}; private: double c; }; Test A; int d; d=A.a; //OK d=A.f(2,6); //Error double d1; d1=A.c; //Error d1=A.getData(); //OK
8 Наследование: можно расширить возможности класса посредством наследования. class TestA{ public: TestA():c(3.1415){c*=2; } //Конструктор ~TestA(){} //Деструктор private: double c; public: double getData({ return c} double x; protected: int q; }; class TestB: public TestA{ int s; public: int f(int a){return a*q} }; TestB B; B.s; //OK B.x; //OK B.c; //Error B.q; //Error
9 Полиморфизм: поведение, зависящее от контекста. Перегрузка (overloading): class Test2{ double f(int a){return a*2.0} double f(double a){return a/2.0; } }; double c; c=f(3); // c=6; c=f(3.0);// c=1.5
10 Переопределение(overriding) : class Test3{ public: virtual int g(int a){return a*a;} virtual int g1(int a)=0; }; class Test4:public Test3{ public: virtual int g(int a){ return a+4; } }; Test3 D3; Test4 D4; int c; c=D3.g(3) // 9 c=D4.g(3) //7 c=((D3)D4).g(3) //9
11 var Word, Doc Word=new ActiveXObject("Word.Application"); Word.Visible=false; Doc=Word.Documents.Add(); Doc.Content.Bold=1; Doc.Content.Font.Size=32; Doc.Content.Text="Попробуйте автоматизировать работу с Microsoft Word"; Doc.SaveAs("C:\\temp-work\\Test.doc"); Word.Application.Quit(); Модель составных компонентов - COM-технология, реализует ООП на двоичном уровне. В настоящее время COM-объекты называются объектами ActiveX Пример, объектная модель Microsoft Office:
12 Визуальное программирование:
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.