4615

Написание и использовании пользовательских подпрограмм на языке Delphi

Лабораторная работа

Информатика, кибернетика и программирование

В практике программирования довольно часто встречается ситуация, когда одну и ту же группу операторов, реализующих определенную цель, требуется повторить без изменений в нескольких других местах программы. Чтобы избавить программиста от сто...

Русский

2012-11-23

159 KB

14 чел.

Введение

В практике программирования довольно часто встречается ситуация, когда одну и ту же группу операторов, реализующих определенную цель, требуется повторить без изменений в нескольких других местах программы. Чтобы избавить программиста от столь нерационального занятия, в 50-х годах ХХ века была предложена концепция подпрограмм, получившая широкое распространение практически во всех языках программирования.

Технология программирования с использованием подпрограмм, разработанных пользователем, дает ряд преимуществ. Она обеспечивается возможность:

  •  организовать работу нескольких программистов над одной программой с последующим объединением отдельно отлаженных и относительно независимых блоков в единое целое;
  •  проводить отладку отдельных блоков и только после этого программы в целом;
  •  значительно экономить память, так как многократно используемый блок заносится в память только один раз;
  •  упростить внесение изменений в программу, так как исправление ошибки в одном блоке не вызывает корректировку других блоков.


I. ЦЕЛЬ И СОДЕРЖАНИЕ РАБОТЫ

Цель лабораторной работы:

  •  привитие практических навыков в написании и использовании пользовательских подпрограмм на языке Delphi.

Содержание работы:

1. Процедуры и функции, определенные пользователем.

2. Рекурсивные подпрограммы.

Требования к отчету:

Отчет по работе должен содержать:

  •  название лабораторного занятия, цель работы, порядок выполнения каждого пункта задания, выводы по каждому пункту задания;
  •  указанные в заданиях файлы, сохраненные в личной папке на жестком диске.

II. МЕТОДИКА ВЫПОЛНЕНИЯ РАБОТЫ

1. Процедуры и функции, определенные пользователем

Подпрограмма – это именованная логически законченная группа операторов языка, которую можно вызвать для выполнения по имени любое количество раз из различных мест программы. В языке Delphi для организации подпрограмм используются процедуры и функции.

Процедура – это независимая поименованная часть программы, предназначенная для выполнения определенных действий и состоящая из заголовка процедуры и тела процедуры. По структуре ее можно рассматривать как программу в миниатюре. После однократного описания процедуру можно вызвать по имени из последующих частей программы. Когда процедура выполнит свою задачу, программа продолжится с оператора, следующего непосредственно за оператором вызова процедуры.

Использование имени процедуры в программе называется оператором процедуры или вызовом процедуры. Имя процедуры нельзя использовать в выражениях в качестве операндов.

Функция аналогична процедуре, но имеется два отличия:

  1.  функция передает в точку вызова скалярное значение (результат своей работы);
  2.  имя функции можно включать в выражения как операнд.

Функция, если она встречается в выражении, называется указателем функции или обращением к функции.

Все процедуры и функции языка Delphi подразделяются на две группы: встроенные и определенные пользователем.

Встроенные (стандартные) процедуры и функции являются частью языка и могут вызываться по имени без предварительного определения в разделе описаний блока.

Delphi предоставляет программисту достаточно широкий набор встроенных процедур и функций, которые реализуют наиболее часто встречающиеся при написании программ действия. В соответствии с областями применения различают группы встроенных процедур и функций: арифметические, скалярные, преобразования типов, специальные, обработки строк, обработки файлов, управления памятью и др. Они входят в состав подключаемых модулей.

Процедуры и функции пользователя организовываются самим программистом в соответствии с синтаксисом языка и представляют собой локальный блок. Предварительное описание процедур и функций пользователя обязательно.

Пользовательские процедуры и функции состоят из операторов, локальных данных и могут включать внутренние процедуры и функции.

Процедуры и их использование

Процедура пользователя представляет собой именованную группу операторов, реализующую определенную часть общей задачи и вызываемую для выполнения по имени из любой позиции раздела операторов.

