78206

Массивы: определение, описание, размещение в памяти, использование

Лекция

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

Массивы: определение описание размещение в памяти использование. Цель: дать определение массиву сформировать знания о массивах приемы составления блок-схем алгоритмов изучить приемы составления программ с использованием массивов. Группа переменных в данном...

Русский

2015-02-07

143 KB

4 чел.

екция: Массивы: определение, описание, размещение в памяти, использование.    Страница 7 из 7

Оглавление

[1] Оглавление

[2] Массивы. Одномерные массивы. Понятие о массиве

[3] Описание массивов

[4] Действия над элементами массива

[5] Использование значений массивов, ввод и вывод значений массивов

[6]    Двумерные массивы

[7] Полная переменная

[8] Примеры использования массивов

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

Комбинированный урок №8

Тема: Массивы: определение, описание, размещение в памяти, использование.

Цель: дать определение массиву, сформировать знания о массивах, приемы составления блок-схем алгоритмов, изучить приемы составления программ с использованием массивов.

Массивы. Одномерные массивы. Понятие о массиве

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

    МАССИВ - упорядоченная группа фиксированного количества переменных одного типа, имеющая общее имя.

   "Группа переменных" в данном смысле означает, что каждый элемент массива является переменной, для хранения значения которой в памяти отводится определенная область.

   "Упорядоченная"- означает, что переменные в массиве хранятся не хаотично, а в установленном порядке, по очереди.

   "Фиксированное количество" означает, что количество переменных в массиве не бесконечно, оно ограничено определенным числом (размерностью массива), которое указывается при описании массива.

   "Одного типа" - означает, что переменные, входящие в массив, должны хранить данные одного типа (Real, Integer, Char, Boolean и т.д.), который называется типом элементов массива.

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

   Над переменными, составляющими массив (над элементами массива) можно выполнять те же действия, что и над обычными переменными - присваивать и считывать значения, преобразовывать значения и сравнивать их.

   Каждый элемент массива имеет свое имя, представляющее собой имя массива и стоящие за ним квадратные скобки, в которых указывается индекс элемента - целое число, равное порядковому номеру этого элемента в массиве. Таким образом, для ссылки на отдельный элемент массива используется запись вида: имя массива[индекс]. Например: A[1], D[24], Massiv[5], Mas[12].

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

   В этой программе для хранения в памяти количества киловатт- часов ежедневного потребления энергии можно было бы предусмотреть отдельные переменные:

KWatt1

KWatt2

KWatt3

...

KWatt30

KWatt31

   Такой подход возможен, и ошибки в нем нет, но в этом случае неудобно оперировать данными в виде отдельных переменных: описание большого количества переменных будет громоздким, перебор и сравнение переменных - трудоемким. Между тем указанные переменные содержат однотипные данные, несущие информацию одного и того же характера. В подобных случаях информацию удобнее хранить в массиве, представляющем собой таблицу с одной строкой (вектор), имеющую 31 столбец (по числу дней в месяце):

Массив “KWatt”:

KWatt[1]

KWatt[2]

KWatt[3]

...

KWatt[31]

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

..................

{начальное значение счетчика цикла равно 1}

i:=1;

{начальное значение переменной Max, предназначенной}

Max:=0;

{для хранения максимального значения массива, равно 0}

REPEAT

{начинаем цикл}

IF KWatt[i]>Max 

{если значение очередного элемента массива}

     THEN

{превышает текущее значение переменной Max,}

          Max:=KWatt[i];

{то переменная Max меняет свое значение на}

{значение элемента массива}

i:=i+1

{увеличиваем значение счетчика на единицу}

UNTIL i>31;

{цикл заканчивается, если значение счетчика цикла превысит число 31}

..................

без труда догадаемся, что здесь идет поиск максимального числа (Max) из набора однотипных данных (KWatt[i]).

