file_name: Си_Массивы.ppt

alt: Программирование на языке Си Часть

description:
Программирование на языке СиЧасть II

Массивы
Максимальный элемент массива
Обработка массивов
Сортировка массивов
Поиск в массиве
Массивы в процедурах и функциях

Практикум (моделирование)
Символьные строки
Рекурсивный перебор
Матрицы
Файлы

alt: Программирование на языке Си Часть

description:
Программирование на языке СиЧасть II

Тема 1. Массивы

alt: Массивы Массив – это группа однотипных элементов, имеющих общее имя и расположенных в памяти рядом

description:
3

Массивы

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

description:
4

Массивы

5

10

15

20

25

0

1

2

3

4

A

массив

2

15

НОМЕР элемента массива
(ИНДЕКС)

A[0]

A[1]

A[2]

A[3]

A[4]

ЗНАЧЕНИЕ элемента массива

A[2]

НОМЕР (ИНДЕКС) элемента массива: 2

ЗНАЧЕНИЕ элемента массива: 15

alt: Объявление массивов Зачем объявлять? определить имя массива определить тип массива определить число элементов выделить место в памяти

description:
5

Объявление массивов

Зачем объявлять?
определить имя массива
определить тип массива
определить число элементов
выделить место в памяти
Пример:

Размер через константу:

имя

размер массива (количество элементов)

тип
элементов

int  A [   ];

const int N = 5;

N

int  A [ 5 ];

alt: Объявление массивов Еще примеры: int

description:
6

Объявление массивов

Еще примеры:

int X[10], Y[10];
float zz, A[20];
char s[80];

С присвоением начальных значений:

int A[4] = { 8, -3, 4, 6 };
float B[2] = { 1. };
char C[3] = { 'A', '1', 'Ю' };

остальные нулевые!

alt: Что неправильно? int N = 10; float

description:
7

Что неправильно?

       int N = 10;
       float A[N];

const int

  int X[4.5];

  int A[10];
  A[10] = 0;

  float X[5];
  int n = 1;
  X[n-2] = 4.5;
  X[n+8] = 12.;

выход за границы массива
(стираются данные в памяти)

 int X[4];
 X[2] = 4.5;

дробная часть отбрасывается
(ошибки нет)

float B[2] = { 1., 3.8, 5.5 };

int   A[2] = { 1, 3.8 };

float

alt: Массивы Объявление: Ввод с клавиатуры:

description:
8

Массивы

Объявление:
Ввод с клавиатуры:
Поэлементные операции:
Вывод на экран:

const int N = 5;
int A[N], i;

printf("Введите 5 элементов массива:\n");
for( i=0; i < N; i++ ) {
  printf ("A[%d] = ", i );
  scanf ("%d", & A[i] );
  }

A[0] =
A[1] =
A[2] =
A[3] =
A[4] =

5
12
34
56
13

for( i=0; i < N; i++ ) A[i] = A[i]*2;

printf("Результат:\n");
for( i=0; i < N; i++ )   printf("%4d", A[i]);

Результат:
  10  24  68 112  26

alt: Программа #include #include main() { const int

description:
9

Программа

#include <stdio.h>
#include <conio.h>
main()
{
const int N = 5;
int A[N], i;
 // ввод элементов массива
 // обработка массива
 // вывод результата
getch();
}

Задача: ввести с клавиатуры массив из 5 элементов, умножить все элементы на 2 и вывести полученный массив на экран.

на предыдущих слайдах

alt: Задания «4»: Ввести c клавиатуры массив из 5 элементов, найти среднее арифметическое всех элементов массива

description:
10

Задания

«4»: Ввести c клавиатуры массив из 5 элементов, найти среднее арифметическое всех элементов массива.
    Пример:
	 Введите пять чисел:
	 4   15   3  10    14
	 среднее арифметическое 9.200
«5»: Ввести c клавиатуры массив из 5 элементов, найти минимальный из них.
    Пример:
	 Введите пять чисел:
	 4   15    3    10    14
	 минимальный элемент 3

alt: Программирование на языке Си

description:
Программирование на языке Си Часть II

Тема 2. Максимальный                  элемент массива

alt: Максимальный элемент Задача: найти в массиве максимальный элемент

description:
12

Максимальный элемент

Задача: найти в массиве максимальный элемент.
Алгоритм:

Псевдокод:

// считаем, что элемент A[0] – максимальный
for ( i=1; i < N; i++ )
  if ( A[i] > максимального )
    // запомнить новый максимальный элемент A[i]

alt: Максимальный элемент max = A[0]; // пока

description:
13

Максимальный элемент

max = A[0];  // пока A[0]– максимальный
iMax = 0;
for ( i=1; i < N; i++ ) // проверяем остальные
  if ( A[i] >  max    ) {  // нашли новый
    max = A[i];           // запомнить A[i]
    iMax = i;             // запомнить i
    }

Дополнение: как найти номер максимального элемента?

По номеру элемента iMax всегда можно найти его значение A[iMax]. Поэтому везде меняем max на A[iMax] и убираем переменную max.

A[iMax]