Подпрограмма реализуется в виде процедуры в двух случаях:

  •  когда подпрограмма не возвращает в основную (вызывающую) программу никаких данных (например, вычерчивает график в диалоговом окне);
  •  когда подпрограмма возвращает в вызвавшую ее программу больше чем одно значение (например, подпрограмма, решающая квадратное уравнение, должна вернуть в вызвавшую ее программу два дробных числа — корни уравнения).

Если программист вводит собственную процедуру, то она должна быть полностью описана в разделе описаний программы.

Описание процедуры включает заголовок и тело процедуры. Заголовок состоит из ключевого слова Procedure, идентификатора (имени) процедуры и необязательного заключенного в круглые скобки списка формальных параметров с указанием типа каждого параметра.

В общем виде структура описания процедуры может иметь вид:

procedure Имя_процедуры(var Пар_1: Тип_1; ... var Пар_К: Тип_К);

 // Заголовок процедуры

var

 // Разделы описания локальных меток,

 // констант, типов, переменных, внутренних процедур и функций

begin

 // Раздел операторов (Тело_процедуры)

end;

где Имя_процедуры – идентификатор, уникальный в пределах программы, который используется для вызова процедуры;

var Пар_1: Тип_1; ... var Пар_К: Тип_К – список формальных параметров (слово var перед именем параметра не является обязательным; однако если оно стоит, то это означает, что в инструкции вызова процедуры фактическим параметром обязательно должна быть переменная). Параметры процедуры используются для передачи данных в процедуру, а также для возврата данных из процедуры в вызвавшую ее программу.;

Тело_процедуры – локальный блок, включающий операторы, которые реализуют заданный алгоритм. По структуре аналогичен программному блоку.

Например, заголовок процедуры имеет вид:

Procedure Sort(Var A: integer; Var B: real);

Procedure Kvadr(Alf,Bet: cardinal; Gam: boolean);

Procedure SunWed;   // Алгоритм, реализованный процедурой,

                   // не требует формальных параметров

Для обращения к процедуре используется оператор вызова процедуры, состоящий из имени процедуры и списка фактических параметров, отделенных друг от друга запятыми и заключенных в круглые скобки. Список параметров может отсутствовать, если процедуре не передается никаких значений:

                // Оператор вызова процедуры

Имя_процедуры(Список_фактических_параметров);

где Список_фактических_параметров – разделенные запятыми фактические параметры. Фактическим параметром, в зависимости от описания формального параметра в объявлении процедуры, может быть переменная, выражение или константа соответствующего типа.

Если в описании процедуры перед именем параметра стоит слово var, то при вызове процедуры на месте соответствующего параметра должна стоять переменная основной программы. Использование константы или выражения считается ошибкой, и компилятор в этом случае выведет сообщение: Types of actual and formal var parameters must be identical (тип фактического параметра должен соответствовать типу формального параметра).

Для указанных выше примеров операторы вызова процедуры будут иметь вид:

Sort(A1,B1);        // Параметры - значения переменных

Kvadr(14,25,True);  // Параметры - непосредственно значения

SunMassiv;          // Фактические параметры отсутствуют

Параметры обеспечивают механизм замены, который позволяет выполнять процедуру с различными начальными данными. Между фактическими параметрами в операторе вызова процедуры и формальными параметрами в заголовке описания процедуры устанавливается взаимно-однозначное соответствие в результате их перебора слева направо.

Количество и тип формальных параметров должны быть равны количеству и типу фактических параметров.

Задание № 1. Процедура решения квадратного уравнения

  1.  Разработайте консольное приложение, в котором используется процедура решения квадратного уравнения (ах2 + + с = 0). У процедуры должно быть шесть параметров:
    •  первые три предназначены для передачи в процедуру исходных данных — коэффициентов уравнения (a, b, c);
    •  параметры x1 и х2 используются для возврата результата — корней уравнения;
    •  параметр ok служит для передачи информации о том, что решение существует (True) или не существует (False).
  2.  Листинг программы должен иметь примерно следующий вид:

program Kvadrat_Ur;

{$APPTYPE CONSOLE}

uses

 SysUtils;

var

  a1,b1,c1: real;

     k1,k2: real;

       Rez: boolean;

// Описание процедуры решения квадратного уравнения

procedure SqRoot(a,b,c:real; var x1,x2:real; var ok:boolean);

   // a,b,c - коэффициенты уравнения;

   // x1,x2 - корни уравнения;

   // ok = True - решение есть, ok = False - решения нет

var

 d: real;                  // Дискриминант

begin

 d:=Sqr(b)-4*a*c;

 if d<0 then ok:=False     // Уравнение не имеет решения

        else

          begin

            ok:=True;

                      // Действительные корни уравнения

            x1:=(-b+Sqrt(d))/(2*a);

            x2:=(-b-Sqrt(d))/(2*a);

          end;

end;

begin

 writeln('Vvedite znachenia koefficientov a, b, c');

 readln(a1,b1,c1);

 Sqroot(a1,b1,c1,k1,k2,Rez); // Оператор обращения к процедуре

 if Rez then

          writeln('x1=',k1:10:5,' x2=',k2:10:5)

       else writeln('Reshenia net');

 readln

end.

  1.  Откомпилируйте и выполните программу. При наличии ошибок, исправьте их.
  2.  Проверьте решение задачи на двух наборах аргументов: (a=3, b=8, c=2) и (a=7, b=5, c=1). При отсутствии ошибок вы должны получить результаты, показанные на рис. 1.1.

  1.   Сохраните проект программы в папке \Мои документы\ЛЗ-03\Задание1 под именем Kvadrat_Ur.

Функции, определяемые пользователем

Хотя набор встроенных функций языка Delphi достаточно широк, он вряд ли может удовлетворить требованиям каждого программиста. Поэтому пользователю предоставлена возможность самому реализовать нужные ему алгоритмы в виде функций и обращаться к ним из программ по мере необходимости.

Функция — это подпрограмма, т.е. последовательность инструкций, имеющая имя и возвращающая единственное значение.

Функция, определенная пользователем, описывается в соответствующем разделе программы и включает заголовок и тело функции. Заголовок содержит зарезервированное слово Function, идентификатор (имя) функции, необязательный список формальных параметров, заключенный в круглые скобки, и тип возвращаемого функцией значения.

В общем виде структура объявления функции пользователя имеет вид:

function Имя_функции(Пар_1: Тип_1, ..., Пар_К: Тип_К): Тип_рез.);

var  

 // Разделы описания локальных меток, констант,

 // типов, переменных, внутренних процедур и функций

begin

 // Раздел операторов, среди которых должен быть хотя бы один,

 // который присваивает имени функции значение результата

 Имя_функции:=Выражение;

end;

где Имя_функции — уникальный в пределах блока идентификатор, используемый для перехода из программы к инструкциям функции. Возвращаемый результат может иметь любой простой, строковый или указательный тип;

(Пар_1: Тип_1, ..., Пар_К: Тип_К) – список формальных параметров, используемых для вычисления значения функции. Отличие параметра от обычной переменной состоит в том, что он объявляется не в разделе объявления переменных, который начинается словом var, а в заголовке функции. Конкретное значение параметр получает во время работы программы в результате вызова функции из основной программы;

Тип_результата – тип значения, которое функция возвращает в вызвавшую ее программу.

Следует обратить внимание, что в последовательности операторов, составляющих тело функции, должен находиться, по крайней мере, один оператор, присваивающий имени функции значение. Если таких присваиваний несколько, то результатом выполнения функции будет значение последнего оператора присваивания. Тип выражения, определяющего значение функции, должен совпадать с типом функции, указанным в ее объявлении.

Процесс перехода к исполнению инструкций функции называется вызовом функции или обращением к функции. Процесс перехода от инструкций функции к инструкциям программы, вызвавшей функцию, называется возвратом из функции.

В общем виде инструкция обращения к функции выглядит так:

Переменная:=Имя_функции(Параметры);