Описание массивов

    Массив описывается в разделе переменных посредством указания типа его элементов и максимального их количества. Тип элементов может быть любым. При задании максимального числа элементов массива (числа ячеек таблицы) обычно употребляют диапазон целых чисел. Общий вид описания массива следующий:

Возможны два способа описания массивов:

Type имя типа = Array[t ,t1 ,...,tn ] Of тип элементов;

Var имя массива : имя типа;

или

Var имя массива:Array[t ,t1,...,tn ] Of тип элементов;

здесь t , t1 ,...,tn - типы индексов массива (любой скалярный тип, кроме real) или размерность.

    К имени массива предъявляются те же требования, что и к имени переменной.

    Размерность - это диапазон целых чисел, каждое из которых является порядковым номером (индексом) одной из ячеек массива. Обычно диапазон индексов задают, начиная от единицы: [1..100]. Это удобно, но не обязательно. Важно лишь, чтобы правая граница диапазона была больше или равна левой границе.

Program Primer;

Const Max=100;

Var A:Array[1..50] of Real;

{массив "А" состоит из 50-ти вещественных чисел}

B:Array[1..Max] of integer;

{массив "В" состоит из ста целых чисел}

Mas:Array[1999..2000] of integer;

{массив "Mas" состоит из 2-х целых чисел}

Mas2:Array[-700..-1] of Real;

{массив "Mas2" состоит из 700 вещественных чисел}

...................................

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

Если в описании массива задан один индекс, массив называется одномерным, если два индекса - двумерным, если n индексов — n-мерным массивом. Одномерный массив соответствует понятию линейной таблицы (вектора), двумерный - понятию прямоугольной таблицы (матрицы, набору векторов). Размерность ограничена только объемом памяти конкретного компьютера.

Одномерные массивы обычно используются для представления векторов, а двумерные - для представления матриц.

Например, одномерные массивы:

Type

Klass = (К1, К2, КЗ, К4) ;

Znak = array [1..255] of char;

Var

Ml   :  Znak;          {Тип Znak предварительно описан в разделе типов}

М2  :  array[1..60] of integer;          {Прямое описание массива М2}

МЗ  :  array[1..4] of Klass;

Mas :  array[1..4] of integer;

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

Двумерные массивы:

Type

Vector = array[1..4] of integer;

Massiv = array[1..4] of Vector;

Var

Matrix : Massiv;

Ту же структуру можно получить, используя другую форму записи:

Var

Matrix : array[1..4,1..4] of integer ;

Для описания массива можно использовать предварительно определенные константы:

Const

G1 = 4; G2 = 6;

Var

MasY: array[1..Gl, l..G2] of real;

Элементы массива располагаются в памяти последовательно. 

Например, если имеется массив: A:array[1..5,1..5] of integer; 

то в памяти элементы массива будут размещены по возрастанию адресов:

А[1,1] А[1,2] … А[1,5] А[2,1] А[2,2] … А[5,5]

Контроль правильности значений индексов массива может проводиться с помощью директивы компилятора R. По умолчанию директива R находится в пассивном состоянии {$R-}. Перевод в активное состояние вызывает проверку всех индексных выражений на соответствие их значений диапазону типа индекса. Действия над массивами

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

Например, если массивы А и В описаны как

Var

А, В : array[1..20] of real;

то применение к ним допустимых операций даст следующий результат:

Выражение   Результат

А=В True, если значение каждого элемента массива А равно соответствующему значению элемента массива В

А<>В True, если хотя бы одно значение элемента массива А не равно значению соответствующего элемента массива В

А:=В  Все значения элементов массива В присваиваются соответствующим элементам массива А. Значения элементов массива В остаются неизменны.

Действия над элементами массива

После объявления массива каждый его элемент можно обработать, указав идентификатор (имя) массива и индекс элемента в квадратных скобках. Например, запись Mas[2], Vector[10] позволяет обратиться ко второму элементу массива Mas и десятому элементу массива Vector. При работе с двумерным массивом указываются два индекса, с n-мерным массивом - n индексов. Например, запись Matr[4,4] делает доступным для обработки значение элемента, находящегося в четвертой строке четвертого столбца массива Matr.

