Массивы в языке программирования Си
учебно-методический материал на тему

Лебедева Дарья Владимировна

Конспекты занятий по теме «Массивы» для студентов 2 курса специальности 09.02.03 «Программирование в компьютерных системах» разработаны в соответствии с программой дисциплины «Основы программирования».

Занятие 1. Одномерные массивы. Действия над массивами

Занятие 2. Алгоритмы сортировки массивов

Занятие 3. Двумерные массивы

Занятие 4. Массивы символов. Функции для работы со строками

 

Скачать:

ВложениеРазмер
Microsoft Office document icon konspekty_zanyatiy_.doc310.5 КБ
Файл dvumernye.pptx125.12 КБ
Файл sortirovka.pptx164.41 КБ

Предварительный просмотр:

.                                              

Конспекты занятий

по изучению темы "Массивы в языке программирования Си"

 (Название работы)

По дисциплине: «Основы программирования»

Для специальности: 09.02.03 «Программирование в компьютерных системах»

                                                               

                                                                                  Разработал преподаватель

                                                                                _____________(Лебедева Д.В.)

                                                                                                       (Подпись)                                (ФИО)

                                                                                                     «_______» _________________2015г.


ПОЯСНИТЕЛЬНАЯ  ЗАПИСКА

Конспекты занятий по теме «Массивы» для студентов 2 курса специальности 09.02.03 «Программирование в компьютерных системах» разработаны в соответствии с программой дисциплины «Основы программирования».


ОГЛАВЛЕНИЕ

Занятие 1. Одномерные массивы. Действия над массивами        

Занятие 2. Алгоритмы сортировки массивов        

Занятие 3. Двумерные массивы        

Занятие 4. Массивы символов. Функции для работы со строками        

ПЕРЕЧЕНЬ ЛИТЕРАТУРЫ        


ЗАНЯТИЕ 1

Тема: Одномерные массивы. Действия над массивами

Цели:

  • формирование знаний учащихся по теме “Массивы”;
  • выработка первичных навыков решения задач с применением одномерных массивов;

Задачи урока:        

образовательные:

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

развивающие:

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

воспитательные:

  • формирование умения применять на практике полученные знания;
  • воспитание сотрудничества.

Тип занятия: изучение нового материала

Ход занятия:

  1. Организационный момент

Сообщение темы и целей урока.

  1. Изучение нового материала

В программах очень часто приходится обрабатывать большие объёмы однотипных данных. Применять обычные переменные для этого очень неудобно: представьте себе 1000 переменных с разными именами и одинакового типа, которые нельзя обработать в цикле. Эту проблему позволяет решить использование массивов.

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

Массивы могут быть одномерные и многомерные. Сегодня мы рассмотрим одномерные массивы.

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

Примеры:  1,6;  5;  -6,02;  8,78;  -10,1 – массив из 5 вещественных чисел

                    a;  b;  c;  d;  f;  g – массив из 6 символов

Каждый массив обозначается именем:

  A={1,6;  5;  -6,02;  8,78;  -10,1 }

Каждый элемент массива обозначается именем массива и индексом. Индекс определяет положение элемента массива относительно его начала, его порядковый номер. Чтобы обратиться к элементу массива, надо написать имя массива и затем в квадратных скобках номер нужного элемента.  Важно запомнить одно важное правило: элементы массивов в языке Си нумеруются с нуля. Таким образом, если в массиве 10 элементов, он содержит элементы: A[0], A[1], A[2], ..., A[9]

Пример:

i

0

1

2

3

4

5

6

7

8

9

A[i]

5

8

9

-2

3

0

9

2

-5

1

В данном случае:

A – имя переменной – элемента массива.

i – номер элемента в массиве – индекс.

Значение элемента А[2] – 9, значение элемента А[5] – 0.

Примеры обращения к массиву A:

x = (A[3] + 5)*A[1]; // прочитать значения A[3] и A[1]

A[0] = x + 6; // записать новое значение в A[0]

printf(“%d\n”,A[0]);//вывод значения A[0]

scanf(“%d”, &A[0]);// ввод значения А[0]

Вопрос:  

Пусть дан массив D:

i

0

1

2

3

4

5

6

7

D[i]

5

2.5

-6

7

8.1

-5.6

0.2

2.5

  • Из скольких элементов состоит этот массив?
  • Определите значение элементов:

D[2] = ?               D[4] = ?

D[5] = ?               D[7] = ?

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

Тип имя_массива[длина_массива];

Примеры объявления массивов:

int a[10]; // Целочисленный массив a, размер – 10 элементов

double vect[20]; // Массив вещественных чисел vect,

       //в нём 20 элементов

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

int A[4] = { 2, 3, 12, 76 };

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

int A[4] = { 2 }; // при этом последние три элементы равны 0

Для повышения универсальности программы размер массива лучше определять в директиве препроцессора #define, например:

#define N 10

означает заменить во всем тексте программы слово N на число 10. В этом случае для переделки программы для массива другого размера надо только поменять число в строке #define.

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

const N = 20;

void main()

{

int A[N]; ... }

Примеры объявления массива:

правильно

неправильно

int A[20];

int A[];

#define N 20

int A[N];

int N = 20;

int A[N];

const N = 20;

int A[N];

Способы заполнения массивов

Первый способ заполнения одномерного массива – это заполнение с клавиатуры.

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

        Рассмотрим несколько задач:

Задача 1. Ввод с клавиатуры. Ввести с клавиатуры массив из 10 элементов, и вывести полученный массив на экран.

Анализ задачи: К сожалению, невозможно просто сказать компьютеру: «введи массив A». Мы должны каждый элемент прочитать отдельно. Чтобы ввести массив в память, надо каждый его элемент обработать отдельно (например, вызвав для него функцию ввода scanf). Для ввода массива будем использовать цикл for.

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

Вывод массива на экран выполняется также в цикле for. Элементы выводятся по одному. Если в конце строки-формата в операторе printf поставить пробел, то элементы массива будут напечатаны в строчку, а если символ “\n” – то в столбик.

Решение

#include

#include <сonio.h>

#define N 10

void main()

{

clrscr();//очистка экрана

int i, A[N];// Массив А типа int, размер - 10 элементов

printf(“Введите массив A\n”);

// Заполнить массив

for ( i = 0; i < N; i ++ ) // Переменная i (счётчик цикла) – индекс массива,

{                                     // она принимает значения от 0 до 9.

printf("Введите A[%d] -> ", i );// функция printf выводит «подсказку»

scanf ("%d", &A[i]);// scanf запрашивает значение элемента массива с

//клавиатуры

}

printf(“\nРезультат:\n”);

// Вывести массив на экран

for ( i = 0; i < N; i ++ )

{

printf("%d  ", A[i]);

}

getch();

}

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

Анализ задачи: Чтобы задать случайное число используется функция random(). Для получения случайных чисел с равномерным  распределением в нтервале [a,b] надо использовать формулу:

k = random ( b – a + 1 ) + a;

В приведенном ниже примере массив A заполняется случайными целыми числами в интервале [-10,10]: random(21) -10.

Решение

#include

#include

#include <сonio.h>

#define N 10

void main()

{

clrscr();

int i, A[N];

randomize();// функция инициализации датчика случайных чисел

// Заполнить массив случайными числами

for ( i = 0; i < N; i ++ )

{

A[i] = random(21) – 10;

}

printf(“\n Массив:\n”);

//вывести массив на экран

for ( i = 0; i < N; i ++ )

{

printf("%d  ", A[i]);

}

getch();

}

Задача 3. Нахождение суммы и произведения элементов.

#include

#include

#include <сonio.h>

#define N 10

void main()

{

clrscr();

int x[10];

int s,p;

int i;

// Заполнить массив случайными числами

randomize();

for (i = 0; i < N; i++)

{

x[i] = random(26) – 10;//заполнения случайным образом элементов

                                // в диапазоне [-10,15]

}

// Найти сумму и произведение

s = 0; p=1;

for (i = 0; i < N; i++)

{

s += x[i];

         p*=x[i];

}

// Вывести результат

printf("s = %d\n", s); // Сумма

printf("p = %d\n", p); // Произведение

getch();

}

Задание 4. Нахождение максимального элемента массива.

Анализ задачи: Необходимо найти максимум массива – элемент с наибольшим численным значением. Для этого будем использовать следующий алгоритм:

  1. Заполните массив int a[10] случайными числами
  2. В переменную max поместите элемент массива a[0], а в переменную index – 0.
  3. Перейти к следующему элементу массива
  4. Если элемент массива больше значения переменной max, то поместить его значение в переменную max, а его индекс в переменную index
  5. Если текущий элемент – не последний, то перейти к пункту 2
  6. Вывести массив a и значение переменных max и index

Решение

#include

#include

#include <сonio.h>

#define N 10

void main()