где Переменная – имя переменной, которой надо присвоить значение, вычисляемое функцией;

Имя_функции –  имя функции, значение которой надо присвоить переменной;

Параметры — список фактических параметров, которые применяются для вычисления значения функции. В качестве параметров обычно используют переменные или константы.

Следует обратить внимание на то, что:

  •  каждая функция возвращает значение определенного типа, поэтому тип переменной, которой присваивается значение функции, должен соответствовать типу функции;
  •  тип и количество параметров для каждой конкретной функции строго определены.

Задание № 2. Функция расчета площади треугольника

  1.  Разработайте консольное приложение, рассчитывающее площади треугольников и сравнивающее их по размерам.
  2.  Каждый треугольник задается координатами своих вершин (x1, y1), (x2, y2), (x3, y3) (рис. 1.2). Расчет площади треугольника рассчитывается в следующей последовательности:
  •  расчет длин сторон по формулам:

  •  расчет параметра:

  •  расчет площади треугольника:

.

  1.  Оформите расчет площади треугольника в виде функции, при обращении к которой передаются координаты трех точек, а возвращается значение функции.
  2.  Рассчитайте значения площадей двух треугольников и определите, какая из них больше.
  3.  Найдите сумму двух площадей.
  4.  Листинг программы должен иметь примерно следующий вид:

program Ploshadi;

{$APPTYPE CONSOLE}

uses

 SysUtils;

// Объявление переменных

var

 x1,x2,x3,y1,y2,y3: real;

        s1,s2,ssum: real;

// Заголовок функции

function Plosh(x1,x2,x3,y1,y2,y3: real): real;

// Объявление локальных переменных

var

 a,b,c,p: real;

begin

 a:=sqrt(sqr(x2-x1)+sqr(y2-y1));   // Расчет сторон треугольника

 b:=sqrt(sqr(x3-x2)+sqr(y3-y2));

 c:=sqrt(sqr(x3-x1)+sqr(y3-y1));

 p:=(a+b+c)/2;

 Plosh:=sqrt(p*(p-a)*(p-b)*(p-c)); // Расчет площади треугольника

end;

begin

 writeln('Vvedite koordinaty vershin 1-go treugolnika');

 write('x1= ');

 readln(x1);

 write('y1= ');

 readln(y1);

 write('x2= ');

 readln(x2);

 write('y2= ');

 readln(y2);

 write('x3= ');

 readln(x3);

 write('y3= ');

 readln(y3);

 s1:=Plosh(x1,x2,x3,y1,y2,y3);  // Обращение к функции

 writeln('Vvedite koordinaty vershin 2-go treugolnika');

 write('x1= ');

 readln(x1);

 write('y1= ');

 readln(y1);

 write('x2= ');

 readln(x2);

 write('y2= ');

 readln(y2);

 write('x3= ');

 readln(x3);

 write('y3= ');

 readln(y3);

 s2:=Plosh(x1,x2,x3,y1,y2,y3);  // Обращение к функции

 ssum:=s1+s2;

 if s1>s2 then 

            writeln('s1>s2',' s1=',s1:7:3,' s2=',s2:7:3)

          else

            if s1=s2 then 

                    writeln('s1=s2',' s1=',s1:7:3,' s2=',s2:7:3)

                     else

                    writeln('s1<s2',' s1=',s1:7:3,' s2=',s2:7:3);

 writeln('Summarnaya ploshad = ',ssum:7:3);

 readln

end.

  1.  Откомпилируйте и выполните программу. При наличии ошибок, исправьте их.
  2.  Проверьте решение задачи для двух треугольников с координатами вершин: первого треугольника (1, 1), (3, 5), (4, 2) и второго треугольника (3, 1), (0, 4), (5, 5). При отсутствии ошибок вы должны получить результаты, показанные на рис. 1.3.

  1.  Сохраните проект программы в папке \Мои документы\ЛЗ-03\Задание2 под именем Ploshadi.

Задание № 3. Перекодировка ASCII-строки в  ANSI-строку