Индексированные элементы массива называются индексированными переменными и могут быть использованы так же, как и простые переменные. Например, они могут находиться в выражениях в качестве операндов, использоваться в операторах for, while, repeat, входить в качестве параметров в операторы Read, Readin, Write, Writeln; им можно присваивать любые значения, соответствующие их типу.

Рассмотрим типичные ситуации, возникающие при работе с данными типа array. Для этого опишем три массива и четыре вспомогательные переменные:

Var             

A,D     : array[l..4] of real;

В       : array[1..10,1..15] of integer;

I, J, К : integer;

S : real;

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

Инициализация элементов одномерного массива А:

for I := 1 to 4 do A[I] := 0;

Для инициализации двумерного массива обычно используется вложенный оператор for, например:

Инициализация двумерного массива В:

for I := I to 10 do

for J := 1 to 15 do B[I,J]:= 0;

 Использование значений массивов, ввод и вывод значений массивов

  Для ссылки на отдельные элементы массива используется переменная с индексом: Имя массива[индекс]. Чтобы получить доступ к конкретному элементу массива, в качестве индекса можно использовать не только целое число, соответствующее порядковому номеру этого элемента в массиве, но и выражение, значение которого равно упомянутому целому числу.

Например, при обращении к элементам некоторого массива "A: Array[1..100] of Real", в качестве индекса можно использовать любое арифметическое выражение, значением которого будет целое число из диапазона 1..100:

A[56]; A[i+7]; A[i div j] .

  Можно ввести и значения отдельных элементов, а не всего массива. Так, операторами:

Read(A[3]); { ввод значение третьего элемента вектора А } 

Read(B[6,9]);{ ввод значение элемента, расположенного в шестой строке девятого столбца матрицы В }

Оба значения набираются на одной строке экрана, начиная с текущей позиции расположения курсора.

Вводить и выводить значения из массивов целесообразно поэлементно, используя в цикле операторы Readln, Write, Writeln и оператор присваивания.

Program Vvod_Vivod;

Var i:integer;

A:Array[1..20] of Real;

B:Char;

Begin

     Writeln('Введите числа в массив: ');

     FOR i:=1 TO 20 DO

     begin Write('A[',i,']= '); Readln(A[i]) end;

     Writeln('Массив заполнен, будете выводить');

     Write('значения на экран? ("Y"-да, "N"-нет)=>');

     Readln(B);

     IF UpCase(B)="Y" THEN

{если прописной вариант введенной}

           FOR i:=1 TO 20 DO Writeln('A[',i,']=',A[i]:6:2);

{буквы является "Y", то}

Readln

End.

   Двумерные массивы

    Одномерный массив (вектор) имеет вид таблицы из одной строки, ячейки которой заполнены значениями. Рассматривая ДВУМЕРНЫЙ массив, можно провести аналогию с таблицей, имеющей несколько строк и столбцов. Если отдельный элемент одномерного массива обозначали именем массива с индексом (А[i]), то для обозначения элемента двумерного массива (матрицы) потребуются два индекса: один - для указания номера строки, другой - для указания номера столбца, на пересечении которых находится нужный элемент: А[i,j]. Двумерные массивы описываются сходно с массивами одномерными:

Const Str=4; Stolb=5;

Var A:Array[1..Str,1..Stolb] of Real;

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

FOR i:=1 TO Str DO

         FOR j:=1 TO Stlb DO Readln(A[i,j]);

...............

FOR i:=1 TO Str DO

         FOR j:=1 TO Stlb DO Writeln('A[',i,',',j,']=',A[i]:6:2);

    здесь Str - число строк, Stlb - число столбцов.

Пример:

В программе необходимо описать двухмерный массив целых чисел:

4   0   7

2   1   5

Описание этого массива в соответствии с первым способом выглядит следующим образом:

Type mas = Array[1..2,1..3] Of Byte;