alt: Заполнение случайными числами RAND_MAX – максимальное случайное целое число (обычно

description:
14

Заполнение случайными числами

RAND_MAX – максимальное случайное целое число                       (обычно RAND_MAX = 32767)
Случайное целое число в интервале [0,RAND_MAX]
	 x = rand(); // первое число
	 x = rand(); // уже другое число
Установить начальное значение последовательности:
	 srand ( 345 ); // начнем с 345

#include <stdlib.h>   // случайные числа

alt: Целые числа в заданном интервале

description:
15

Целые числа в заданном интервале

Целые числа в интервале [0,N-1]:

Примеры:

Целые числа в интервале [a,b]:

int random(int N) {
  return rand()% N;
}

x = random ( 100 );  // интервал [0,99]
x = random ( z );    // интервал [0,z-1]

x = random ( z ) + a;   // интервал [a,z-1+a]
x = random (b – a + 1) + a; // интервал [a,b]

alt: Заполнение случайными числами #include #include main() { const int

description:
16

Заполнение случайными числами

#include <stdio.h>
#include <stdlib.h>

main()
{
const int N = 10;
int A[N], i;
printf("Исходный массив:\n");
for (i = 0; i < N; i++ ) {
  A[i] = random(100) + 50;
  printf("%4d", A[i]);
  }
...
}

int random(int N)
{ return rand() % N; }

функция выдает случайное число от 0 до N-1

description:
17

Программа

#include <stdio.h>
#include <stdlib.h>
main()
{
const int N = 5;
int A[N], i, iMax;
  // заполнить случайными числами [100,150]
  // найти максимальный элемент и его номер
printf("\nМаксимальный элемент A[%d] = %d",            iMax, A[iMax]);
getch();
}

на предыдущих слайдах

alt: Задания «4»: Заполнить массив из 10 элементов случайными числами в интервале [-10

description:
18

Задания

«4»: Заполнить массив из 10 элементов случайными числами в интервале [-10..10] и найти в нем максимальный и минимальный элементы и их номера.
    Пример:
	 Исходный массив:
	 4   -5   3  10  -4  -6  8  -10  1  0
	 максимальный a[4]=10
	 минимальный  a[8]=-10
«5»: Заполнить массив из 10 элементов случайными числами в интервале [-10..10] и найти в нем два максимальных элемента и их номера.
    Пример:
	 Исходный массив:
	 4   -5   3  10  -4  -6  8  -10  1  0
	 максимальные a[4]=10, a[7]=8

alt: Программирование на языке Си

description:
Программирование на языке Си Часть II

Тема 3. Обработка массивов

alt: Реверс массива Задача: переставить элементы массива в обратном порядке (выполнить инверсию)

description:
20

Реверс массива

Задача: переставить элементы массива в обратном порядке (выполнить инверсию).
Алгоритм:
поменять местами A[0] и A[N-1], A[1] и A[N-2], …
Псевдокод:

3

5

…

9

7

7

9

…

5

3

0

1

…

N-2

N-1

0

1

…

N-2

N-1

for ( i = 0; i < N; i++ )
 // поменять местами A[i] и A[N-1-i]

сумма индексов N-1

alt: Как переставить элементы? 2 3 1

description:
21

Как переставить элементы?

2

3

1

Задача: поменять местами содержимое двух чашек.

Задача: поменять местами содержимое двух ячеек памяти.

4

6

?

4

6

4

x

y

c

c = x;
x = y;
y = c;

x = y;
y = x;

3

2

1

alt: Программа main() { const int

description:
22

Программа

main()
{
  const int N = 10;
  int A[N], i, c;
  // заполнить массив
  // вывести исходный массив
  for ( i = 0; i < N/2; i++ ) {
    c = A[i];
    A[i] = A[N-1-i];
    A[N-1-i] = c;
    }
  // вывести полученный массив
}

description:
23

Задания

«4»: Заполнить массив из 10 элементов случайными числами в интервале [-10..10] и выполнить инверсию отдельно для 1-ой и 2-ой половин массива.
    Пример:
	 Исходный массив:
	 4   -5   3  10  -4  -6  8  -10  1  0
	 Результат:
	 -4  10   3  -5   4   0  1  -10  8 -6
«5»: Заполнить массив из 12 элементов случайными числами в интервале [-12..12] и выполнить инверсию для каждой трети массива.
    Пример:
	 Исходный массив:
	 4   -5   3  10   -4  -6   8 -10  1  0  5  7
	 Результат:
	 10   3  -5   4  -10   8  -6  -4  7  5  0  1

alt: Циклический сдвиг Задача: сдвинуть элементы массива влево на 1 ячейку, первый элемент становится на место последнего

description:
24

Циклический сдвиг

Задача: сдвинуть элементы массива влево на 1 ячейку, первый элемент становится на место последнего.
Алгоритм:
A[0]=A[1]; A[1]=A[2];… A[N-2]=A[N-1];
Цикл:

3

5

8

1

…

9

7

0

1

2

3

…

N-2

N-1

5

8

1

…

9

7

3

for ( i = 0; i < N-1; i ++)     A[i] = A[i+1];

почему не N?

description:
25

Программа

main()
{
  const int N = 10;
  int A[N], i, c;
  // заполнить массив
  // вывести исходный массив
  c = A[0];
  for ( i = 0; i < N-1; i ++)
    A[i] = A[i+1];
  A[N-1] = c;
  // вывести полученный массив
}

description:
26

Задания

«4»: Заполнить массив из 10 элементов случайными числами в интервале [-10..10] и выполнить циклический сдвиг ВПРАВО.
    Пример:
	 Исходный массив:
	 4   -5   3  10  -4  -6  8  -10  1  0
	 Результат:
	  0   4   -5   3  10  -4  -6  8  -10  1
«5»: Заполнить массив из 12 элементов случайными числами в интервале [-12..12] и выполнить циклический сдвиг ВПРАВО на 4 элемента.
    Пример:
	 Исходный массив:
	 4  -5   3  10  -4  -6   8 -10   1   0   5   7
	 Результат:
	 1   0   5   7   4  -5   3  10  -4  -6   8 -10

alt: Программирование на языке Си

description:
Программирование на языке Си Часть II

Тема 4. Сортировка массивов

alt: Сортировка Сортировка – это расстановка элементов массива в заданном порядке (по возрастанию, убыванию, последней цифре, сумме делителей, …)

description:
28

Сортировка

Сортировка – это расстановка элементов массива в заданном порядке (по возрастанию, убыванию, последней цифре, сумме делителей, …).
Задача: переставить элементы массива в порядке возрастания.
Алгоритмы:
простые и понятные, но неэффективные для больших массивов
метод пузырька
метод выбора
сложные, но эффективные
«быстрая сортировка» (Quick Sort)
сортировка «кучей» (Heap Sort)
сортировка слиянием
пирамидальная сортировка

сложность O(N2)

сложность O(N·logN)

alt: Метод пузырька Идея – пузырек воздуха в стакане воды поднимается со дна вверх

description:
29

Метод пузырька

Идея – пузырек воздуха в стакане воды поднимается со дна вверх.
Для массивов – самый маленький («легкий») элемент перемещается вверх («всплывает»).

5

2

1

3

5

2

1

3

5

1

2

3

1

5

2

3

начиная снизу, сравниваем два соседних элемента; если они стоят «неправильно», меняем их местами
за 1 проход по массиву один элемент (самый маленький) становится на свое место

1

5

2

3

1

5

2

3

1

2

5

3

1-ый проход

2-ой проход

3-ий проход

1

2

5

3

1

2

3

5

Для сортировки массива из N элементов нужен N-1 проход  (достаточно поставить на свои места N-1 элементов).

alt: Программа (1-ый проход) 5 2 … 6 3 0 1 …

description:
30

Программа (1-ый проход)

5

2

…

6

3

0

1

…

N-2

N-1

сравниваются пары
  A[N-2] и A[N-1],
  A[N-3] и A[N-2]
  …
  A[0] и A[1]

 A[j] и A[j+1]

for( j = N-2; j >= 0 ; j-- )
  if ( A[j] > A[j+1] ) {
    c = A[j];
    A[j] = A[j+1];
    A[j+1] = c;
    }

0

alt: Программа (следующие проходы) 2-ой проход for ( j =

description:
31

Программа (следующие проходы)

2-ой проход

for ( j = N-2; j >= 1 ; j-- )
  if ( A[j] > A[j+1] ) {
    c = A[j];
    A[j] = A[j+1];
    A[j+1] = c;
    }

1

(i+1)-ый проход

for ( j = N-2; j >= i ; j-- )
  ...

i

1

5

…

3

6

0

1

…

N-2

N-1

description:
32

Программа

main()
{
  const int N = 10;
  int A[N], i, j, c;
  // заполнить массив
  // вывести исходный массив
   for (i = 0; i < N-1; i ++){
    for (j = N-2; j >=  i ; j --)
      if ( A[j] > A[j+1] ) {
        с = A[j];
        A[j] = A[j+1];
        A[j+1] = с;
        }
     }
  // вывести полученный массив
}

элементы выше A[i] уже поставлены

i

меняем A[j] и A[j+1]

alt: Метод пузырька с флажком Идея – если при выполнении метода пузырька не было обменов, массив уже отсортирован и остальные проходы не нужны

description:
33

Метод пузырька с флажком

Идея – если при выполнении метода пузырька не было обменов, массив уже отсортирован и остальные проходы не нужны.
Реализация: переменная-флаг, показывающая, был ли обмен; если она равна 0, то выход.

do {
  flag = 0;   // сбросить флаг
  for (j = N-2; j >= 0; j --)
    if ( A[j] > A[j+1] ) {
      с = A[j];
      A[j] = A[j+1];
      A[j+1] = с;
      flag = 1;   // поднять флаг
      }
  }
while ( flag );  // выход при flag = 0

flag = 0;

flag = 1;

( flag );

int flag;

2

1

4

3

1

2

3

4

alt: Метод пузырька с флажком i = 0; do { flag = 0; // сбросить флаг for ( j =

description:
34

Метод пузырька с флажком

i = 0;
do {
  flag = 0; // сбросить флаг
  for ( j = N-2; j >= i ; j -- )
    if ( A[j] > A[j+1] ) {
      с = A[j];
      A[j] = A[j+1];
      A[j+1] = с;
      flag = 1;  // поднять флаг
      }
  i ++;
  }
while ( flag );  // выход при flag = 0

i = 0;

i

i ++;

alt: Метод выбора Идея: найти минимальный элемент и поставить на первое место (поменять местами с

description:
35

Метод выбора

Идея:
найти  минимальный элемент и поставить на первое место (поменять местами с A[0])
из оставшихся найти  минимальный элемент и поставить на второе место (поменять местами с A[1]), и т.д.

4

3

1

2

1

3

4

2

1

2

4

3

1

2

3

4

alt: Метод выбора N for( i = 0; i <

description:
36

Метод выбора

N

for( i = 0; i <  N-1 ; i ++ ) {
  nMin = i ;
  for ( j =  i+1; j < N; j ++)
    if( A[j] < A[nMin] ) nMin = j;
  if( nMin != i ) {
    c = A[i];
    A[i] = A[nMin];
    A[nMin] = c;
    }
  }

N-1

нужно N-1 проходов

поиск минимального от A[i] до A[N-1]

если нужно, переставляем

i+1

i

alt: Задания «4»: Заполнить массив из 10 элементов случайными числами в интервале [0

description:
37

Задания

«4»: Заполнить массив из 10 элементов случайными числами в интервале [0..100] и отсортировать его по последней цифре.
    Пример:
	 Исходный массив:
	 14  25  13  30  76  58  32  11  41  97
	 Результат:
	 30  11  41  32  13  14  25  76  97  58
«5»: Заполнить массив из 10 элементов случайными числами в интервале [0..100] и отсортировать первую половину по возрастанию, а вторую – по убыванию.
    Пример:
	 Исходный массив:
	 14  25  13  30  76  58  32  11  41  97
	 Результат:
	 13  14  25  30  76  97  58  41  32  11

alt: Формирование массива по условию

description:
38

Формирование массива по условию

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

Примитивное решение:

const int N = 5;
int A[N], B[N];
// здесь заполнить массив A
for( i = 0; i <  N; i ++ )
  if( A[i] < 0 ) B[i] = A[i];

1

-5

3

-2

5

?

A

B

-2

-5

выбранные элементы не рядом, не в начале массива
непонятно, как с ними работать

0

1

2

3

4

alt: Формирование массива по условию

description:
39

Формирование массива по условию

Решение: ввести счетчик найденных элементов count, очередной элемент ставится на место B[count].

int A[N], B[N], count = 0;
// здесь заполнить массив A
for( i = 0; i <  N; i ++ )
  if( A[i] < 0 ) {
    B[count] = A[i];
    count ++;
    }
// вывод массива B
for( i = 0; i <  count; i ++ )
  printf("%d\n", B[i]);

1

-5

3

-2

5

?

A

B

-2

-5

count

0

1

2

3

4

alt: Задания «4»: Заполнить массив случайными числами и отобрать в другой массив все числа, у которых вторая с конца цифра (число десятков) – ноль

description:
40

Задания

«4»:  Заполнить массив случайными числами и отобрать в другой массив все числа, у которых вторая с конца цифра (число десятков) – ноль.
    Пример:
	 Исходный массив:
	 40   105   203  1  14
	 Результат:
	 105   203  1
«5»:  Заполнить массив случайными числами и выделить в другой массив все числа, которые встречаются более одного  раза.
         Пример:
	 Исходный массив:
	 4  1   2  1  11  2  34
	 Результат:
	 1  2

alt: Программирование на языке Си

description:
Программирование на языке Си Часть II

Тема 5. Поиск в массиве

alt: Поиск в массиве Задача – найти в массиве элемент, равный

description:
42

Поиск в массиве

Задача – найти в массиве элемент, равный X, или установить, что его нет.
Решение: для произвольного массива: линейный поиск (перебор)
недостаток: низкая скорость
Как ускорить? – заранее подготовить массив для поиска
как именно подготовить?
как использовать «подготовленный» массив?

alt: Линейный поиск nX = -1; for ( i = 0; i <

description:
43

Линейный поиск

nX = -1;
for ( i = 0; i < N; i ++)
 if ( A[i] == X ) {
   nX = i;
   break; //выход из цикла
   }

Улучшение: после того, как нашли X, выходим из цикла.

break;

 nX = -1; // пока не нашли ...
 for ( i = 0; i < N; i ++) // цикл по всем элементам
   if ( A[i] == X )       // если нашли, то ...
      nX = i;           // ... запомнили номер
 if (nX < 0) printf("Не нашли...")
 else        printf("A[%d]=%d", nX, X);

nX – номер нужного элемента в массиве

description:
44

Двоичный поиск

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

X = 7

X < 8

8

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

4

X > 4

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

6

X > 6

Выбрать средний элемент A[c] и сравнить с X.
Если X = A[c], нашли (выход).
Если X  A[c], искать дальше во второй половине.

alt: Двоичный поиск 0 L c R N-1 nX = -1;

description:
45

Двоичный поиск

0

L

c

R

N-1

 nX = -1;
 L = 0; R = N-1; // границы: ищем от A[0] до A[N-1]
 while ( R >= L ){
   c = (R + L) / 2;
   if (X = = A[c]) {
     nX = c;
     break;
     }
   if (X  A[c]) L = c + 1;
   }
 if (nX < 0) printf("Не нашли...");
 else        printf("A[%d]=%d", nX, X);

номер среднего элемента

если нашли …

выйти из цикла

сдвигаем границы

>

alt: Сравнение методов поиска Линейный

description:
46

Сравнение методов поиска

Линейный

Двоичный

подготовка

нет

отсортировать

число шагов

N = 2

2

N = 16

16

5

N = 1024

1024

11

N= 1048576

1048576

21

N

≤ N

≤ log2N+1

alt: Задания «4»: Написать программу, которая сортирует массив

description:
47

Задания

«4»:  Написать программу, которая сортирует массив ПО УБЫВАНИЮ и ищет в нем элемент, равный X (это число вводится с клавиатуры). Использовать двоичный поиск.

«5»:  Написать программу, которая считает среднее число шагов в двоичном поиске для массива из 32 элементов в интервале [0,100]. Для поиска использовать 1000 случайных чисел в этом же интервале.

alt: Программирование на языке Си

description:
Программирование на языке Си Часть II

Тема 6. Массивы в процедурахи функциях

alt: Массивы в процедурах Задача: составить процедуру, которая переставляет элементы массива в обратном порядке

description:
49

Массивы в процедурах

Задача: составить процедуру, которая переставляет элементы массива в обратном порядке.

void Reverse ( int A[]  , int N )
{
int i, c;
for ( i = 0; i < N/2; i ++ ) {
  c = A[i];
  A[i] = A[N-1-i];
   A[N-1-i] = c;
  }
}

int A[]

параметр-массив

размер массива

alt: Массивы как параметры процедур

description:
50

Массивы как параметры процедур

Особенности:
при описании параметра-массива в заголовке функции его размер не указывается (функция работает с  массивами любого размера)

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

alt: Массивы в процедурах void Reverse ( int

description:
51

Массивы в процедурах

void Reverse ( int A[], int N )
{
...
}
main()
{
  int A[10];
    // здесь надо заполнить массив
  Reverse ( A, 10 );  // весь массив
  // Reverse ( A, 5 );   // первая половина
  // Reverse ( A+5, 5 ); // вторая половина
}

A или &A[0]

это адрес начала массива в памяти

A+5 или &A[5]

alt: Задания «4»: Написать процедуру, которая сортирует массив по возрастанию, и показать пример ее использования

description:
52

Задания

«4»:  Написать процедуру, которая сортирует массив по возрастанию, и показать пример ее использования.

«5»:  Написать процедуру, которая ставит в начало массива все четные элементы, а  конец – все нечетные.

alt: Массивы в функциях Задача: составить функцию, которая находит сумму элементов массива

description:
53

Массивы в функциях

Задача: составить функцию, которая находит сумму элементов массива.

int Sum ( int A[], int N )
{
int i, sum = 0;
for ( i = 0; i < N; i ++ )
	sum += A[i];
return sum;
}

результат – целое число

int A[]

параметр-массив

размер массива

alt: Массивы в процедурах и функциях int

description:
54

Массивы в процедурах и функциях

int Sum ( int A[], int N )
{
...
}
main()
{
  int A[10], sum, sum1, sum2;
    // заполнить массив
  sum  = Sum ( A, 10 );  // весь массив
  sum1 = Sum ( A, 5 );   // первая половина
  sum2 = Sum ( A+5, 5 ); // вторая половина
  ...
}

alt: Задания «4»: Написать функцию, которая находит максимальный элемент в массиве

description:
55

Задания

«4»:  Написать функцию, которая находит максимальный элемент в массиве.

«5»:  Написать логическую функцию, которая определяет, верно ли, что среди элементов массива есть два одинаковых. Если ответ «да», функция возвращает 1; если ответ «нет», то 0.
	Подсказка: для отладки удобно использовать массив из 5 элементов, задаваемых вручную:

const int N = 5;
int A[N] = { 1, 2, 3, 3, 4 };

alt: Программирование на языке Си

description:
Программирование на языке Си Часть II

Тема 7. Практикум                             (моделирование)

alt: Моделирование кипения воды Задача:

description:
57

Моделирование кипения воды

Задача:  Построить компьютерную модель кипения воды.

Хранение данных:  координаты (центров) пузырьков хранятся в массивах X и Y:
X[i], Y[i] – координаты центра пузырька с номером i.

alt: Структура программы #include #include #include const int

description:
58

Структура программы

#include <graphics.h>
#include <conio.h>
#include <stdlib.h>
const int N = 100;
int X[N], Y[N], r = 3;
void Init ();   // начальное положение
void Draw ( int color ); // рисуем, стираем
void Sdvig ( int dy );   // летят вверх
void Zamena ();          // ушли, пришли
main()
{
  initwindow (600, 400);
  ... // основная часть программы
  closegraph();
}
... // здесь сами процедуры

глобальные константы и переменные

объявления процедур

alt: Основная программа Init(); // начальная расстановка while ( 1 ) // зацикливание ??? {

description:
59

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

 Init();        // начальная расстановка
 while ( 1 )    // зацикливание ???
   {

   Draw ( YELLOW );  // рисуем все пузырьки
   delay ( 10 );     // ждем 10 мс
   Draw ( BLACK );   // стираем все пузырьки
   Sdvig ( 4 );      // вверх на 4 пикселя
   Zamena();    // если за пределами экрана…
   }

if ( kbhit() )
  if ( getch() == 27 ) break;

выход по Esc (код 27)

alt: Процедура Init void Init() { int i; for ( i = 0; i <

description:
60

Процедура Init

void Init()
{
  int i;
  for ( i = 0; i < N; i ++ ) {
    X[i] = random(600 - 2*r) + r;
    Y[i] = random(400 - 2*r) + r;
    }
}

Начальная случайная расстановка:

600

Интервал для x: [r, 600-r]

400

Интервал для y: [r, 400-r]

X[i] = random(640 - 2*r) + r;

Y[i] = random(400 - 2*r) + r;

alt: Процедуры Draw, Sdvig Рисование и стирание: void

description:
61

Процедуры Draw, Sdvig

Рисование и стирание:

void Draw ( int color )
{
  int i;
  setcolor ( color );
  for ( i = 0; i < N; i ++ )
    circle ( X[i], Y[i], r );
}

Сдвиг вверх:

void Sdvig ( int dy )
{
  int i;
  for ( i = 0; i < N; i ++ )
    Y[i] -= dy;
}

alt: Процедура Zamena Замена вышедших за границы экрана: 400 void

description:
62

Процедура Zamena

Замена вышедших за границы экрана:

400

void Zamena ()
{
  int i;
  for ( i = 0; i < N; i ++ )
    if ( Y[i] < r ) {
      X[i] = random(600 - 2*r) + r;
      Y[i] = 400 - r;
      }
}

Y[i]< r

Y[i] = 400 - r

Условие выхода:

Перебросить вниз:

if ( Y[i] < r ) { ... }

X[i] = random(600 - 2*r) + r;
Y[i] = 400 – r;

alt: Задания «4»: Моделирование кипения воды в стакане (синий фон, рамка): «5»:

description:
63

Задания

«4»:  Моделирование кипения воды в стакане (синий фон, рамка):

«5»:  Моделирование двустороннего потока: часть частиц двигаются влево, часть – вправо.

alt: Программирование на языке Си

description:
Программирование на языке Си Часть II

Тема 8. Символьные строки

alt: Чем плох массив символов? char

description:
65

Чем плох массив символов?

char A[4] = { 'A', '3', '[', 'Ж'};
char B[10];

Это массивы символов:

Для массива:
каждый символ – отдельный объект;
массив имеет длину N, которая задана при объявлении

Что нужно:
обрабатывать последовательность символов как единое целое
строка должна иметь переменную длину

alt: Символьные строки П р и в е т ! \0 ¤ … ¤ 0 79 рабочая часть s[0] s[1] s[2] s[3] char s[80]; признак окончания…

description:
66

Символьные строки

П

р

и

в

е

т

!

\0

¤

…

¤

0

79

рабочая часть

s[0]

s[1]

s[2]

s[3]

char s[80];

признак окончания строки: символ с кодом 0

Символьная строка – это последовательность символов, которая заканчивается символом '\0'.

alt: Объявление символьных строк Объявить строку = выделить ей место в памяти и присвоить имя

description:
67

Объявление символьных строк

Объявить строку = выделить ей место в памяти и присвоить имя.

char s[80];

char s1[80] = "abc";

char qqq[] = "Вася";

выделяется 80 байт, в строке – «мусор» (если она глобальная, то нули '\0‘)

выделяется 80 байт, занято 4 байта (с учетом '\0')

выделяется 5 байт
 (с учетом '\0')

alt: Ввод и вывод символьных строк Задача: ввести слово с клавиатуры и заменить все буквы «а» на буквы «б»

description:
68

Ввод и вывод символьных строк

Задача: ввести слово с клавиатуры и заменить все буквы «а» на буквы «б».

main()
{
  char q[80];
  int i;
  printf("Введите строку\n");
  scanf( "%s", q);
  i = 0;
  while ( q[i] != '\0' ) {
    if ( q[i] == 'а' ) q[i] = 'б';
    i ++;
    }
  printf ( "Результат: %s ", q );
}

%s

не надо ставить &:
q    &q[0]

%s – формат для ввода и вывода символьных строк (выводится только часть до '\0'

"%s"

пока не дошли до конца строки

переход к следующему символу

начали с q[0]

alt: Ввод одного слова: Ввод строки с пробелами: char q[80]; printf ("Введите текст:\n"); scanf ( "%s", q ); printf ("Введено:\n%s", q );

description:
69

Ввод одного слова:

Ввод строки с пробелами:

char q[80];
printf ("Введите текст:\n");
scanf ( "%s", q );
printf ("Введено:\n%s", q );

Ввод символьных строк

Введите текст:
Вася пошел гулять
Введено: Вася

char q[80];
printf("Введите текст:\n");
gets ( q );
printf("Введено:\n%s", q );

Введите текст:
Вася пошел гулять
Введено: Вася пошел гулять

gets ( q );

alt: Универсальный способ: Только для одной строки: printf ( "Результат: %s", q );

description:
70

Универсальный способ:

Только для одной строки:

printf ( "Результат: %s", q );

Вывод символьных строк

puts ( q );

можно выводить сразу и другую информацию: надписи, значения переменных, …

вывод только одной строки
после вывода – переход на новую строку

printf ( "%s\n", q );

alt: Задания «4»: Ввести символьную строку и заменить все буквы "а" на буквы "б" и наоборот, как заглавные, так и строчные

description:
71

Задания

«4»:  Ввести символьную строку и заменить все буквы "а" на буквы "б" и наоборот, как заглавные, так и строчные.
    Пример:
	 Введите строку:
	 ааббссААББСС
	 Результат:
	 ббаассББААСС
«5»:  Ввести символьную строку и проверить, является ли она палиндромом (палиндром читается одинаково в обоих направлениях).
    Пример:                                    Пример:
	 Введите строку:         Введите строку:
	 АБВГДЕ                  КАЗАК
	 Результат:              Результат:
	 Не палиндром.           Палиндром.

alt: Функции для работы со строками

description:
72

Функции для работы со строками

Длина строки: strlen (string length)

Подключение библиотеки:

#include <string.h>

char q[80] = "qwerty";
int n;
n = strlen ( q );

n = 6

alt: Сравнение строк char q1[80], q2[80]; int n; gets ( q1 ); gets ( q2 ); n = strcmp ( q1, q2 ); strcmp ( string…

description:
73

Сравнение строк

char q1[80], q2[80];
int n;
gets ( q1 );
gets ( q2 );
n = strcmp ( q1, q2 );

strcmp (string comparison):

q1

q2

n

"AA"

0

"AB"

"AA"

1

"AA"

"AB"

– 1

"A"

65

alt: Пример решения задачи Задача: ввести строку и определить, сколько в ней слов

description:
74

Пример решения задачи

Задача: ввести строку и определить, сколько в ней слов. Программа должна работать только при вводе правильного пароля.
Идея решения:
проверка пароля – через strcmp
количество слов = количеству первых букв слова
первая буква: пробел и за ним «не пробел»

исключение: предложение начинается со слова (а не с пробела)

В

а

с

я

п

о

ш

е

л

г

у

л

я

т

ь

\0

¤

alt: Проверка пароля #include main() { char secret[] = "123", pass[20]; printf ( "Введите пароль\n" ); gets ( pass ); if ( strcmp ( pass, secret…

description:
75

Проверка пароля

#include <string.h>
main()
{
 char secret[] = "123", pass[20];
 printf ( "Введите пароль\n" );
 gets ( pass );
 if ( strcmp ( pass, secret ) != 0 )
   {
   printf ( "Пароль неверный" );
   getch ();
   return 1;
   }
 ...
}

если пароль неверный...

сообщить об ошибке и выйти из программы

аварийное завершение, код ошибки 1

alt: Основная часть программы #include #include main() { char q[80]; int i, len, count = 0;

description:
76

Основная часть программы

#include <stdio.h>
#include <string.h>
main()
{
 char q[80];
 int i, len, count = 0;
 ...  // проверка пароля
 printf ("Введите предложение\n");
 gets ( q );
 len = strlen( q );
 if ( q[0] != ' ') count++;
 for ( i = 0; i < len - 1; i ++ )
   if ( q[i] == ' ' && q[i+1] != ' ' )
     count ++;
 printf ( "Найдено %d слов", count );
}

особый случай

если нашли пробел, а за ним не пробел…

предыдущий слайд

alt: Подсказка: для вывода одного символа используйте функцию putchar (символ)

description:
77

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

Задания (везде – с паролем!)

«4»:  Ввести предложение и определить, сколько слов заканчиваются на букву 'а'.
    Пример:
	 Введите предложение:     Введите предложение:
	 Мама мыла раму           Декан пропил бутан            Найдено слов: 2          Нет таких слов
«5»:  Ввести предложение и разобрать его на отдельные слова:
    Пример:
	 Введите предложение:
	 Мама мыла раму
	 Результат:
	 Мама
	 мыла
	 раму

putchar(q[i]);
putchar('\n'); // переход на новую строку

alt: Копирование строк strcpy ( string copy ) char q1[10] = "qwerty", q2[10] = "01234"; strcpy ( q1, q2 ); куда откуда копирование «хвоста» строки char…

description:
78

Копирование строк

strcpy (string copy)

char q1[10] = "qwerty", q2[10] = "01234";

strcpy ( q1, q2 );

куда

откуда

копирование «хвоста» строки

char q1[10] = "qwerty", q2[10] = "01234";
strcpy ( q1, q2+2 );

q

w

e

r

t

y

\0

¤

0

1

2

3

4

\0

¤

q2

q1

q2 = &q2[0]

q2+2 = &q2[2]

2

3

4

\0

alt: Копирование строк копирование в середину строки char q1[10] = "qwerty", q2[10] = "01234"; strcpy ( q1+2, q2 ); q w e r t y \0…

description:
79

Копирование строк

копирование в середину строки

char q1[10] = "qwerty", q2[10] = "01234";
strcpy ( q1+2, q2 );

q

w

e

r

t

y

\0

¤

0

1

2

3

4

\0

¤

q2

q1

q1+2 = &q1[2]

0

1

2

3

4

\0

char q1[10] = "qwerty", q2[10] = "01234";
strcpy ( q1+2, q2+3 );

q

w

e

r

t

y

\0

¤

0

1

2

3

4

\0

¤

q2

q1

3

4

\0

q2+3 = &q2[3]

q1+2 = &q1[2]

alt: Копирование строк strncpy – копирование нескольких символов char q1[10] = "qwerty", q2[10] = "01234"; strncpy ( q1+2, q2, 2 ); q w e r t…

description:
80

Копирование строк

strncpy  – копирование нескольких символов

char q1[10] = "qwerty", q2[10] = "01234";
strncpy ( q1+2, q2, 2 );

q

w

e

r

t

y

\0

¤

0

1

2

3

4

\0

¤

q2

q1

q1+2 = &q1[2]

0

1

alt: Копирование строк копирование строки-константы char q1[10] = "qwerty"; strcpy ( q1+1, "ABCD"); q w e r t y \0 ¤

description:
81

Копирование строк

копирование строки-константы

char q1[10] = "qwerty";
strcpy ( q1+1, "ABCD");

q

w

e

r

t

y

\0

¤

A

B

C

D

\0

q1

A

B

C

D

\0

char q1[10] = "qwerty";
strcpy ( "ABCD", q1+2 );

НЕ

alt: Копирование строк копирование внутри одной строки char q[10] = "012345"; strcpy ( q, q+2 ); 0 1 2 3 4 5 \0 ¤ q 2…

description:
82

Копирование строк

копирование внутри одной строки

char q[10] = "012345";
strcpy ( q, q+2 );

0

1

2

3

4

5

\0

¤

q

2

3

4

5

\0

char q[10] = "012345";
strcpy ( q+2, q );

0

1

2

3

4

5

\0

¤

q

0

1

0

1

0

1

Зацикливание и зависание компьютера!

alt: Объединение строк strcat ( string concatenation ) = копирование второй строки в конец первой char q1[10] = "qwe", q2[10] = "0123"; strcat ( q1, q2…

description:
83

Объединение строк

strcat (string concatenation) = копирование второй строки в конец первой

char q1[10] = "qwe", q2[10] = "0123";
strcat ( q1, q2 );

q

w

e

\0

¤

0

1

2

3

\0

¤

q2

q1

0

1

2

3

\0

char q1[10] = "qwe", q2[10] = "0123";
strcat ( q1, q2+2 );

q

w

e

\0

¤

0

1

2

3

\0

¤

q2

q1

2

3

\0

alt: Проблемы при копировании строк char q1[] = "qwer", q2[10] = "01234"; strcpy ( q1+2, q2 ); не хватает места для строки-результата q w e r…

description:
84

что-то другое

Проблемы при копировании строк

char q1[] = "qwer", q2[10] = "01234";
strcpy ( q1+2, q2 );

не хватает места для строки-результата

q

w

e

r

\0

0

1

2

3

\0

¤

q2

q1

0

1

2

3

\0

зацикливание при копировании в ту же строку «слева направо»

char q[10] = "01234";
strcpy ( q+2, q );

alt: Пример решения задачи Задача: ввести имя файла (без пути) и поменять его расширение на "

description:
85

Пример решения задачи

Задача: ввести имя файла (без пути) и поменять его расширение на ".exe".
   Пример:
	 Введите имя файла:     Введите имя файла:
	 vasya.html             vasya
 	 Результат:             Результат:
	 vasya.exe              vasya.exe
Алгоритм:
найти точку в имени файла
если она есть, скопировать в это место строку-константу ".exe"
если точки нет, добавить в конец строки ".exe"

alt: Программа main() { char fName[80]; int i; printf("Введите имя файла\n"); gets ( fName ); i = 0; while ( fName[i] != '

description:
86

Программа

main()
{
char	fName[80];
int  i;
printf("Введите имя файла\n");
gets ( fName );
i = 0;
while ( fName[i] != '.' ) {
   if ( fName[i] == '\0' ) break;
   i ++;
   }
if ( fName[i] == '.' )
     strcpy ( fName+i, ".exe" );
else strcat ( fName, ".exe" );
puts ( "Результат:" );
puts ( fName );
}

поиск точки

дошли до конца строки

меняем или добавляем расширение

alt: Задания «4»: Ввести полный адрес файла (возможно, без расширения) и изменить его расширение на «

description:
87

Задания

«4»:  Ввести полный адрес файла (возможно, без расширения) и изменить его расширение на «.exe».
    Пример:
	 Введите имя файла:     Введите имя файла:
	 C:\DOC.TXT\qqq         C:\DOC.TXT\qqq.com
	 Результат:             Результат:
	 C:\DOC.TXT\qqq.exe     C:\DOC.TXT\qqq.exe
«5»:  Ввести в одной строке фамилию, имя и отчество. Вывести приветствие, где останутся имя и фамилия (см. пример).
    Пример:
	 Введите ФИО:
	 Пупкин Василий Иванович
	 Результат:
	 Привет, Василий Пупкин!

alt: Поиск в символьных строках Задача: найти заданный символ или сочетание символов ( подстроку ) в символьной строке

description:
88

Поиск в символьных строках

Задача: найти заданный символ или сочетание символов (подстроку) в символьной строке.

Указатель – это переменная в которую можно записать адрес другой переменной заданного типа.

alt: Указатели char *p; // адрес любого символа или строки int *pI; // адрес целого числа float *pF; // адрес вещественного числа

description:
89

Указатели

char *p;   // адрес любого символа или строки
int *pI;   // адрес целого числа
float *pF; // адрес вещественного числа

Объявление:

Целые переменные и массивы:

int n = 6, A[5] = {0, 1, 2, 3, 4};
int *p;     // указатель на целое
p = &n;     // записать адрес n
*p = 20;    // n = 20
p = A + 2;  // записать адрес A[2] (&A[2])
*p = 99;    // изменить A[2]
p ++;       // перейти к A[3]
printf("Адрес: %p, число %d", p, *p);

Адрес: 6BCD:000C, значение 3

pointer – указатель

alt: Указатели и символьные строки char str[10] = "0123456"; char *p; p = str; *p = 'A'; p ++; *p = 'B'; p ++; strcpy (…

description:
90

Указатели и символьные строки

char str[10] = "0123456";
char *p;
p = str;
*p = 'A';
p ++;
*p = 'B';
p ++;
strcpy ( p, "CD" );
strcat ( p, "qqq" );
puts ( p );

// указатель на символ
// или & str[0]
// "A12345"
// перейти к str[1]
// "AB2345“
// перейти к str[2]
// "ABCD"
// "ABCDqqq"

alt: Поиск символа strchr : найти первый заданный символ c начала строки strrchr : найти последний заданный символ в строке char q[10] = "abcdabcd"; char *p;…

description:
91

Поиск символа

strchr: найти первый заданный символ c начала строки

strrchr: найти последний заданный символ в строке

char q[10] = "abcdabcd";
char *p;
int nomer;
p = strchr(q, 'b');
if ( p == NULL )
  printf ( "Не нашли..." );
else {
  nomer = p – q;
  printf ( "Номер символа %d", nomer );
  }

a

b

c

d

a

b

c

d

\0

¤

0

1

2

3

4

5

6

7

8

9

q

q+1

q+5

p

reverse

alt: Поиск подстроки strstr : найти первую подстроку c начала строки char q[10] = "abcdabcd"; char *p; int nomer; p = strstr(q, "bcd"); if ( p…

description:
92

Поиск подстроки

strstr: найти первую подстроку c начала строки

char q[10] = "abcdabcd";
char *p;
int nomer;
p = strstr(q, "bcd");
if ( p == NULL )
  printf ( "Не нашли..." );
else {
  nomer = p – q;
  printf ( "Номер первого символа %d", nomer );
  }

a

b

c

d

a

b

c

d

\0

¤

0

1

2

3

4

5

6

7

8

9

q

q+1

q+5

p

alt: Пример решения задачи Задача: ввести предложение и определить, сколько раз в нем встречается имя «Вася»

description:
93

Пример решения задачи

Задача: ввести предложение и определить, сколько раз в нем встречается имя «Вася».
Проблема: функция strstr ищет только с начала строки.
Алгоритм:
Записать адрес начала строки в указатель start.
Искать подстроку «Вася», начиная с адреса start.

Если не нашли, выход из цикла.
Увеличить счетчик найденных слов.
Переставить start на адрес после найденного слова.
Перейти к шагу 2.

В

а

с

я

и

В

а

с

я

В

а

с

я

!

\0

start

p

p = strstr( start, "Вася");

alt: Программа main() { char q[80], *start, *p; int count = 0; puts ( "Введите предложение" ); gets ( q ); start = q; // ищем…

description:
94

Программа

main()
{
  char q[80], *start, *p;
  int count = 0;
  puts ( "Введите предложение" );
  gets ( q );
  start = q; // ищем с начала строки
  while ( 1 ) {
    p = strstr ( start, "Вася" );
    if ( p == NULL ) break;
    count ++;
    start = p + 4; // отсюда ищем следующее слово
    }
  printf ( "Имя 'Вася' встречается %d раз", count );
}

начало поиска

адрес найденного слова

alt: Задания «4»: Ввести предложение и заменить все имена «Вася» на «Юра»

description:
95

Задания

«4»:  Ввести предложение и заменить все имена «Вася» на «Юра».
    Пример:
	 Введите предложение:
	 Вася, Вася, Вася и Вася!!!
	 Результат:
	 Юра, Юра, Юра и Юра!!!
«5»: Ввести предложение и заменить все имена «Юра» на «Вася».
    Пример:
	 Введите предложение:
	 Юра, Юра, Юра и Юра!!!
	 Результат:
	 Вася, Вася, Вася и Вася!!!

alt: Строки в процедурах и функциях

description:
96

Строки в процедурах и функциях

Задача: составить процедуру, которая переставляет символы строки в обратном порядке.
Алгоритм:
определить длину строки len;
все символы первой половины переставить с соответствующими символами второй половины:

 c = s[i];
 s[i] = s[len-i-1];
 s[len-1-i] = c;

s[i]

s[len-1-i]

alt: Программа void Reverse ( char s[] ) { int len = strlen(s); char c; for ( i = 0; i < len/2; i ++ )…

description:
97

Программа

void Reverse ( char s[] )
{
  int len = strlen(s);
  char c;
  for ( i = 0; i < len/2; i ++ ) {
    c = s[i];
    s[i] = s[len-i-1];
    s[len-1-i] = c;
    }
}
main()
{
  char s[] = "1234567890";
  Reverse ( s );
  puts ( s );
  Reverse ( s + 5 );
  puts ( s );
}

0987654321

0987612345

длину строки определяем на месте

alt: Задания «4»: Разработать процедуру, которая переставляет пары соседних символов

description:
98

Задания

«4»:  Разработать процедуру, которая переставляет пары соседних символов.
    Пример:
	 Введите предложение:
	 Вася пошел гулять!
	 Результат:
	 аВясп шолег лутя!ь
«5»: Разработать процедуру, которая удаляет все лишние пробелы (в начале предложения и сдвоенные пробелы).
    Пример:
	 Введите предложение:
	     Вася     пошел     гулять!
	 Результат:
	 Вася пошел гулять!

alt: Символьные строки в функциях Задача: составить функцию, которая находит количество цифр в строке

description:
99

Символьные строки в функциях

Задача: составить функцию, которая находит количество цифр в строке.

int NumDigits ( char s[] )
{
  int i, count = 0;
  for ( i = 0; i < strlen(s); i ++ )
    if( strchr ( "0123456789", s[i] ) )
      count ++;
  return count;
}

if  ( strchr ( "0123456789", s[i] ) != NULL )
или
if ( '0' <= s[i] && s[i] <= '9' )

alt: Символьные строки в функциях Основная программа int

description:
100

Символьные строки в функциях

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

int NumDigits ( char s[] )
{
...
}
main()
{
  char s[80];
  int n;
  printf ( "Введите строку\n" );
  gets ( s );
  n = NumDigits ( s );
  printf ( "Нашли %d цифр.", s );
}

alt: Задания «4»: Разработать функцию, которая определяет, верно ли, что слово – палиндром

description:
101

Задания

«4»:  Разработать функцию, которая определяет, верно ли, что слово – палиндром.
    Пример:
	 Введите слово: 	Введите слово:
	 казак 	кунак
	 Результат:	Результат:
	 Это палиндром.	Не палиндром.
«5»: Разработать функцию, которая определяет, верно ли, что предложение (с пробелами) – палиндром.
    Пример:
	 Введите предложение:
	 а роза упала на лапу азора
	 Результат:
	 Это палиндром.

alt: Программирование на языке Си

description:
Программирование на языке Си Часть II

Тема 9. Рекурсивный перебор

alt: Рекурсивный перебор Задача: Алфавит языка племени «тумба-юмба» состоит из букв

description:
103

Рекурсивный перебор

Задача:  Алфавит языка племени «тумба-юмба» состоит из букв Ы, Ц, Щ и О. Вывести на экран все слова из К букв, которые можно составить в этом языке, и подсчитать их количество. Число K вводится с клавиатуры.

0

K-1

в каждой ячейке может быть любая из 4-х букв

4 варианта

4 варианта

4 варианта

4 варианта

Количество вариантов:

alt: Рекурсивный перебор Ы 0 K-1 Рекурсия:

description:
104

Рекурсивный перебор

Ы

0

K-1

Рекурсия:  Решения задачи для слов из К букв сводится к 4-м задачам для слов из K-1 букв.

Щ

0

K-1

О

0

K-1

Ц

0

K-1

перебрать все варианты

перебрать все варианты

перебрать все варианты

перебрать все варианты

alt: Процедура ● ? ? 0 K-1 p Глобальные переменные: char s[80]; int count,

description:
105

Процедура

●

?

?

0

K-1

p

Глобальные переменные:
 char s[80];
 int count, K;

s

p+1

рекурсивные вызовы

окончание рекурсии

void Rec( int p )
{
  if ( p >= K ) {
    puts ( s );
    count ++;
    return;
    }
  s[p] = 'Ы'; Rec ( p + 1 );
  s[p] = 'Ц'; Rec ( p + 1 );
  s[p] = 'Щ'; Rec ( p + 1 );
  s[p] = 'О'; Rec ( p + 1 );
}

p символов уже на своих местах

alt: Процедура void Rec ( int p ) { const char letters[] = "ЫЦЩО"; int i; if ( p >=

description:
106

Процедура

void Rec ( int p )
{
  const char letters[] = "ЫЦЩО";
  int i;
  if ( p >= K ) {
    puts ( s );
    count ++;
    return;
    }
  for ( i = 0; i < strlen(letters); i ++) {
    s[p] = letters[i];
    Rec ( p + 1 );
    }
}

const char letters[] = 'ЫЦЩО';

for ( i = 0; i < strlen(letters); i ++) {
    s[p] = letters[i];
    Rec ( p + 1 );
    }

все буквы

цикл по всем буквам

локальная переменная

alt: Программа char s[80]; int K, count = 0; main() { printf ( "Введите длину слов:\n" ); scanf ( "%d", &K );

description:
107

Программа

char s[80];
int K, count = 0;

main()
{
  printf ( "Введите длину слов:\n" );
  scanf ( "%d", &K  );
  Rec ( 0 );
  printf ( "Всего %d слов.", count );
}

void Rec ( int p )
{
...
}

процедура

глобальные переменные
(обнуляются)

count;

alt: Задания Алфавит языка племени "тумба-юмба" состоит из букв

description:
108

Задания

Алфавит языка племени "тумба-юмба" состоит из букв Ы, Ц, Щ и О. Число K вводится с клавиатуры.

«4»:  Вывести на экран все слова из К букв, в которых буква Ы  встречается более 1 раза, и подсчитать их количество.
«5»:  Вывести на экран все слова из К букв, в которых есть одинаковые буквы, стоящие рядом (например, ЫЩЩО), и подсчитать их количество.

alt: Программирование на языке Си

description:
Программирование на языке Си Часть II

Тема 10. Матрицы

alt: Матрицы Задача: запомнить положение фигур на шахматной доске

description:
110

Матрицы

Задача: запомнить положение фигур на шахматной доске.

1

2

3

4

5

6

a

b

c

d

e

f

g

h

8

7

6

5

4

3

2

1

0

2

0

3

0

4

0

7

6

5

4

3

2

1

0

0

1

2

3

4

5

6

7

c6

A[5][2]

alt: Матрицы Матрица – это прямоугольная таблица однотипных элементов

description:
111

Матрицы

Матрица – это прямоугольная таблица однотипных элементов.
Матрица – это массив, в котором каждый элемент имеет два индекса (номер строки и номер столбца).

1

4

7

3

6

2

-5

0

15

10

8

9

11

12

20

0

1

2

0

1

2

3

4

A

7

0

11

2

-5

0

15

10

12

строка 1

столбец 2

ячейка A[2][3]

alt: Матрицы Объявление: const int N = 3,

description:
112

Матрицы

Объявление:

const int N = 3, M = 4;
int A[N][M];
float a[2][2] = {{3.2, 4.3}, {1.1, 2.2}};
char sym[2][2] = { 'a', 'b', 'c', 'd' };

Ввод с клавиатуры:

for ( i = 0; i < N; i ++ )
  for ( j = 0; j < M; j ++ ) {
    printf ( "A[%d][%d]=", i, j);
    scanf ( "%d", &A[i][j] );
    }

A[0][0]=

25

A[0][1]=

14

A[0][2]=

14

...

A[2][3]=

54

i

j

for ( j = 0; j < M; j ++ )
  for ( i = 0; i < N; i ++ ) {

alt: Матрицы Заполнение случайными числами for ( i = 0; i <

description:
113

Матрицы

Заполнение случайными числами

for ( i = 0; i < N; i ++ )
  for ( j = 0; j < M; j ++ )
    A[i][j] = random(25)- 10;

цикл по строкам

цикл по столбцам

Вывод на экран

for ( i = 0; i < N; i ++ ) {
  for ( j = 0; j < M; j ++ )
    printf("%5d", A[i,j]);
  printf("\n");
  }

перейти на новую строку

for ( j = 0; j < M; j ++ )
  printf("%5d", A[i][j]);

вывод строки

12

25

1

13

156

1

12

447

1

456

222

23

в той же строке

alt: Обработка всех элементов матрицы

description:
114

Обработка всех элементов матрицы

Задача: заполнить матрицу из 3 строк и 4 столбцов случайными числами и вывести ее на экран. Найти сумму элементов матрицы.

main()
{
  const int N = 3, M = 4;
  int A[N][M], i, j, S = 0;
  ... // заполнение матрицы и вывод на экран
  for ( i = 0; i < N; i ++ )
    for ( j = 0; j < M; j ++ )
      S += A[i][j];
  printf("Сумма элементов матрицы S=%d", S);
}

for ( i = 0; i < N; i ++ )
  for ( j = 0; j < M; j ++ )
    S += A[i][j];

alt: Задания Заполнить матрицу из 8 строк и 5 столбцов случайными числами в интервале [-10,10] и вывести ее на экран

description:
115

Задания

Заполнить матрицу из 8 строк и 5 столбцов случайными числами в интервале [-10,10] и вывести ее на экран.

«4»:  Найти минимальный и максимальный элементы в матрице их номера. Формат вывода:
             Минимальный элемент  A[3][4]=-6
      Максимальный элемент A[2][2]=10
«5»:  Вывести на экран строку, сумма элементов которой максимальна.  Формат вывода:
      Строка 2:  3  5  8  9  8

alt: Операции с матрицами Задача 1.

description:
116

Операции с матрицами

Задача 1. Вывести на экран главную диагональ квадратной матрицы из N строк и N столбцов.

A[0][N-1]

A[1][1]

A[2][2]

A[N-1][N-1]

for ( i = 0; i < N; i ++ )
  printf ( "%5d", A[i][i] );

Задача 2. Вывести на экран вторую диагональ.

A[N-1][0]

A[N-2][1]

A[1][N-2]

сумма номеров строки и столбца N-1

A[0][0]

for ( i = 0; i < N; i ++)
  printf ( "%5d", A[i][ N-1-i ]);

N-1-i

alt: Операции с матрицами Задача 3.

description:
117

Операции с матрицами

Задача 3. Найти сумму элементов, стоящих  на главной диагонали и ниже ее.

строка 0: A[0][0]
строка 1: A[1][0]+A[1][1]
...
строка i: A[i][0]+A[i][2]+...+A[i][i]

S = 0;
for ( i = 0; i < N; i ++ )
  for ( j = 0; j <= i; j ++ )
    S += A[i][j];

цикл по всем строкам

for ( j = 0; j <= i; j ++ )
  S += A[i][j];

складываем нужные элементы строки i

alt: Операции с матрицами Задача 4.

description:
118

Операции с матрицами

Задача 4. Перестановка строк или столбцов. В матрице из N строк и M столбцов переставить 1-ую и 3-ю строки.

1

2

5

2

1

7

3

1

3

7

1

3

j

A[1][j]

A[3][j]

for ( j = 0; j <= M; j ++ ) {
  c = A[1][j];
  A[1][j] = A[3][j];
  A[3][j] = c;
  }

Задача 5. К третьему столбцу добавить шестой.

for ( i = 0; i < N; i ++ )
  A[i][3] += A[i][6];

alt: Задания Заполнить матрицу из 7 строк и 7 столбцов случайными числами в интервале [-10,10] и вывести ее на экран

description:
119

Задания

Заполнить матрицу из 7 строк и 7 столбцов случайными числами в интервале [-10,10] и вывести ее на экран. Обнулить элементы, отмеченные зеленым фоном, и вывести полученную матрицу на экран.

«4»:                                            «5»:

alt: Программирование на языке Си

description:
Программирование на языке Си Часть II

Тема 11. Файлы

alt: Файлы Файл – это область на диске, имеющая имя

description:
121

Файлы

Файл – это область на диске, имеющая имя.

Файлы

только текст без оформления,не содержат управляющих символов (с кодами < 32), кроме перевода строки

ACSII (1 байт на символ)
UNICODE (2 байта на символ)

*.txt, *.log,
*.htm, *.html

могут содержать любые символы кодовой таблицы

*.doc, *.exe,
*.bmp, *.jpg,
*.wav, *.mp3,
*.avi, *.mpg

Текстовые

Двоичные

Папки (каталоги)

alt: Принцип сэндвича I этап . открыть файл (сделать его активным, приготовить к работе) f = fopen("qq

description:
122

Принцип сэндвича

I этап. открыть файл (сделать его активным, приготовить к работе)

f = fopen("qq.dat", "r");

II этап: работа с файлом

III этап: закрыть (освободить) файл

fclose ( f );

fscanf ( f, "%d", &n );  // ввести значение n

fprintf( f, "n=%d", n ); // записать значение n

для чтения ("r", англ. read)

f = fopen("qq.dat", "w");

для записи ("w", англ. write)

f = fopen("qq.dat", "a");

для добавления ("a", англ. append)

Переменная типа «указатель на файл»: FILE *f;

alt: Работа с файлами Особенности: имя файла упоминается только в команде fopen , обращение к файлу идет через указатель f; файл, который открывается на чтение, должен…

description:
123

Работа с файлами

Особенности:
имя файла упоминается только в команде fopen, обращение к файлу идет через указатель f;
файл, который открывается на чтение, должен существовать
если файл, который открывается на запись, существует, старое содержимое уничтожается
данные (этим способом) записываются в файл в текстовом виде
когда программа заканчивает работу, все файлы закрываются автоматически
после закрытия файла переменную f можно использовать еще раз для работы с другим файлом

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

description:
124

Последовательный доступ

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

  12    5      45        67      56●

конец файла
(end of file, EOF)

  12    5      45        67      56●

f = fopen("qq.dat", "r");

fscanf ( f, "%d", &x );

alt: Ошибки при открытии файла FILE *f; f = fopen("qq

description:
125

Ошибки при открытии файла

FILE *f;
f = fopen("qq.dat", "r");
if ( f == NULL ) {
  puts("Файл на найден.");
  return;
  }

NULL

неверное имя файла
нет файла
файл заблокирован другой программой

  Если файл открыть не удалось, функция fopen возвращает NULL (нулевое значение)!

!

FILE *f;
f = fopen("qq.dat", "w");
if ( f == NULL ) {
  puts("Не удалось открыть файл.");
  return;
  }

NULL

неверное имя файла
файл «только для чтения»
файл заблокирован другой программой

alt: Пример Задача: в файле input.txt записаны числа (в столбик), сколько их – неизвестно

description:
126

Пример

Задача: в файле input.txt записаны числа (в столбик), сколько их – неизвестно. Записать в файл output.txt их сумму.
Алгоритм:
Открыть файл input.txt для чтения.
S = 0;
Прочитать очередное число в переменную x.
Если не удалось, перейти к шагу 7.
S += x;
Перейти к шагу 3.
Закрыть файл input.txt.
Открыть файл output.txt для записи.
Записать в файл значение S.
Закрыть файл output.txt.

цикл с условием «пока есть данные»

alt: Как определить, что числа кончились?

description:
127

Как определить, что числа кончились?

FILE *f;
int n, x;
f = fopen("input.txt", "r");
...
n = fscanf ( f, "%d", &x );
if ( n ! = 1 )
  puts ( "Не удалось прочитать число" );

дошли до конца файла
встретили «не число»

alt: Программа main() { FILE *f; int n, x,

description:
128

Программа

main()
{
FILE *f;
int n, x, S = 0;
f = fopen ( "input.txt", "r" );
if ( f == NULL ) {
  printf("Файл не найден.");
  return;
  }
while ( 1 ) {
  n = fscanf ( f, "%d", &x );
  if ( n != 1 ) break;
  S += x;
  }
fclose ( f );
f = fopen ( "output.txt", "w" );
fprintf ( f, "S = %d", S );
fclose ( f );
}

ошибка при открытии файла

цикл чтения данных: выход при n  1.

запись результата

alt: Задания В файле input.txt записаны числа, сколько их – неизвестно

description:
129

Задания

В файле input.txt записаны числа, сколько их – неизвестно.

«4»:  Найти среднее арифметическое всех чисел и записать его в файл output.txt.
«5»:  Найти минимальное и максимальное числа и записать их в файл output.txt.

alt: Обработка массивов Задача: в файле input

description:
130

Обработка массивов

Задача: в файле input.txt записаны числа (в столбик), сколько их – неизвестно, но не более 100. Переставить их в порядке возрастания и записать в файл output.txt.
Проблемы:
для сортировки надо удерживать в памяти все числа сразу (массив);
сколько чисел – неизвестно.
Решение:
выделяем в памяти массив из 100 элементов;
записываем прочитанные числа в массив и считаем их в переменной N;
сортируем первые N элементов массива;
записываем их в файл.

alt: Чтение данных в массив int ReadArray ( int

description:
131

Чтение данных в массив

 int ReadArray ( int A[], char fName[], int MAX )
 {
   int N = 0, k;
   FILE *f;
   f = fopen ( fName, "r" );
   while ( 1 ) {
     k = fscanf ( f, "%d", &A[N]);
     if ( k != 1 ) break;
     N ++;
     if ( N >= MAX ) break;
     }
   fclose(f);
   return N;
 }

Функция, которая читает массив из файла, возвращает число прочитанных элементов (не более MAX):

массив

заканчиваем цикл если не удалось прочитать …

имя файла

предел

… или заполнили весь массив

alt: Программа main() { int A[100],

description:
132

Программа

main()
{
 int A[100], N, i;
 FILE *f;
 N = ReadArray ( A, "input.txt", 100 );
 ... // сортировка первых N элементов
 f = fopen("output.txt", "w");
 for ( i = 0; i < N; i ++)
   fprintf ( f, "%d\n", A[i] );
 fclose ( f );
}

int ReadArray(int A[], char fName[], int MAX)
{
...
}

вывод отсортированного массива в файл

alt: Задания В файле input.txt записаны числа (в столбик), известно, что их не более 100

description:
133

Задания

В файле input.txt записаны числа (в столбик), известно, что их не более 100.

«4»:  Отсортировать массив по убыванию последней цифры и записать его в файл output.txt.
«5»: Отсортировать массив по возрастанию суммы цифр и записать его в файл output.txt.

alt: Обработка текстовых данных Задача: в файле input

description:
134

Обработка текстовых данных

Задача: в файле input.txt записаны строки, в которых есть слово-паразит "короче". Очистить текст от мусора и записать в файл output.txt.
Файл input.txt :
  Мама, короче, мыла, короче, раму.
  Декан, короче, пропил, короче, бутан.
  А роза, короче, упала на лапу, короче, Азора.
  Каждый, короче, охотник желает, короче, знать, где ...
Результат – файл output.txt :
  Мама мыла раму.
  Декан пропил бутан.
  А роза упала на лапу Азора.
  Каждый охотник желает знать, где сидит фазан.

alt: Обработка текстовых данных Особенность: надо одновременно держать открытыми два файла (один в режиме чтения, второй – в режиме записи)

description:
135

Обработка текстовых данных

Особенность:
надо одновременно держать открытыми два файла (один в режиме чтения, второй – в режиме записи).

Алгоритм:
 Открыть оба файла.
 Прочитать строку.
 Удалить все сочетания ", короче,".
 Записать строку во второй файл.
 Перейти к шагу 2.
 Закрыть оба файла.

пока не кончились данные

alt: Работа с файлами main() { char s[80], *p; int i;

description:
136

Работа с файлами

main()
{
 char s[80], *p;
 int i;
 FILE *fIn, *fOut;
 fIn = fopen("input.txt", "r");
 fOut = fopen("output.txt", "w");
 ... // обработать файл
 fclose(fIn);
 fclose(fOut);
}

файловые указатели

открыть файл для чтения

открыть файл для записи

указатель для поиска

закрыть файлы

alt: Обработка текстовых данных Чтение строки s: while ( 1 ) { p = strstr ( s, ", короче," ); if ( p ==

description:
137

Обработка текстовых данных

Чтение строки s:

 while ( 1 ) {
   p = strstr ( s, ", короче," );
   if ( p == NULL ) break;
   strcpy ( p, p + 9 );
   }

искать ", короче,"

удалить 9 символов

выйти из цикла, если не нашли

 char s[80], *p;
 FILE *fIn;
 ... // здесь надо открыть файл

 p = fgets ( s, 80, fIn );
 if ( p == NULL )
      printf("Файл закончился.");
 else printf("Прочитана строка:\n%s", s);

Обработка строки s:

строка

длина

файл

alt: Полный цикл обработки файла while ( 1 ) { p = fgets ( s, 80, fIn ); if ( p ==

description:
138

  #include <string.h>

Полный цикл обработки файла

  while ( 1 ) {
    p = fgets ( s, 80, fIn );
    if ( p == NULL ) break;
    while ( 1 ) {
      p = strstr ( s, ", короче," );
      if ( p == NULL ) break;
      strcpy ( p, p + 9 );
      }
    fputs ( s, fOut );
    }

 while ( 1 ) {
   p = strstr ( s, ", короче," );
   if ( p == NULL ) break;
   strcpy ( p, p + 9 );
   }

если нет больше строк, выйти из цикла

обработка строки

запись "очищенной" строки

читаем строку

alt: Задания В файле input.txt записаны строки, сколько их – неизвестно

description:
139

Задания

В файле input.txt записаны строки, сколько их – неизвестно.

«4»: Заменить во всем тексте «в общем» на «короче» и записать результат в файл output.txt.
«5»: Заменить во всем тексте «короче» на «в общем» и записать результат в файл output.txt.

alt: Двоичные файлы Особенности: данные хранятся во внутреннем машинном формате (в текстовом редакторе не прочитать) можно читать и записывать любой кусок памяти (просто биты…) принцип сэндвича…

description:
140

Двоичные файлы

Особенности:
данные хранятся во внутреннем машинном формате (в текстовом редакторе не прочитать)
можно читать и записывать любой кусок памяти (просто биты…)
принцип сэндвича (открыть – работать – закрыть)
обращение к файлу через указатель

Файловые указатели

 FILE *fp;

alt: Открытие и закрытие двоичных файлов

description:
141

Открытие и закрытие двоичных файлов

Открытие файла

 fp = fopen ( "input.dat", "rb" );

"rb" = read binary (чтение)
"wb" = write binary (запись)
"ab" = append binary (добавление)

Ошибки при открытии

 if ( fp == NULL ) {    printf("Файл открыть не удалось.");
   }

Закрытие файла

 fclose ( fp );

alt: Чтение по блокам Чтение в начало массива int

description:
142

Чтение по блокам

Чтение в начало массива

int A[100];
n = fread ( A, sizeof(int), 100, fp );

адрес области памяти («куда»):
A  &A[0]

размер одного блока

размер переменной целого типа

количество блоков

указатель на файл

прочитано фактически

Чтение в середину массива

int A[100];
n = fread ( A+5, sizeof(int), 2, fp );

читается 2 целых числа:
A[5], A[6]

alt: Запись по блокам Запись с начала массива int

description:
143

Запись по блокам

Запись с начала массива

int A[100];
n = fwrite( A, sizeof(int), 100, fp );

адрес области памяти («откуда»):
A  &A[0]

размер одного блока

размер переменной целого типа

количество блоков

указатель на файл

записано фактически

Запись отдельных элементов массива

int A[100];
n = fwrite( A+5, sizeof(int), 2, fp );

записывается 2 целых числа:
A[5], A[6]

alt: Работа с матрицами Хранение в памяти: по строкам (Си,

description:
144

Работа с матрицами

Хранение в памяти: по строкам (Си, Паскаль)

1

2

3

4

5

6

7

8

9

1

2

3

4

5

6

7

8

9

Запись матрицы

int A[3][3];
FILE *fp = fopen("output.dat", "wb");
... // здесь заполняем матрицу
n = fwrite( A, sizeof(int), 9, fp );

alt: Пример Задача: прочитать массив из файла input

description:
145

Пример

Задача: прочитать массив из файла input.dat, умножить все элементы на 2 и вывести в файл output.dat.
Структура программы:

#include <stdio.h>
main()
{
const int N = 10;
int i, A[N], n;
FILE *fp;
    // чтение данных и файла input.dat
for ( i = 0; i < n; i ++ )
   A[i] = A[i] * 2;
    // запись данных в файл output.dat
}

прочитано фактически

alt: Работа с файлами fp = fopen( "input

description:
146

Работа с файлами

fp = fopen( "input.dat", "rb" );
if ( fp == NULL ) {
  printf("Файл открыть не удалось.");
  return;
  }
n = fread ( A, sizeof(int), N, fp );
if ( n < N ) printf("Не хватает данных в файле");
fclose ( fp );

Чтение данных:

fp = fopen( "output.dat", "wb" );
fwrite ( A, sizeof(int), n, fp );
fclose ( fp );

Запись данных:

критическая ошибка

некритическая ошибка

сколько прочитали

alt: Задания «4»: В текстовом файле input

description:
147

Задания

«4»: В текстовом файле input.txt записан массив целых чисел. Отсортировать его и записать в двоичный файл output.dat.
«5»: В текстовых файлах input1.txt и input2.txt записаны два массива. Объединить их в один массив, отсортировать и записать результат в двоичный файл output.dat.

title: Си_Массивы.ppt


file_name: Для урока Богатство и бедность.pptx

alt: Бедность & Богатство

description: Бедность & Богатство

alt: Бедность И Богатство

description: Бедность И Богатство

description:
Нам необходимо выяснить
По какому принципу общество делится  на богатых и бедных?
В чём причина бедности населения?
Какие проблемы у бедных и богатых

alt: Не хвались серебром, а хвались добром

description: Не хвались серебром, а хвались добром

alt: Какое бывает богатство?

description: Какое бывает богатство?

alt: Богатство - денежная сумма, в которую входит всё то, чем владеет человек -ликвидные ценности  деньги ,  средства производства,  недвижимость,  личное имущество,…

description:
Богатство -  денежная сумма, в которую входит всё то, чем владеет человек -ликвидные ценности
	деньги,
	средства производства,
	недвижимость,
	личное имущество,
	доступ к здравоохранению, образованию и культуре

alt: Потребительская корзина

description: Потребительская корзина

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

Порог бедности в России называют прожиточным минимумом  включающему минимальный набор продуктов питания, непродовольственных товаров и услуг ЖКХ, здравоохранения и образования, а также обязательные платежи и сборы. Прожиточный минимум работающего человека в 2021 г. в России 12 700руб. в месяц.

description:
Неравенство
это – неравномерное распределение дефицитных ресурсов – денег, власти, образования, престижа – между различными слоями населения.

alt: Общественная иерархия: Богатые

description:
Общественная иерархия:

Богатые

Зажиточные

Средний класс

Бедные

Нищие (андеркласс)

alt: Доля богатых и бедных в России

description:
Доля богатых и бедных в России. %

5%

alt: БОГАТЫЕ НЕРАВЕНСТВО БЕДНЫЕ владеют максимально ликвидными ценностями имеют не достаточное количество денег, образования, власти и престижа

alt: Причины неравенства?Стр. 65

description: Причины неравенства?Стр. 65

alt: Рубрика «путешествие в прошлое»

description: Рубрика «путешествие в прошлое»

description:
       Многие тратили свои богатства на строительство школ, больниц, коллекционирование картин.
Богатых людей, отдающих часть своих денег на         развитие искусства, науки, называют
меценатами.

Запишите в тетрадь!

alt: Жил на свете человек…

description: Жил на свете человек…

alt: образование условия труда соц. обеспечение Составляющие уровня жизни

alt: Проблемы бедных Плохое жильё

description:
Проблемы бедных

Плохое жильё

Пьянство

Ограничение свободы

Скудное питание

Живут на дотации государства

Неуверенность в будущем

Неполноценное потомство

Неспособность обеспечить материальное благополучие семьи

Стресс и психологическая неудовлетворенность

Непрестижное положение в обществе

Плохое образование

Тяжелый труд

Невозможность оплатить медицинские услуги

Дешевая одежда

alt: Что могут сделать сами бедные:

description:
Что могут сделать сами бедные:
 Получать образование;
 Искать работу;
 Много трудиться;
 Развивать в себе самостоятельность,
   инициативность, предприимчивость;
 Не надеяться на помощь государства,
    а учиться самим зарабатывать деньги;
 Отказаться от вредных привычек (курение, алкоголизм);
 Уметь поставить перед собой цель и идти к ней;
 Учиться правильно использовать имеющееся богатство.

alt: Богатые и бедные Проблемы есть у бедных и у богатых

description:
Богатство души выше всех духовных сокровищБогатство подобно морской воде: чем больше ее пьешь, тем сильнее жажда.               ( Шопенгауэр)

Богатый должен жить проще, чтоб бедный мог просто выжить.
(   Ганди)

alt: Проблемы богатых Страх потерять деньги

description:
Проблемы богатых

Страх потерять деньги

Страх прогореть в бизнесе

Стресс. Проблемы со здоровьем

Страх за жизнь близких

Отсутствие времени на отдых

Отсутствие друзей

Недоверие к партнерам. подозрительность

Проблемы  в семье

description:
ПОСЛОВИЦЫ И ПОГОВОРКИ

1.В том обществе, где нет бедных  отсутствует стимул к процветанию?                                      2.Бедность не порог, её можно переступить     3.Самый бедный это тот, кто не умеет пользоваться тем, чем располагает.                                                                                4. Богат – не хвались, беден – не отчаивайся.                                                                   5. Богатому сладко естся, да плохо спится                                            6.Богатство – не цель, бедность не позор.                                                                          7. Бедный молодец честью богат                                                               8.Бедность, не отнимает ни чести, ни ума.

alt: Так, в чём истинное богатство?

description:
Так, в чём истинное богатство?

Истинное богатство –
это наши способности,
они внутри нас,
а снаружи лишь только их проявление

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

description:
Богатство обязывает

      Благотворительность – «делание добра», помощь нуждающимся, полезная
общему благу деятельность.

«БЛАГО»   «ТВОРИТЬ»

У богатого больше возможностей улучшить не только свою жизнь, но и жизнь других людей.

Запишите в тетрадь!

description:
В стране сегодня создан
Союз благотворительных организаций России,
 объединяющий около 3000 организаций и фондов.
www.blago.ru- можно найти информацию о том, какой посильный вклад
в поддержку нуждающимся оказывают небезразличные                                                             люди и организации в нашей стране.

alt: Что мы выяснили сегодня на уроке: 1

description:
Что мы выяснили сегодня на уроке:
1.По какому принципу общество делится  на богатых и бедных
2.В чём причина бедности населения
3.Какие проблемы у бедных и богатых

title: Презентация по обществознанию "Блгатсво и бедность"


file_name: Картина из гвоздей и нитьк.pptx

alt: Панно из ниток и гвоздей

description: Панно из ниток и гвоздей

description: String Art – это техника создания изображения с использованием нитей и гвоздей. На данный момент она набирает обороты популярности, ведь необычное – всегда вызывает интерес. В этой статье мы рассмотрим: как сделать панно из ниток и гвоздей в технике Стринг Арт своими руками.

alt: Креативное панно

description: Креативное панно

description:
Вам понадобится: фанера, акриловая белая краска, кисть, молоток, гвозди, нитки, карандаш, линейка, липкая лента, 6 белых листов формата А4.

Мастер-класс
Покрасьте фанеру белой краской, затем оставьте высыхать

description:
Поместите шаблон на фанеру и закрепите липкой лентой.
Забейте гвозди по обозначенным точкам на одинаковой глубине.
Снимите бумажный шаблон.

description: Оплетите буквы ОК, затем заполните нитками основной фон, ориентируясь по фото-инструкции.

alt: Проплетите нитками серединку буквы

description: Проплетите нитками серединку буквы О.

title: Картина из гвоздей и ниток


alt: МБОУ ОДИНЦОВСКАЯ ГИМНАЗИЯ № 11

description:
МБОУ   ОДИНЦОВСКАЯ   ГИМНАЗИЯ   № 11ВИРУСЫ ВСЕГДА НЕ ДАЮТ СПОКОЙНО ЖИТЬ…

ксандровна

description:
СОДЕРЖАНИЕ

Что такое вирусы?
Разнообразие размеров вирусов
История изучения вирусов
Строение вируса
Свойства вирусов
Классификация вирусов
Значение вирусов

alt: Что такое вирусы? Ви́рус (от лат

description:
Что такое вирусы?

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

description:
Разнообразие размеров вирусов

Мельчайшие живые организмы
Размеры варьируют от 20 до 300нм
В среднем в 50 раз меньше бактерий
Нельзя увидеть с помощью светового микроскопа
Проходят через фильтры, не пропускающие бактерий

description:
ИСТОРИЯ ИЗУЧЕНИЯ ВИРУСОВ

    В 1852 году русский ботаник Ивановский Дмитрий Иосифович  получил инфекционный экстракт из растений табака, пораженных мозаичной болезнью

Палочковидная частица
вируса табачной мозаики.
Цифрами обозначены:
(1) РНК-геном вируса,
(2) капсомер, состоящий всего из одного протомера,
(3) зрелый участок капсида.

alt: В 1898 году голландец Бейеринк

description:
            В 1898 году голландец
    Бейеринк Мартин Виллем
    ввел термин «вирус» (от
    латинского – «яд»), чтобы
    обозначить инфекционную
    природу определенных
    профильтрованных растительных
    жидкостей.

alt: СТРОЕНИЕ ВИРУСА

description: СТРОЕНИЕ ВИРУСА

description:
СВОЙСТВА ВИРУСОВ

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

alt: КЛАССИФИКАЦИЯ ВИРУСОВ ДЕЗОКСИВИРУСЫ

description:
КЛАССИФИКАЦИЯ ВИРУСОВ

ДЕЗОКСИВИРУСЫ

РИБОВИРУСЫ

1. ДНК двухнитчатая

2. ДНК однонитчатая

1. РНК двухнитчатая

2. РНК однонитчатая

1.1. Кубический тип симметрии:
1.1.1. Без внешних оболочек:
      аденовирусы

1.1.2. С внешними оболочками:
     герпес-вирусы

1.2. Смешанный тип симметрии:
Т-четные бактериофаги

1.3. Без определенного типа симметрии:
оспенные вирусы

2.1. Кубический тип симметрии:
2.1.1. Без внешних оболочек:
крысиный вирус Килхама, аденосателлиты

1.1. Кубический тип симметрии:
1.1.1. Без внешних оболочек:
реовирусы, вирусы раневых опухолей растений

2.1. Кубический тип симметрии:
2.1.1. Без внешних оболочек:
вирус полиомиелита

      энтеровирусы, риновирусы
2.2. Спиральный тип симметрии:
2.2.1. Без внешних оболочек:
вирус табачной мозаики
2.2.2. С внешними оболочками:
        вирусы гриппа

бешенства, онкогенные РНК-содержащие вирусы

alt: ЗНАЧЕНИЕ ВИРУСОВ 1. ЗАБОЛЕВАНИЯ

description:
ЗНАЧЕНИЕ ВИРУСОВ1. ЗАБОЛЕВАНИЯ ЧЕЛОВЕКА

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

description:
СПИД. ВИЧ.

   Многие путают два
    совершенно различных
    понятия - ВИЧ-
    инфицированный и больной
    СПИДом. Разница
    заключается в том, что
    человек, инфицированный
    вирусом иммунодефицита,
    может в течение многих лет
    оставаться работоспособным,
    относительно здоровым
    человеком. Такой человек не
    представляет никакой
    опасности для окружающих.

Вирус иммунодефицита
 человека

Смертельно опасный вирус СПИДа

Трехмерное изображение вируса СПИДа

alt: ЗАБОЛЕВАНИЯ ЖИВОТНЫХ И НАСЕКОМЫХ 1

description:
2. ЗАБОЛЕВАНИЯ ЖИВОТНЫХ И НАСЕКОМЫХ

   1. У животных вирусы вызывают ящур, чуму, бешенство;
    2. У насекомых - полиэдроз, грануломатоз.

Вирус бешенства

alt: ЗАБОЛЕВАНИЯ РАСТЕНИЙ У растений – мозаику или иные изменения окраски листьев либо цветков, курчавость листьев и другие изменения формы, карликовость; наконец, у бактерий – их…

description:
3. ЗАБОЛЕВАНИЯ РАСТЕНИЙ

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

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

alt: БАКТЕРИОФАГИ – «ПОЖИРАТЕЛИ БАКТЕРИЙ» 1

description:
4. БАКТЕРИОФАГИ – «ПОЖИРАТЕЛИ БАКТЕРИЙ»

    1. Открыты в 1917 году одновременно во Франции и Англии.
    2. Используются при лечении заболеваний, вызываемых некоторыми бактериями (чума, тиф, дизентерия).

Схематичное строение Т-фага кишечной палочки со смешанным типом симметрии:
1 - кубоидальная капсидная головка;
2 - двухнитчатая ДНК;
3 – стержень;
4 - спиралеобразный сокращающийся капсид (чехол);
5- базальная пластинка;
6 - хвостовые фибриллы.

alt: СПАСИБО ЗА ВНИМАНИЕ!!!

description: СПАСИБО ЗА ВНИМАНИЕ!!!

intro: Особенности строения и жизнедеятельности вирусов.

биология

group: Дисциплины

tags: Капсид. бактериофаг

title: Вирусы.


file_name: Занимательная математика для детей (устный счёт +.ppt

alt: Занимательная математика для детей (устный счёт + учимся писать цифры)

alt: По дороге мальчик и девочка шли,

description:
По дороге мальчик и девочка  шли, Оба по два рубля нашли.За ними ещё трое идут.Сколько они денег найдут?

Повезло опять Егорке,
У реки сидит не зря.
Два карасика в ведёрке
И четыре пескаря.
Но смотрите – у ведёрка
Появился хитрый кот…
Сколько рыб домой Егорка
На уху нам принесёт?

description:
Цифра вроде буквы О-
Это ноль иль ничего!

Учимся писать цифру

alt: У домика утром Два зайца сидели и дружно весёлую песенку пели

description: У домика утромДва зайца сидели и дружно весёлую песенку пели.Один убежал, а второй вслед глядит.Сколько у домика зайцев сидит?

description:
Вот один , иль единица,
Очень тонкая, как спица!

Учимся писать цифру

alt: Карандаш один у Гриши, Карандаш один у

description:
Карандаш один у Гриши,
Карандаш один у Миши.
Сколько же карандашей у
обоих малышей?

Три яблока из сада Ёжик притащил.Самое румяноеБелке подарил.С радостью подарок получила белка.Сосчитайте яблокиУ ежа в тарелке!

description:
Учимся писать цифру

Два похожа на гусёнка
С длинной шеей,
Шеей тонкой.

description:
На плетень взлетел петух.
Повстречал ещё там двух.
Сколько стало петухов?
У кого ответ готов?

На полянку у дубка ёж увидел два грибка.А подальше, у осин,Он нашёл ещё один.Кто ответить нам готов, Сколько ёж нашёл грибов?

description:
Учимся писать цифру

А вот это – посмотри,
Выступает цифра три.
Тройка – третий из значков –
Состоит из двух крючков.

alt: Я рисую кошкин дом: Три окошка, дверь с крыльцом

description: Я рисую кошкин дом:Три окошка, дверь с крыльцом.Наверху ещё окно, чтобы не было темно.Посчитай окошки в домике у кошки.

description:
Учимся писать цифру

Гляди, четыре – это стул,
Который я перевернул.

alt: Два цыплёнка стоят, на скорлупку глядят

description:
Два цыплёнка стоят, на скорлупку глядят.Три яичка  в гнезде у наседки лежат.Сосчитай поскорей: сколько будет цыплят у наседки моей?

Семь гусей пустились в путь.
Два решили отдохнуть.
Сколько их под облаками?
Сосчитайте, дети, сами.

description:
Учимся писать цифру

Это – фокусник – пятёрка.
Вы за ней следите зорко.
Кувыркнётся – раз и два! –
Обернётся цифрой два.

description:
Я нашёл в дупле у белки пять лесных орешков мелких.Вот ещё один лежит, мхом заботливо укрыт.Ну и белка! Вот хозяйка!Все орешки посчитай-ка!

    Дружно муравьи живут и без дела не    снуют. Два несут травинку, 2 несут былинку, два несут иголки.                      Сколько муравьев под елкой?

description:
Учимся писать цифру

Цифра шесть – дверной замочек:
Сверху крюк, внизу кружочек.

alt: В небе радуга-дуга замыкает берега

description: В небе радуга-дуга замыкает берега.Расцветая всё ясней, чудо-краски светят в ней!Пусть ответит тот, кто знает или сможет сосчитать, сколько красок в ней играет, озаряя моря гладь?

description:
Учимся писать цифру

Вот семёрка – кочерга.
У неё одна нога.

description: За одним большим столом сели рядом с гномом гном.Белоснежка с ними вместе стол накрыла честь по чести.У неё во всём порядок!Только сколько ложек надо?

description:
Учимся писать цифру

У восьмёрки два кольца без начала и конца.

alt: Что подарил нам сосновый бор? Восемь маслят и один мухомор

description:
Что подарил нам сосновый бор?Восемь маслят и один мухомор.Сколько всего грибов?

Сидят рыбаки, стерегут поплавки.
Рыбак Корней поймал трёх окуней.
Рыбак Евсей – четырёх карасей.
А рыбак Михаил двух сомов изловил.
Сколько рыб рыбаки поймали из реки?

alt: Учимся писать цифру Вот какая

description:
Учимся писать цифру

Вот какая
Цифра есть –
Перевёрнутая шесть.

description:
Источники

Шаблон презентации Александровой З.В., учителя  физики и информатики

http://www.26317lvschooll7.edusite.ru/p6aa1.html - сова

http://kpoxa.ucoz.com/forum/43-776-1 ёж с яблоками

http://www.lenagold.ru/fon/clipart/g/grib2.html - ёж

http://www.lenagold.ru/fon/clipart/k/kar3.html - карандаши

http://derzski.ru/?p=206 -петух

http://gorodmam.ru/user/blog/post/432405/page/0 - петухи

http://apple4.blog.tut.by/2010/05/03/kotyataanimaciya/ - кошка

http://images.yandex.ru/yandsearch?ed=1&rpt=simage&text=3%20%D1%86%D1%8B%D0%BF%D0%BB%D1%91%D0%BD%D0%BA%D0%B0&img_url=s56.radikal.ru%2Fi154%2F0904%2F0b%2F797649ce0634.jpg&spsite=fake-004-7856796.ru&p=29 - цыплята

http://augur-really.livejournal.com/ - гнездо с яйцами

http://forum.razumniki.ru/showthread.php?p=15375 - гуси

http://childrensbook.narod.ru/photoalbum.html - белка

http://www.kvadra.su/2010/02/04/saga-o-muravyax/ - муравьи

http://st.free-lance.ru/projects/upload/f_4af066f812fb2.jpg - радуга

http://www.devochkiclab.my1.ru/ - Белоснежка и семь гномов

http://www.greenmama.ua/nid/270092/ -маслята

http://forum.rc-mir.com/topic1924604_350.html - мухомор

http://img.sunhome.ru/UsersGallery/Cards/183/3114313.jpg - рыбак

Слайды № 3,5,7,9,11,13,15,17,19,21 частично мной использованы из презентации Шевцовой С.А. с сайта - viki.rdf.ru

http://www.algaishkolatrhree.okis.ru/roditilyam.html - мальчик и девочка

http://foto.tut.by/search_result.php?query=%E6%E8%E2%EE%F2%ED%FB%E9&page=1 – кот на рыбалке

http://www.forum.fotowedding.ru/viewtopic.php?p=170659&sid=101dbf2b6e66589a60f9f4a9ce010a1f –
зайцы

http://forum.materinstvo.ru/index.php?showtopic=83152&st=300 - белка

title: Презентация "Занимательная математика для детей. Учимся писать цифры"


file_name: Решение уравнений.ppt

description:
     Урок математики в 7 классе     по теме «Решение уравнений»

     Подготовила и провела учитель МОУ СОШ №1
                    Кликанчук Светлана Анатольевна

description:
Тема урока: Решение уравнений                      ( повторение).

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

description:
Опять я слышу голоса
Зверья, зовущего на помощь,
Мечущегося меж камней
В капкане бедствия лесного.
В час верной гибели своей
Оно мне все простить готово.
И порохом пропахший лес,
И смрадный от бензина ветер.
Оно кричит мне: « ЧЕЛОВЕК,
СПАСИ, ТЫ МОЖЕШЬ ВСЕ НА СВЕТЕ! »

3

description:
1.Раскрыть скобки:

6(-а-3)
6а+18 (Р)     -6а-18 (К)       -24а (В)
-5(-4-b)
25b   (О)        20+5b (А)     -20-5b(Е).
2. Упростить выражение:
4(3-х)-6(у+3)
   -4х-6у-6(Л)  -10ху-6 (Д)   -16ху (Г)
6у-3(5-2у)
     12у+15  (У)   -15 (И)     12у-15 (А)
-5с-5(-с+2)+10
       30с (Ш)          0 (Н)       -10с+20 ( Б).

description:
6(-а-3)=-6а-18  (К)
-5(-4-b)=20+5b (А)
4(3-х)-6(у+3)=12-4х-6у-18=
           -4х-6у-6 (Л)
6у-3(5-2у)=6у-15+6у=12у-15             				(А)
-5с-5(-с+2)+10=-5с+5с-10+10=0
    				(Н)

description:
Калан

Современная численность около 2,5 тыс. особей. Основную  роль в катастрофическом
сокращении численности играли интенсивный промысел и массовое браконьерство.

alt: УСТНО: Решить уравнения: 6х-4=14 , х=3

description:
УСТНО:

Решить уравнения:
6х-4=14  ,   х=3  В
5х-18=2х ,  х=6 Ы
7х-4=5х+16 ,   х=10  Д
(х-5)(х+2)=0,   х=5  Р,
       				х=-2  А

description:
Кавказская  выдра

Относится к редким видам.
В    Тебердинском заповеднике насчитывается около100 зверьков.
В Дагестане не более 10-50 особей. Основные факторы:
уменьшение количества рыбы  вследствие загрязнения водоемов, браконьерство.

alt: Урок математики в 7 классе по теме «

description:
    Урок математики в 7 классе      по теме  « Решение уравнений»

Подготовила и провела учитель МОУ СОШ №1
Кликанчук Светлана Анатольевна

description:
РЕШАЕМ  САМОСТОЯТЕЛЬНО:

№876 (а , в) -1вариант,
№876 (б , г) -2 вариант.

description:
	ПРОВЕРИМ  РЕШЕНИЕ:№876

а) 15х+12=9+3х,
15х-3х=9-12,
12х=-3,
Х=-3:12,
Х=-0,25.
Ответ:-0,25.

alt: Нарвал (единорог) Редкий малочисленный вид

description:
Нарвал(единорог)

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

description:
	№876.

 б) 7-15у=1+9у,
-15у-9у =1-7,
	  -24у =-6,
	     у =-6:(-24),
		у = 0,25.
Ответ: 0,25.

alt: Обыкновенный тюлень Вдоль Восточной

description:
Обыкновенный тюлень

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

alt: Решим задачу За 3 дня туристы прошли 70 км

description:
Решимзадачу

За 3 дня туристы прошли 70 км. В первый день они прошли в 2 раза больше, чем во второй, а в третий- на 10 км больше, чем во второй. Какой путь был пройден туристами в каждый из трех дней?

description:
Решение.

  Пусть х км пройдено во второй день, тогда в первый-(2х) км, а в третий-(х+10) км. Всего пройдено 70 км. Составляем уравнение:
х+2х+(х+10) =70,
4х+10 =70,
4х=70-10,
4х=60,
Х=60:4,
Х=

1)
2)
Ответ:

description:
Уссурийский пятнистый олень

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

description:
Решить самостоятельно (О!) :

В первом мешке в 3 раза больше муки, чем во втором. После того, как из первого мешка взяли 30 кг, а во второй насыпали еще 10 кг, в обоих мешках стало поровну. Сколько кг было в каждом мешке первоначально ?

alt: ПОДУМАЙ! Федя на 7 лет старше

description:
ПОДУМАЙ!

Федя на 7 лет старше Пети, а их папе в 3 раза больше лет, чем им обоим вместе. Сколько лет каждому, если папе было 36 лет, когда родился Петя?

alt: Как это страшно - умиранье рода,

description:
Как это страшно - умиранье рода,
Всех поголовно, всех до одного,
Когда опустошенная природа
Уже не в силах сделать ничего.
И поползет проказа запустенья.
И пересохнут ниточки воды.
И птицы вымрут. И падут растенья.
И зверь не обойдет своей беды.
И сколько тут корысти не ищи ты,
Какой ты отговоркой ни владей,
Земля защиты требует. Защиты,
Она спасенья просит у людей.

alt: Домашнее задание: №877(б,в),№946(ж)

description:
Домашнее задание:

№877(б,в),№946(ж).

ВСЕМ  СПАСИБО!

title: Решение уравнений 7 класс


file_name: Фоторепортаж.pptx

alt: Фоторепортаж Кадр за кадром.

description:
Фоторепортаж

Кадр за кадром.

description: Экскурсия в Тимшерскую участковую больницу.

alt: Наложение повязок.

description: Наложение повязок.

title: Экскурсия в  участковую больницу.


file_name: Урок № 5. ОМРК. Возникновение религий.Религии мира и их основатели..ppt

description:
Возникновение религий. Религии мира и их основатели.

Срабова О.Ю.

description:
Цель: дать первичные представления об основателях мировых религий

   Задачи:
Познакомить с основателями религий: Христианства, Ислама и Буддизма;
Создать условия для выявления общих и различных черт в Христианстве, Исламе, Буддизме;
Создать ситуацию для самостоятельного осмысления единых нравственных установок для всех религий мира.

alt: Актуализация внимания на изучение темы

description:
Актуализация внимания на изучение темы

   Вопросы:
Что вам известно об основателях Христианства, Ислама, Буддизма?
Встречали ли вы последователей этих религий в своей жизни?
Можете ли вы назвать отличительные черты в поведении христианина, мусульманина или буддиста?

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

alt: Работа с текстом учебника Задание 1: заполнить таблицу

description:
Работа с текстом учебникаЗадание 1: заполнить таблицу

Основатели

Место рождения

Чему учил людей

Какое название получило его учение

Как стали называть его последователей

Иисус Христос

Вифлеем

Любить Бога и своих ближних

Христианство

Христианами

Мухаммад

Мекка

Смирению перед Богом

Ислам

Мусульманами

Сиддхартха Гаутама

Север Индии

Самопознанию

Буддизм

Буддистами

alt: Работа с текстами учений Задание 2:

description:
Работа с текстами учений

   Задание 2:
Прочитать отрывки из учений, принадлежащих Христу, Мухаммаду и Будде.
Сравнить, найти общее и раскрыть основной смысл.

alt: Работа с иллюстрациями Задание 3

description:
Работа с иллюстрациями

   Задание 3.
Определить – кто на иллюстрациях исповедует Ислам, Христианство или Буддизм?
Как вы считаете, что отличает человека, когда он общается с Богом?

description:
1.

6.

5.

4.

3.

2.

alt: Самостоятельная работа Задание 4

description:
Самостоятельная работа

   Задание 4. Напишите в тетради мини-рассказ о том как вы понимаете:
 Что значит любить Бога и своих ближних?
Для чего необходимо смирение перед Богом?
Зачем нужно человеку самопознание самого себя?

title: Возникновение религий