{

clrscr();

int A[N];

int i, max, index;

// Заполнить массив случайными числами

randomize();

for ( i = 0; i < N; i ++ )

A[i] = random(11) – 5;

// Найти максимум

max = A[0]; // В самом начале считаем,

index = 0; // что a[0] - максимум

for (i = 1; i < N; i++) // Поиск по всему массиву

{

if (max < A[i])

{

max = A[i];

index = i;

}

}

// Вывести массив на экран

for ( i = 0; i < N; i ++ )

printf("A[%d]=%d\n", i, A[i]);

// Вывести максимум на экран

printf("max = %d index = %d\n", max, index);

getch();

}

  1. Подведение итогов урока
  1. Что такое массив? (Ответ: Массив – совокупность данных одного типа и с общим названием.).
  2. Как выглядят инструкции объявления массива? (Ответ: Тип ИмяМассива[Размер])
  3. Как обозначается элементы массива? Ответ: Каждый элемент массива обозначается именем массива и индексом: <имя массива>(<индекс>) = <значение>.
  4. С помощью какого оператора осуществляется ввод и вывод одномерного массива? Ответ:  С помощью оператора цикла .
  5. . Какой оператор является телом цикла при вводе массива? Ответ:  Оператор INPUT.
  6. Какой оператор является телом цикла при выводе массива? Ответ:  Оператор PRINT.

Выставление оценок учащимся.


ЗАНЯТИЕ 2

Тема: Алгоритмы сортировки одномерных массивов

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

Задачи:

Образовательная: 

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

Развивающая:

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

Воспитательная:

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

Тип урока: комбинированный.

  1. Организационный момент 

Постановка темы и целей занятия

  1. Актуализация пройденного материала

Фронтальный опрос:

  1. Что такое массив?

Ответ: Массив – совокупность данных одного типа и с общим названием.

  1. Что такое индекс элемента массива?

Ответ: Индекс определяет положение элемента массива относительно его начала, его порядковый номер.

  1. Какой ряд данных можно назвать массивом?
  1. а, 4, б, 5, с, 6
  2. 2.3, 5.7, 10.89
  3. 3, 6, 3, 2, massiv

Ответ: b

  1. Найдите правильное описанием массива:
  1. int A[N];
  2. int A[10];
  3. define N 30

..

int A[N]

  1. int A[]
  2. int N=20

int A[N]

Ответ: b,c

  1. Какое условие будет использовано для подсчета четных элементов массива а?
  1. if (a[i]/2) k++;
  2. if (i%2==0) k++;
  3. if (a[i]%2==0) k++;

Ответ: с

  1. Изучение нового материала

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

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

Существует достаточно много методов (алгоритмов) сортировки массивов. Мы рассмотрим два из них: метод прямого выбора и метод обмена (метод “пузырька”)

Сортировка массива по возрастанию методом пузырька. В этом методе сначала поднимается "наверх" (к началу массива) самый "легкий" элемент (минимальный), затем следующий и т.д. Делается это так. Сравниваем последний элемент с предпоследним. Если они стоят  неправильно, то меняем их местами. Далее так же рассматриваем следующую пару элементов и т.д. Когда мы обработали пару A[0]-A[1], минимальный элемент стоит на месте A[0]. Это значит, что на следующих этапах его можно не рассматривать. Например пусть задан неупорядоченный массив В = (4,5,2,1,3), тогда шаги сортировки будут выглядеть следующим образом:

При следующем проходе наша задача - поставить на место элемент A[1]. Делаем это так же, но уже не рассматриваем A[0], который стоит на своем месте. Сделав N-1 проходов, мы установим на место элементы A[0]-A[N-2]. Это значит, что последний элемент уже тоже стоит на своем месте.

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

B

4

5

2

1

3

1-й шаг

1

4

5

2

3

(последовательно меняются местами 1 и 2, 1 и 5, 1 и 4)

2-й шаг

1

2

4

5

3

(последовательно меняются местами 2 и 5, 2 и 4)

3-й шаг

1

2

3

4

5

(последовательно меняются местами 3 и 5, 3 и 4)

4-й шаг

1

2

3

4

5

Алгоритм сортировки массива по возрастанию методом «пузырька»

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

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

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

if ( A[j] < A[j+1] )

{

c = A[j]; // меняем местами A[j] и A[j+1]

A[j] = A[j+1];

A[j+1] = c;

}

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

Линейная сортировка (сортировка прямого выбора) массива по возрастаниюАлгоритм сортировки массива по возрастанию методом прямого выбора может быть представлен так:

  1. Просматривая массив с первого элемента, найти минимальный и поменять его местами с первым элементом.
  2. Просматривая массив со второго элемента, найти минимальный и поменять его местами со вторым элементом.
  3. И, так далее, до последнего элемента.

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