Var M : mas;

Для второго способа имеем:

Var M : Array[1..2,1..3] Of Byte;

Для обращения в программе к элементу во второй строке и третьем столбце используется запись M[2,3].

В качестве индексов массива могут использоваться выражения, частным случаем которых является константа или переменная, например:

Min := A[2*i]+1.3;  {присвоить переменной Min значение элемента A c номером i*2, увеличенное на 1.3}

Sum := Sum - C[k]; {уменьшить значение в переменной Sum на значение из элемента C c номером k}

Rez := B[4] + 5.2; {присвоить переменной Rez значение элемента B c номером 4, увеличенное на 5.2}

Пример описания трехмерного массива:

Var A : Array[char,boolean,1..10 ] of Real;

В этом случае при использовании в программе элемента A [i,j,k] индексы i,j,k должны быть следующих типов: i - символьного, j - логического, k - интервального.

Для ввода и вывода числовых значений элементов массива используются циклы.

Например,

цикл  For k := 1 To 13 Do Read(C[k]); организует ввод 13 значений элементов массива С,

а цикл  For k := 1 To 13 Do Write(C[k],' '); – вывод этих элементов.

Начальные значения элементов массива могут быть введены сразу с описанием массива как типизированная константа в разделе Const. При этом могут применяться также две формы описания:

Type имя типа = Array[тип индекса] Of базовый тип элементов;

Const имя константы : имя типа = (список констант);

или

Const имя константы : Array[тип индекса] Of базовый тип элементов = (список констант);

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

2 3 15 4   

7 18 23 5

1 9 11 10

32 16 6 4

будет выглядеть следующим образом:

Const M : Array[1..4,1..4] Of Byte = (( 2, 3, 15, 4), ( 7, 18, 23, 5), ( 1, 9, 11, 10), (32, 16, 6, 4));

В языке Паскаль допускается использование массива в целом только в операторе присваивания вида:

M1 := M2;

где M1, M2 - два однотипных массива одинаковой размерности.

Полная переменная

    Массив можно рассматривать не только как группу однотипных переменных, но и как единое целое, как одну переменную. Значением этой особой переменной является весь массив. Такую переменную называют ПОЛНОЙ.

    Если полные переменные А и В имеют один и тот же тип (были описаны одинаково) и всем элементам массива "А" были присвоены значения, то для присвоения полной переменной "В" точно такого же значения достаточно выполнить оператор присваивания В:=А.

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

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

    Над значениями полных переменных в Паскале не выполняются операции сравнения.

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

VAR X:Real;

                Y:Array[1..1] of Real;

недопустимы операторы присваивания

X:=Y; Y:=X; X:=Y+0.5; Y:=3.14159;

 Примеры использования массивов

  1.  Попарное суммирование элементов массивов А и В.

Program Prim1;

Const N=10;

Var i:integer;

A,B,C:Array[1..N] of Real;

Begin

        FOR i:=1 TO N DO

        begin

                 Write('A[',i,']= '); Readln(A[i]);

                 Write('B[',i,']= '); Readln(B[i])

        end;

        FOR i:=1 TO N DO C[i]:=A[i]+B[i];

        Writeln('----------------------------------');

        FOR i:=1 TO N DO Writeln('C[',i,']=',C[i]:6:1);

        Readln

End.

2. Объединить в массиве “С” массивы “А” и “В” так, чтобы их элементы чередовались: элементы из массива “А” занимали нечетные ячейки, а элементы массива “В” - четные.

Program Prim2;

Const N=10;

Var i:integer;

A,B:Array[1..N] of Real;

C:Array[1..N*2] of Real;

Begin

         FOR i:=1 TO N DO

         begin

                 Write('A[',i,']= '); Readln(A[i]);

                 Write('B[',i,']= '); Readln(B[i])

         end;

         FOR i:=1 TO N DO

         begin

                 C[2*i-1]:=A[i];

                 C[2*i]:=B[i]

         end;

         Writeln('------------------------------');

          FOR i:=1 TO 2*N DO Writeln('C[',i,']=',C[i]:6:1);

          Readln