Вы, очевидно, обратили внимание на то, что если попытаться в консольное приложение вставить операторы вызова процедур write или writeln, в которых присутствуют сообщения на украинском или русском языке, то на экране появляется какая-то «абракадабра». Это объясняется тем, что консольное приложение создается в Windows, а выполняется как программа DOS. В DOS используется кодировка ASCII, а в WindowsANSI. Различие между системами кодировки символов заключается в следующем: в ANSI русские буквы кодируются числами от 192 до 255, а в ASCII – от 128 до 175 (А .. Я, а .. п) и от 224 до 239 (р .. я). Английские же буквы кодируются в обеих системах одинаково. Поэтому консольные приложения должны выводить сообщения на английском, что не всегда удобно.

Проблему вывода сообщений на кириллице консольными приложениями можно решить, разработав функцию перекодировки ANSI-строки в строку ASCII.

  1.  Разработайте функцию RUS, которой передается строка mes произвольной длины с символами кириллицы в системе ANSI из операторов вызова процедур write или writeln, а выдается строка с символами кириллицы в системе ASCII.
  2.  В теле функции производится последовательный перевод каждого символа mes[i] полученной строки, где i принимает значения от 1 до length(mes) – длина строки.
  3.  Перевод символов осуществляется по правилам:
    •  если mes[i] {'A'..'п'}, то mes[i]:=Chr(Ord(mes[i])-64);
    •  если mes[i] {'р'..'я'}, то mes[i]:=Chr(Ord(mes[i])-16).
  4.  Листинг программы должен иметь примерно следующий вид:

program perevod;

{$APPTYPE CONSOLE}

uses

 SysUtils;

// Функция Rus преобразует ANSI-строку в ASCII-строку

function Rus(mes: string): string;

 // В ANSI русские буквы кодируются числами от 192 до 255,

 // в ASCII - от 128 до 175 (А..Я а..п) и от 224 до 239 (р..я).

var

 i: integer; // Номер обрабатываемого символа

begin

 for i:=1 to length(mes) do

   case mes[i] of

     'A'..'п': mes[i]:=Chr(Ord(mes[i])-64);

     'р'..'я': mes[i]:=Chr(Ord(mes[i])-16);

   end;

 Rus:=mes;

end;

// основная программа

begin

 writeln(Rus('Переключитесь на русскую раскладку клавиатуру'));

 writeln(Rus('Введите любую фразу'));

 write(Rus('Для завершения нажмите '), '<Enter>');

 readln;

end.

  1.  Откомпилируйте и выполните программу. При наличии ошибок, исправьте их.
  2.  Сохраните проект программы в папке \Мои документы\ЛЗ-03\Задание3 под именем Perevod.

Теперь можете копировать текст функции RUS в другие консольные приложения и использовать символы кириллицы для вывода информации на экран.

2. Рекурсивные подпрограммы

Во многих случаях алгоритм решения задачи требует вызова для выполнения подпрограммы из раздела операторов той же самой подпрограммы, т.e. подпрограмма вызывает сама себя. Такой способ вызова называется рекурсией. Рекурсия полезна, прежде всего, в случаях, когда основную задачу можно разделить на подзадачи, имеющие ту же структуру, что и первоначальная задача. Подпрограммы, реализующие рекурсию, называются рекурсивными.

Задание № 4. Рекурсивное вычисление факториала

Факториал целого положительного числа n определяется как произведение первых n целых чисел:

n! = 1*2*3* ... *n, причем полагается, что 0!=1.

Такое произведение можно легко вычислить с помощью оператора цикла for:

program Factorial;

{$APPTYPE CONSOLE}

uses

 SysUtils;

var

 Fact: cardinal;

  n,i: integer;

begin

 Write('Vvedite celoe chislo n: ');

 Readln(n);

 Fact:=1;

 for i:=1 to n do

   Fact:=Fact*i;

 Writeln('n! = ',Fact);

 Readln

end.

Однако существует другое определение факториала, в котором используется рекуррентная формула:

(1) 0! = 1;

(2) для всех n > 0  n! = n*(n–1)!

