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. Результаты расчетов, иллюстрирующие работу функции, созданной пользователем


 

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

78275. Рельеф местности и его изображение на топографических картах и планах 396.95 KB
  Основные формы рельефа и их элементы; характерные точки и линии. При проектировании и строительстве железных автомобильных и других сетей необходимо учитывать характер рельефа – горный холмистый равнинный и др. Рельеф земной поверхности весьма разнообразен но все многообразие форм рельефа для упрощения его анализа типизировано на небольшое количество основных форм...
78276. Ориентирование направлений 97.22 KB
  При этом положение линии определяют с помощью соответствующих углов ориентирования: дирекционного угла истинного или магнитного азимута. В этом случае положение линии местности относительно осевого меридиана определяет угол ориентирования называемый дирекционным рис. Дирекционные углы Для линии ОА её дирекционным углом в точке О является горизонтальный угол αО между северным направлением осевого меридиана и направлением линии. Таким образом дирекционным углом является угол в горизонтальной плоскости отсчитываемый от северного направления...
78277. Определение прямоугольных координат точек 475.32 KB
  Определение прямоугольных координат точек. Широта φ это угол образованный нормалью данной точки к плоскости эллипсоида и плоскостью экватора. Долгота λ это двугранный угол образованный плоскостью нулевого гринвичского меридиана и плоскостью меридиана в данной точке М Широта и долгота полностью не отражают положение точки в пространстве необходимо знать 3ю координату – высоту. Х Y Система плоских прямоугольных координат Гаусса-Крюгера Для того чтобы воспользоваться прямоугольной системой координат необходимо земной эллипсоид...
78278. Сущность измерений. Классификация и виды геодезических измерений. Линейные измерения 105.6 KB
  Основные положения регламентирующие номенклатуру и структуру органов и служб стандартизации в стране их компетенцию устанавливает ГОСТ Государственная система стандартизации. Межгосударственный стандарт Государственной системы обеспечения единства измерений ГОСТ 8. Фундаментальные физические константы ГОСТ Р 8. Основные положения ГОСТ 8.
78280. Работа редактора над фактическим материалом 73 KB
  Работа редактора над фактическим материалом Функции фактического материала в тексте Факт – предмет журналистского исследования. Приёмы изложения всегда обусловлены функциональным назначением фактического материала. Поэтому так важна правильность передачи информации сквозная оценка и точная разработка фактического материала. Работая над материалами публицистики редактор должен представлять сложность диалектических отношений между мыслью и фактом в журналистском творчестве когда непосредственный контакт с действительностью стимулирует...
78281. Виды ошибок в методике редактирования 71.5 KB
  Виды ошибок РЕЧЕВЫЕ ОШИБКИ Речевые ошибки – это ошибки в коде ошибки плана выражения. В современной науке нет терминологического названия речевой ошибки но когдато оно было. Речевые ошибки делятся на две неравноценные и неравнообъемные группы: нормативные ошибки и обыкновенные опечатки. Опечатки – механические ошибки.
78282. Способы изложения и виды текста 78.5 KB
  Традиционная классификация принятая в теории и практике редактирования выделяла три способа изложения и соответственно три вида текста: повествование описание и рассуждение в некоторых пособиях рассуждение называется изъяснительным способом изложения Цель повествования – передать движение событий во времени. Традиционная трёхкомпонентная повествование описание рассуждение схема бесспорно справедлива и достаточна при рассмотрении редактором текстов художественных произведений. Своё место в ней должно найти сообщение структура...
78283. Основные законы логического мышления и смысловой анализ текста 46 KB
  Основные законы логического мышления и смысловой анализ текста Логический анализ текста необходим на всех стадиях работы над литературным произведением необходим автору критику редактору. Классической логикой выведены и сформулированы четыре основных закона правильного мышления следуя которым мы достигаем его определённости непротиворечивости последовательности и обоснованности. Контроль за соблюдением основных законов логического мышления – обязательный этап анализа текста. Вариантность его смысловой организации не безгранична:...