B

4

5

2

1

3

1-й шаг

1

5

4

2

3

(последовательно меняются местами 4 и 2, 2 и 1)

2-й шаг

1

2

5

4

3

(последовательно меняются местами 5 и 4, 4 и 2)

3-й шаг

1

2

3

5

4

(последовательно меняются местами 5 и 4, 4 и 3)

4-й шаг

1

2

3

4

5

(меняются местами  5 и 4)

Алгоритм использует вложенные циклы. Внешний цикл (счетчик шагов) последовательно выбирает номер элемента массива, куда следует записывать найденный в неупорядоченной части массива минимальный элемент. Внутренний цикл перебирает номера неупорядоченных элементов при поиске минимального элемента. Для внешнего цикла достаточно шагов на один меньше, чем элементов в массиве.

Алгоритм сортировки методом прямого выбора.

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

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

for ( j = i+1; j

if ( A[i] > A[j] )

{ c = A[i];

A[i] = A[j]; // меняем местами A[j] и A[j+1]

A[j] = c; }

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

  1. Закрепление нового материала.

Упражнения для закрепления материала:

  1. Задан массив целых чисел A[7]. Требуется упорядочить в нем элементы по возрастанию, применяя метод «пузырька». Покажите, как будет выглядеть массив после каждого шага сортировки.

А

5

-3

1

2

6

4

-7

1-й шаг

2-й шаг

3-й шаг

4-й шаг

5-й шаг

6-й шаг

Учащиеся по очереди называют значения элементов массива на каждом шаге.

Ответ для проверки:

А

5

-3

1

2

6

4

-7

1-й шаг

-7

5

-3

1

2

6

4

2-й шаг

-7

-3

5

1

2

4

6

3-й шаг

-7

-3

1

5

2

4

6

4-й шаг

-7

-3

1

2

5

4

6

5-й шаг

-7

-3

1

2

4

5

6

6-й шаг

-7

-3

1

2

4

5

6

  1. Задан массив целых чисел С[6]. Требуется упорядочить в нем элементы по возрастанию, применяя метод выбора. Покажите, как будет выглядеть массив после каждого шага сортировки.

С

0

-5

8

2

7

-1

1-й шаг

2-й шаг

3-й шаг

4-й шаг

5-й шаг

Учащиеся по очереди называют значения элементов массива на каждом шаге.

Ответ для проверки:

С

0

-5

8

2

7

-1

1-й шаг

-5

0

8

2

7

-1

2-й шаг

-5

-1

8

2

7

0

3-й шаг

-5

-1

0

8

7

2

4-й шаг

-5

-1

0

2

8

7

5-й шаг

-5

-1

0

2

7

8

  1. Самостоятельная работа учащихся за компьютером.

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

  1. Дан массив А[20]. Массив задать случайными числами в диапазоне

[-40,40]. Вывести значения элементов массива на экран. Отсортировать массив по убыванию методом пузырька. Вывести отсортированный массив на экран.

  1. Дан массив А[20]. Заполнить массив числами в диапазоне от -50 до 50. Вывести значения элементов массива на экран. Отсортировать массив по возрастанию линейным методом. Вывести полученный массив на экран.
  1. Проверка работ учащихся.

Для проверки решений учащимся демонстрируются заранее приготовленные программы.

Для проверки:

Задание 1. Программа пузырьковой сортировки массива по убыванию.

#include

#include

#include

#define N  20

void main()

{

int i, j, A[N], c;

//исходный массив

clrscr();

randomize();

for ( i = 0; i < N; i ++ )

{A[i] = random(81) -40;

printf(“%4d”,A[i]);}

//сортировка методом пузырька

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

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

if ( A[j] < A[j+1] )

{

c = A[j]; // меняем местами A[j] и A[j+1]

A[j] = A[j+1];

A[j+1] = c;

}

printf(“\n Отсортированный массив:\n”);

for ( i = 0; i < N; i ++ )

printf("%4d ", A[i]);

}

Задание 2. Программа линейной сортировки по возрастанию

#include

#include

#include

#define N  20

void main()

{

int i, j, A[N], c;

//исходный массив

clrscr();

randomize();

for ( i = 0; i < N; i ++ )

{A[i] = random(81) -40;

printf(“%4d”,A[i]);}

//линейная сортировка

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

for ( j = i+1; j

if ( A[i] > A[j] )

{ c = A[i];

A[i] = A[j]; // меняем местами A[j] и A[j+1]

A[j] = c; }

printf(“\n Отсортированный массив:\n”);

for ( i = 0; i < N; i ++ )

printf("%4d ", A[i]);

}

  1. Подведение итогов урока.

Подводятся итоги урока, выставляются оценки.


ЗАНЯТИЕ 3

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

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

Задачи:

образовательные: 

  • способствовать формированию представления о двумерном массиве;
  • познакомить с типовыми алгоритмами обработки матриц на языке С;
  • создать условия для формирования умения решать алгоритмы с двумерными массивами;

развивающие: 

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

воспитательные: 

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

Тип урока: комбинированный.

Методическое обеспечение урока:

компьютерная презентация “Двумерные массивы” (Приложение 1);

Ход занятия:

  1. Организационный момент

Постановка темы и целей занятия

  1. Опрос. Актуализация полученных знаний

  1. Изложение нового материала

Постановка задачи:

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

Определение двумерного массива

Матрица - это система элементов aij, расположенной в прямоугольной таблицы

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

Двумерный массив, как и таблица, состоит из строк и столбцов. Два индекса элемента - это и есть номера строки и столбца, на пересечении которых этот элемент находится. Первый индекс двумерного массива C — это число рядов, а второй индекс — это число столбцов. Пример двумерного массива А:

Вопросы:

Имя массива?

Из скольких строк состоит этот массив?

Из скольких столбцов?

Назовите значения элементов массива - а[1,2], a[2,0], a[0,1],  a[0,2].

Назовите элементы массива, значениями, которых являются только отрицательные числа?

В общем виде а[i][j] – то есть местоположение каждого элемента определяется индексом-номером строки и индексом- номером столбца. Нигде не определено, что i- номер строки, а j- номер столбца, так как выводом на экран занимается программист, он сам решает, как ему удобнее

Объявление двумерного массива.

Форма объявления двумерного массивы:

тип имя_массива [размер_1][размер_2];

Например, оператор

int B[20][10];

выделит место в памяти под массив целых чисел, имеющую 20 строк и 10 столбцов (всего 20*10=200 элементов).

При объявлении можно сразу задать все или часть ее элементов, например так:

float X[2][3] = {{1., 2., 3.},{4., 5., 6.}};

и

float X[2][3] = {1., 2., 3.,4., 5., 6.};

эквивалентны.

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

float X[2][3] = {{1., 3.},{6.}};

Здесь элементы X[1][2], X[2][1], и X[2][2] будут нулевыми.

В то же время инициализации

Int a[3][5]={1,2,3,4,5,6,7,8,9,10,11};

И

Int a[3][5]={{1,2,3},{4,5,6,7,8},{9,10,11}};

Различны. Сооответсвующие массивы будут заполнены следующим образом:

1

2

3

4

5

1

2

3

6

7

8

9

10

4

5

6

7

8

11

9

10

11

Типовые алгоритмы обработки матриц на языке Си 

(условимся что массив A состоит из n строк и m столбцов)

  1. Использование генератора случайных чисел. Заполнение элементов массива в диапозоне от -10 до 10:

Randomize();

for ( i = 0; i < n; i ++ )

for ( j = 0; j < m; j ++ )

A[i][j] = random(21) -10;

  1. Вывод матрицы в виде таблицы:

printf("Матрица A\n");

for ( i = 0; i < n; i ++ ) {

for ( j = 0; j < m; j ++ )

printf ( "%4d", A[i][j] );

printf("\n");

}

  1. Сумма элементов массива

S=0;

for ( i = 0; i < n; i ++ ) {

for ( j = 0; j < m; j ++ )

s=s+A[i][j];}}

printf(“%d”,s);

Вопрос: Как найти произведение?

  1. Суммирование элементов каждой строки.

Результатом является массив с именем d, состоящий из n сумм элементов строк.

        

2

3

-1

2

3

1

7

-5

2

8

1

0

Массив d

7

12

7

-3

        int d[n],s;

for ( i = 0; i < n; i ++ )

{s=0;

for ( j = 0; j < m; j ++ )

        {s=s+a[i][j];}

        d[i]=s;}

Вопрос: Как найти сумму по строкам?

  1. Поиск минимального элемента двумерного массива.

Переменная min используется для хранения значения минимального элемента, k – номер строки, l – номер столбца, где он находится:

        Min=A[0][0];k=0;l=0;

for ( i = 0; i < n; i ++ ) {

for ( j = 0; j < m; j ++ )

        if (A[i][j]

        printf(“Минимальный элемент  %d”,min);

        Вопрос: Как найти минимальный элемент?

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

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

Уровень 1.

Задача. Написать программу, которая для целочисленной матрицы 2х3 определяет среднее арифметическое ее элементов. Диапазон чисел [-3,3].

Уровень 2.

Задача. Написать программу, которая для целочисленной матрицы 3х4 определяет количество положительных элементов в каждой строке. Диапазон чисел [-20,20].

Уровень 3.

Задача. Написать программу, которая находит номера первых отрицательных элементов каждого столбца массива 3х4. Номера элементов хранить в отдельном массиве. Диапазон чисел [-10,10].

Итоги урока, постановка домашнего задания.


ЗАНЯТИЕ 4

Тема: Массивы символов. Функции для работы со строками

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

Задачи:

Образовательная: 

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

Развивающая:

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

Воспитательная:

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

Тип урока: изучение и первичное закрепление новых знаний

В языке С символьная строка - это одномерный массив типа char, который заканчивается нулевым байтом. Нулевой байт – это байт, каждый бит которого равен нулю. Для нулевого байта определена специальная символьная константа ‘\0’. Это следует учитывать при описании соответствующего массива символов. Так, если строка должна содержать N символов, то в описании массива следует указывать N+1 элемент.

Например, описание

char s[11];

предполагает, что строка содержит 10 символов, а последний байт зарезервирован под нулевой байт.

Начальное значение строки можно задать при объявлении в двойных кавычках после знака равенства:

char s[80] = "Привет!";

Если строка не будет изменяться во время работы программы, то можно объявить константу (постоянную строку) так:

#define PRIVET "Привет!"

Для ввода и вывода строк с помощью функций scanf и printf используется специальный формат “%s”: без знака &),

#include

void main()

{

char str[50];

printf("введите слово ");

scanf("%s", str);

printf("Вы ввели строку -  %s!", str);}

Однако у функции scanf есть одна особенность: она заканчивает ввод, встретив первый пробел. Если надо ввести всю строку целиком, включая пробелы (то есть до нажатия на клавишу Enter), придется делать иначе, заменив вызов scanf на gets (); Для вывода строки на экран можно (кроме printf) использовать и функцию puts, которая после вывода строки еще и дает команду перехода на новую строку.

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

В языке Си есть достаточно много специальных функций, которые работают со строками - последовательностями символом с нулевым символом на конце. Для использования этих функций надо включить в программу заголовочный файл #include 

  1.  Функция strlen(s) – возвращает длину строки s, при этом завершающий нулевой байт не учитывается. Пример:

int l;

char s[] = "Prodigy";

l = strlen(s);

printf ( “Длина строки %s равна %d”, s, l );

В этом примере функция определит, что длина строки равна 7.

  1. Функция сравнение строк – strcmp (s1,s2)

Функция возвращает ноль, если строки s1 и s2 равны (то есть содержат одно и то же число одинаковых символов) и ненулевое значение, если строки различны. Если строки не равны, функция возвращает «разность» между первой и второй строкой, то есть разность кодов первых различных символов. В таблице показано несколько примеров (код буквы ‘A’ равен 65, код буквы ‘B’ – 66, код буквы ‘C’ – 67).

Иногда надо сравнить не всю строку, а только первые несколько символов. Для этого служит функция strncmp(s1,s2,n). Третий параметр этой функции n – количество сравниваемых символов. Принцип работы такой же - она возвращает нуль, если заданное количество первых символов обеих строк одинаково.

  1. Функция копирование строк – strcpy(s1,s2)

Простое копирование выполняет функция strcpy. Она принимает два аргумента: сначала строка-приемник s1, потом - источник s2.

Еще одна функция позволяет скопировать только заданное количество символов, она называется strncpy(s1,s2,n) и принимает в третьем параметре n - количество символов, которые надо скопировать. Важно помнить, что эта функция НЕ записывает завершающий нуль, а только копирует символы (в отличие от нее strcpy всегда копирует завершающий нуль).

Пример:

char s2[] = “Ку-ку”;

char s1[100];

strncpy(s1,s2,2);

s1[2]=’\0’;

puts(s1);

В результате на экране будет выведена фраза «Ку»

  1. Объединение строк - strcat (s1,s2) позволяет добавить строку источник s2 в конец строки-приемника s1 (завершающий нуль записывается автоматически).

char s1[80] = "Могу, ",

s2[] = "хочу, ", s3[] = "надо!";

strcat ( s1, s2 );

strcat ( s1, s3 );

puts ( s1 );

В результате на экране будет выведена фраза «Могу, хочу. Надо!»

  1. Закрепление изученного материала.

 

  1. Самостоятельная работа студентов.

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

Уровень 1.

Задача №1: Определить длину строки "Основы алгоритмизации и программирования".

Задача №2: Получить из слов "Интер", "нет" слово "Интернет".

Уровень 2.

Задача №1: Получить из слов "Язык", "Turbo", "Pascal" фразу "Язык Turbo Pascal".

Уровень 3.

Задача №1: Получить из слова "Позитроника" слово "трон".

Итоги урока, постановка домашнего задания.


ПЕРЕЧЕНЬ ЛИТЕРАТУРЫ

1. Немцова Т.И. Программирование на языке высокого уровня. Программир. на языке С++: Уч. Пос. - М.: ИД ФОРУМ: ИНФРА-М, 2012. – 512 с

2. Герберт Шилд. С++ Базовый курс. Издательство: Вильямс 2014.


Предварительный просмотр:


Подписи к слайдам:

Слайд 1

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

Слайд 2

Вопросы для повторения: Что такое сортировка массива? Какие виды сортировок вы знаете? Задан массив целых чисел С[6]. Требуется упорядочить в нем элементы по возрастанию, применяя метод выбора. Покажите, как будет выглядеть массив после каждого шага сортировки. С 0 -5 8 2 7 -1 1 - й шаг 2-й шаг 3-й шаг 4-й шаг 5-й шаг

Слайд 3

Двумерные массивы Матрица - это система элементов a ij , расположенной в прямоугольной таблицы В информатике матрица представляется в виде двухмерного массива , то есть массива, все элементы которого имеют два индекса. Двумерный массив, как и таблица, состоит из строк и столбцов . Два индекса элемента - это и есть номера строки и столбца, на пересечении которых этот элемент находится. Первый индекс двумерного массива C — это число рядов , а второй индекс — это число столбцов . Пример двумерного массива C : 3

Слайд 4

Каждый элемент двумерного массива описывается как a [ i ][ j ] , где: а – имя массива i - номер строки j – номер столбца

Слайд 5

Объявление двумерного массива Форма объявления двумерного массивы: тип имя_массива [размер_1][размер_2]; Например, оператор выделит место в памяти под массив целых чисел, имеющую 20 строк и 10 столбцов (всего 20*10=200 элементов). int B[20][10];

Слайд 6

Объявление двумерного массива с помощью директивы #define #define n 20 #define m 10 void main () { int B[т][ m ]; … }

Слайд 7

Использование генератора случайных чисел. Заполнение элементов массива в диапазоне от -10 до 10: randomize (); for ( i = 0 ; i < n ; i ++ ) for ( j = 0 ; j < m ; j ++ ) A [ i ][ j ] = random ( 21 ) - 10 ;

Слайд 8

Вывод матрицы в виде таблицы: printf (" Матрица A\n"); for ( i = 0; i < n; i ++ ) { for ( j = 0; j < m; j ++ ) printf ( "%4d", A[ i ][j] ); printf ("\ n "); } printf ( " Матрица A\n" ); for ( i = 0 ; i < n ; i ++ ) { for ( j = 0 ; j < m ; j ++ ) { printf ( "%4d" , A [ i ][ j ] ); } printf ( "\ n " ); }

Слайд 9

Сумма элементов массива s = 0 ; for ( i = 0 ; i < n ; i ++ ) { for ( j = 0 ; j < m ; j ++ ) { s = s + A [ i ][ j ]; } } printf ( “% d”, s );

Слайд 10

Суммирование элементов каждой строки. int d [ n ], s ; for ( i = 0 ; i < n ; i ++ ) { s = 0 ; for ( j = 0 ; j < m ; j ++ ) { s = s + A [ i ][ j ];} d [ i ]= s ;}

Слайд 11

Поиск минимального элемента двумерного массива. min = A [ 0 ][ 0 ]; k = 0 ; l = 0 ; for ( i = 0 ; i < n ; i ++ ) { for ( j = 0 ; j < m ; j ++ ) if ( A [ i ][ j ]< min ) { min = A [ i ][ j ]; k = i ; l = j ;} } printf ( “Минимальный элемент % d ” , min );

Слайд 12

Задания для самостоятельного решения: 1. Написать программу, которая для целочисленной матрицы 2х3 определяет среднее арифметическое ее элементов. Диапазон чисел [-3,3]. 2. Написать программу, которая для целочисленной матрицы 3х4 определяет количество положительных элементов в каждой строке. Диапазон чисел [-20,20].


Предварительный просмотр:


Подписи к слайдам:

Слайд 1

Тема урока: Алгоритмы сортировки одномерных массивов 1

Слайд 2

нет нет да Сортировка по возрастанию Методом пузырька Пример работы алгоритма: B 4 5 2 1 3 1 -й шаг 1 5 4 2 3 (последовательно меняются местами 4 и 2, 2 и 1) 2-й шаг 1 2 5 4 3 (последовательно меняются местами 5 и 4, 4 и 2) 3-й шаг 1 2 3 5 4 (последовательно меняются местами 5 и 4, 4 и 3) 4-й шаг 1 2 3 4 5 (меняются местами 5 и 4) 2

Слайд 3

Устный Опрос Что такое массив? Что такое индекс элемента массива? Какой ряд данных можно назвать массивом? а, 4, б, 5, с, 6 2.3, 5.7, 10.89 3, 6, 3, 2, massiv Найдите правильное описанием массива: int A[N]; int A[10]; define N 30 .. int A[N] int A[] int N=20 int A[N] Для подсчета четных элементов массива а будет использовано условие if (a[ i ]/2) k++; if (i%2==0) k++; if (a[ i ]%2==0) k++; 3

Слайд 4

нет нет да Метод пузырька Блок-схема решения задачи 4

Слайд 5

Фрагмент программы, реализующий сортировку массива по возрастанию методом пузырька for ( i = 0; i < N-1; i ++ ) for ( j = N-2; j >= i ; j -- ) if ( A[j] < A[j+1] ) { c = A[j]; // меняем местами A[j] и A[j+1] A [ j ] = A [ j +1]; A [ j +1] = c ; } 5

Слайд 6

Сортировка по возрастанию методом прямого выбора B 4 5 2 1 3 1 -й шаг 1 5 4 2 3 (последовательно меняются местами 4 и 2, 2 и 1) 2-й шаг 1 2 5 4 3 (последовательно меняются местами 5 и 4, 4 и 2) 3-й шаг 1 2 3 5 4 (последовательно меняются местами 5 и 4, 4 и 3) 4-й шаг 1 2 3 4 5 (меняются местами 5 и 4) Пример работы алгоритма: 6

Слайд 7

нет нет да метод прямого выбора Блок-схема алгоритма: 7

Слайд 8

Фрагмент программы, реализующий сортировку массива по возрастанию методом прямого выбора for ( i = 0; i < N-1; i ++ ) for ( j = i+1; j A[j] ) { c = A[ i ]; A[ i ] = A[j]; // меняем местами A[j] и A[j+1] A[ j ] = c ; } 8

Слайд 9

Упражнения для закрепления материала: Задан массив целых чисел A[7]. Требуется упорядочить в нем элементы по возрастанию, применяя метод «пузырька». Покажите, как будет выглядеть массив после каждого шага сортировки. А 5 -3 1 2 6 4 -7 1 -й шаг 2-й шаг 3-й шаг 4-й шаг 5-й шаг 6-й шаг 9

Слайд 10

Задания по вариантам Задание №1. Дан массив А[20]. Массив задать случайными числами в диапазоне [-40,40]. Вывести значения элементов массива на экран. Отсортировать массив по убыванию методом пузырька. Вывести отсортированный массив на экран. Задание №2. Дан массив А[20]. Массив задать случайными числами в диапазоне [-40,40]. Вывести значения элементов массива на экран. Отсортировать массив по убыванию методом пузырька. Вывести отсортированный массив на экран. 10


По теме: методические разработки, презентации и конспекты

История развития языков программировани

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

Статья по теме: «Инструментальные системы для создания контролирующих и обучающих программ без знания языков программирования»

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

Презентация на тему "Работа с массивами в языке программирования С"

Определение одномерных и двумерных массивов. Инициализация, примеры....

Основы языка программирования .Паскаль

Разработка урока предусматривающая работу в Паскале...

Презентация. Программирование циклов (Язык программирования C++)

В презентации рассматриваются виды циклов, порядок их работы, а также вложенные циклы....

К олимпиаде по программированию. Тема "Длинная арифметика" (Язык программирования C++)

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

Презентация по теме "Массивы" для языка программирования Python

Презентация по теме "Массивы" для языка программирования Python создана как дополнение к презентации Полякова по программированию в 10 классе...