End.

3. Пример программы ввода-вывода одномерного массива

program priimer1;

uses crt;

var

mas : array [1..10] of integer; {Описание одномерного массива с именем mas, состоящего из 10

элементов типа integer}

n,i : integer;            {n-количество элементов массива, i-счетчик в цикле for}

BEGIN

clrscr;

writeln('Введите количество элементов массива не больше 10: ');

readln(n);

for i:=1 to n do {ввод элементов массива}

begin

writeln('Введите  ',i,' элемент массива');

readln(mas[i]);

end;   {конец ввода}

writeln('Введенный массив: ');

for i:=1 to n do  {вывод элементов массива}

write(' ',mas[i],' ');

readkey; {конец вывода}

END.

4. Пример программы ввода-вывода двумерного массива

program primer2;

uses crt;

var

i,j,n,m:integer;

massiv:array[1..10,1..10] of integer; {описан двумерный массив с именем massiv}

BEGiN

clrscr;

write('Введите количество строк массива (не больше 10): ');

read(n);      {n-количество строк}

write('Введите количество столбцов массива (не больше 10):');

read(m);    {m-количество столбцов}

for i:=1 to n do {ввод элементов двумерного массива}

begin

  for j:=1 to m do

     read(massiv[i,j]);

end;    {конец ввода}

writeln('Введенный массив: ');

for i:=1 to n do {вывод элементов двумерного массива}

 begin

  for j:=1 to m do

      write(massiv[i,j]:5);

end;     {конец вывода}

readkey;

END.

5. В квадратной матрице n-го порядка найти и вывести на экран строку, сумма элементов которой максимальна.

Program matrica;

Сonst Nmax = 20;

Var A : Array [1..nmax, 1..nmax ] Of Real;

i,j,N,Nstr : Byte;

S,Smax : Real;

Begin

Writeln ('Ввести порядок матрицы <= ',nmax,' )');

Readln (n);

For i:=1 To N Do

Begin

Writeln ('Введите элементы ',i,'-й строки ');

For j:=1 To N Do Read (A[i,j]);

S:=0;

For j:=1 To N Do S:=S + A[i,j]; {накопление суммы элементов матрицы}

If i=1 Then

Begin   

Nstr:=1; {если это первый элемент столбца, то запомнить в S максимальное значение суммы}

{элементов строки}

Smax:=S;

End

Else if S > Smax Then

Begin  {сумма элементов текущей строки >, то заменить на бóльшую для дальнейшего сравнения}

Nstr:=i;

Smax:=s;

End;

End;

Writeln ( 'Номер строки = ',nstr );

For j:=1 To N Do Write (A[nstr,j]:10:3); {вывод элементов указанной строки}

Writeln;

End.

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

  1.  Массивы. Основные понятия. Приведите определение массива.
  2.  Формат записи массивов. Описание одномерного и двумерного массивов.
  3.  Действия над массивами. Действия над элементами массивов.
  4.  Как описать типизированную константу типа «многомерный массив»?
  5.  Какой тип данных можно использовать в качестве индексов элементов массивов?
  6.  Примеры описания и ввода-вывода линейного и двумерного массивов.


 

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

39079. Влияние производственно-технологических факторов на потребность в топливе для автотракторной техники при ремонте магистральных нефтепроводов 4.28 MB
  Анализ современного состояния нефтепроводного транспорта Западной Сибири особенностей организации ремонтовнефтепроводов позволил сформулировать цель исследования:установление закономерностей влияния производственнотехнологических факторов на процесс потребления топлива автотракторной техники задействованной при ремонте магистральных нефтепроводов и разработки на этой основе методик управления запасами топлива и определения рациональной структуры парка топливозаправщиков Объект исследований – процесс формированияпотребности в топливе...