Определения с помощью рекуррентных формул иногда называют рекурсивными определениями.

  1.  Разработать функцию, рекурсивно вычисляющую факториал числа.
  2.  Программа, использующая рекурсивную функцию для вычисления n! имеет следующий вид:

program Factorial_Recurs;

{$APPTYPE CONSOLE}

uses

 SysUtils;

var

 n: integer;

// Определение рекурсивной функции

function Fact(i: Integer): cardinal;

begin

 if i=0 then Fact:=1

     else Fact:=i*Fact(i-1) // Функция вычисляется через себя

 end;

function Rus(mes: string): string;

var

 i: integer;

begin

 for i:=1 to length(mes) do

   case mes[i] of

     'A'..'п': mes[i]:=Chr(Ord(mes[i])-64);

     'р'..'я': mes[i]:=Chr(Ord(mes[i])-16);

   end;

 Rus:=mes;

end;

begin

 Write(Rus('Введите целое число'),' n<=20: ');

 Readln(n);

 if (n>=0) and (n<=20) then

   Writeln(n:2,'! = ',Fact(n))      // Обращение к функции

 else Writeln(Rus('Введенное число выходит за диапазон'),' 0..20');

 Readln;

end.

  1.  Проверьте работу программы при значениях n = 10, 20, 25.
  2.  Сохраните проект программы в папке \Мои документы\ЛЗ-03\Задание4 под именем Factorial.

При разработке рекурсивных подпрограмм необходимо обращать особое внимание на выход из подпрограммы в нужный момент, так как возможен выход значений из допустимого диапазона или потеря порядка (обращение результата в нуль).

Содержание и мощность рекурсивного определения, а также его главное назначение, состоит в том, что оно позволяет просто, с помощью конечного выражения, определить бесконечное множество объектов. Однако за эту простоту приходится расплачиваться неэкономным использованием оперативной памяти, так как выполнение рекурсивных процедур требует значительно большего размера памяти во время выполнения, чем нерекурсивных. При каждом рекурсивном вызове для локальных переменных, а также для параметров процедуры, выделяются новые ячейки памяти.

ВЫВОДЫ

  1.  Процедура (функция) пользователя представляет собой именованную группу операторов, реализующую определенную часть общей задачи и вызываемую для выполнения по имени из любой позиции раздела операторов.
  2.  Между фактическими параметрами в операторе вызова процедуры (функции) и формальными параметрами в заголовке описания процедуры (функции) устанавливается взаимно-однозначное соответствие в результате их перебора слева направо. Количество и тип формальных параметров равны количеству и типу фактических параметров.
  3.  Областью действия (сферой видимости) идентификатора называется часть программы, где он может быть использован. Если идентификаторы допускается использовать только в рамках одной процедуры или функции, то такие идентификаторы называются локальными. Если действие идентификаторов распространяется на несколько вложенных (не менее одной) процедур и/или функций, то такие идентификаторы называются глобальными.
  4.  Если подпрограмма вызывает сама себя, то она называется рекурсивной. Главное требование к рекурсивным подпрограммам: вызов рекурсивной подпрограммы должен выполняться по условию, которое на каком-то уровне рекурсии станет ложным.

Контрольные вопросы

  1.  Какой вид имеет структура описания процедуры и функции?
  2.  В чем состоит отличие описания процедуры и функции?
  3.  Что такое область действия идентификаторов?
  4.  Каковы основные правила определения области действия для идентификаторов процедур и функций?
  5.  Какие параметры называются формальными и какие — фактическими?
  6.  Какой объект называется рекурсивным?
  7.  Что необходимо для реализации рекурсии в программе?
  8.  В чем преимущества и недостатки использования рекурсивных процедур по сравнению с нерекурсивными?

Контрольные задания

Вычислить следующие формулы, используя для решения рекурсивную процедуру или функцию.

а) , где k - целая константа.

б) , где а и n — целые положительные числа.

в)


Рис. 1.1.
Результаты работы программы, иллюстрирующей работу с процедурой

(x1, y1)

(x2, y2)