39080. Оболочка Moodle; история создания, спецификация. Процессы в Linux. Идентификаторы процессов 28.16 KB
  Демоны Возможности тестовой системы MOODLE. Среда дистанционного обучения СДО Moodle – это среда дистанционного обучения предназначенная для создания качественных дистанционных курсов. СДО Moodle – постоянно развивающийся проект основанный на теории социального конструктивизма.
39081. Управление процессами. Команды nice, nohup, kill, killall. Оболочка Moodle; архитектура, возможности 28.47 KB
  По мнению большинства исследователей занимающихся проблемами дистанционного обучения под последним следует понимать новую форму обучения базирующуюся на применении широкого спектра традиционных и новых информационных технологий а также технических средств которые используются для доставки учебного материала его самостоятельного изучения диалогового обмена между обучающимися и преподавателями и которая в общем случае некритична к их расположению в пространстве и контакту во времени. Вместе с тем эта новая специфическая форма обучения...
39082. Медиаобразовательная среда в контексте педагогического проектирования. Классификация и краткое описание средств организации электронного обучения 27.65 KB
  Ршгд Во всем многообразии средств организации электронного обучения можно выделить следующие группы: авторские программные продукты uthoring Pckges системы управления контентом Content Mngement Systems CMS системы управления обучением Lerning Mngement Systems LMS системы управления учебным контентом Lerning Content Mngement Systems LCMS Авторские программные продукты uthoring Pckges. Системы управления контентом CMS. Системы управления контентом позволяют создавать каталоги графических звуковых аудио...
39083. Навигация по файловой системе. Работа с файлами и каталогами Linux. Создание папки для хранения данных СДО Moodle 89.91 KB
  С этим можно согласиться но при одном условии – дистанционное обучение должно быть построено с необходимым и достаточным уровнем качества обучения. В сфере образования под качеством обучения подразумевается соответствие знаний и умений выпускников учебного заведения требованиям предъявляемым со стороны рынка труда. Вторая модель управления качеством образования основана на контроле не только знаний обучаемых но и процессов обучения их организации и применяемых средств.
39084. Настройка сети Debian Linux. Серверная структура СДО Moodle 44.99 KB
  Интерфейс СДО Moodle. Серверная структура СДО Moodle. Формы контроля знаний в системе дистанционного обучения Moodle. Система дистанционного обучения Moodle обладает интуитивно понятным интерфейсом.
39085. Понятие инструментальной системы для создания курсов ДОТ, преимущества и классификация. Описание структуры файловой системы Linux 21.75 KB
  Понятие инструментальной системы для создания курсов ДОТ преимущества и классификация. Инструментальные системы для создания курсов ДО ориентированы на пользователей тьюторов разработчиков курсов ДО. Преимущества инструментальных систем: существенно снижается время на разработку курсов; снижаются общие затраты организации на разработку и использование курсов ДО; обеспечивается современный уровень функциональных и коммуникационных возможностей и пользовательского графического интерфейса курсов; исключаются многие ошибки начинающих...
39086. Распределение прав доступа в Linux. Системные требования для развертывания СДО Moodle 27.66 KB
  Системные требования для развертывания СДО Moodle. Количество пользователей которые смогут пользоваться Moodle может быть ограничено производительностью сервера. Большинство предпочитают вебсервер pche но Moodle будет хорошо работать и с любым другим вебсервером который поддерживает PHP например IIS под Windows. Язык сценариев PHP обратите внимание что есть особенности установки Moodle с PHPccelertor.
39087. Дистанционные образовательные технологии: история и развитие в России. Учётные записи в Linux 45.52 KB
  А также необходимостью современной педагогики дать ответ на запрос общества по выработке новых педагогических средств обучения и воспитания в новой культурноинформационной среде. Глобальные изменения в информационнокультурной среде мы относим к макрофакторам способствующим появлению электронного обучения. Мезофакторами определяющими развитие электронного обучения являются современные философские культурологические психологические и педагогические теории отражающие современные реалии культуры.