x3, y3)

x

y

a

b

c

Рис. 1.2. Определение треугольника

Рис. 1.3. Результаты расчетов, иллюстрирующие работу функции, созданной пользователем


 

А также другие работы, которые могут Вас заинтересовать

36085. Активізоване управління підприємства 249.5 KB
  Активізоване управління підприємства. План: Ознаки та чинники виникнення кризи на підприємстві; Аспекти банкрутства підприємства; Формування системи антикризового управління. З погляду управління кризове явище – це негативне відхилення об’єкта управління від певної мети або строків її досягнення. Реакція системи управління на кризу починається тоді коли підприємство стає банкрутом.
36086. Характеристика елементів потенціалу підприємства 491 KB
  2011 Літературні джерела для вивчення курсу управління потенціалом підприємства: Должанський І. Потенціал підприємства: формування та оцінювання К. Економіка підприємства К.
36087. Безопасность жизнедеятельности Э.А. Арустамова 2.84 MB
  Рассмотрены особенности состояния и негативные факторы среды обитания современного человека. Профессиональные вредности производственной среды и классификация основных форм трудовой деятельности. Приспособление производственной среды к возможностям человеческого организма..
36088. Господарське право: Курс лекцій 3.56 MB
  У пропонованому курсі лекцій на підставі аналізу нормативно-правових актів. Висвітлюються основні теми та інститути господарського права - як загальної частини (поняття господарського права, господарські правовідносини, господарське законодавство, субєкти господарських правовідносин, майнова основа господарювання
36089. ИСТОРИЯ ПЕДАГОГИКИ 2.42 MB
  Плохова История педагогики: Учебник для системы послевузовского профессионального образования по специальности История и философии науки Под редакцией члена – корреспондента РАО М. Предлагаемое издание составлено в соответствии с программой История и философия науки раздел История педагогики одобренной экспертными советами ВАК Министерства образования и науки РФ по педагогике и психологии и по истории и предназначено для подготовки к сдаче кандидатского экзамена по педагогике. Она занята критической интерпретацией истории...
36090. Організація навчального процесу у вищих закладах освіти 258.5 KB
  Б79 Організація навчального процесу у вищих закладах освіти: Навч. посібник для слухачів закладів підвищення кваліфікації системи вищої освіти. ISBN 9667170063 У посібнику розглядаються питання організації навчального процесу у вищих закладах освіти України відповідно до Положення про організацію навчального процесу у вищих навчальних закладах затвердженого наказом Міністерства освіти України від 2 червня 1993 року № 161 та інших нормативних актів з питань вищої освіти. Розрахований на слухачів закладів підвищення кваліфікації...
36091. ПОРІВНЯЛЬНА ПЕДАГОГІКА 397.5 KB
  Розвиток освіти на сучасному етапі Б. Обєктом дослідження порівняльної педагогіки є розвиток освіти на глобальному світовому регіональному окремих материків частин світу та локальному окремих держав національному частин держав етнічному рівнях в її минулому сучасному та майбутньому аспектах.; стан основні тенденції та закономірності розвитку освіти в різних країнах геополітичних регіонах і в глобальному масштабі; співвідношення загальних тенденцій і національної або регіональної специфіки позитивні й негативні аспекти...
36092. Історія держави та права 909.5 KB
  Предмет і завдання курсу історії держави і права зарубіжних країн. Значення історії держави і права як науки та її місце її в системі юридичних дисциплін. Періодизація історії держави і права зарубіжних країн. Виникнення держави і права.
36093. Опорний конспект лекцій з «Основ економічних теорій» 528.5 KB
  Представники цієї теорії вважали що країна зміцнює своє економічне становище якщо вона активно продає за кордон товари власного виробництва експортує але при цьому обмежує або забороняє ввіз товарів закордонного виробництва імпорт. Монкретьєн запровадив термін політекономія поліс – держава що означає державне управління господарством таким словом він відобразив активне втручання держави в економіку в період формування капіталістичного способу виробництва. Класики встановили що багатство створюється саме в сфері виробництва....