Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Тема: Поняття масиву. Опис та ініціалізація

Поиск

Урок № 24

Тема: Поняття масиву. Опис та ініціалізація

Мета:

  1. Ознайомити учнів з основними поняттями, прийомами опису та ініціалізації масивів.
  2. Розвиток навичок аналізу наведених прикладів
  3. Формування наполегливості, компетентності самоосвіти

Тип: Засвоєння нового матеріалу, розвиток навичок

Обладнання:

  1. Лєхан С. А. Інформатика. С++. Спецкурс 10-12 клас. с.76
  2. Глинський Я.М. С++ с. 71
  3. Презентація “Масиви”
  4. Тест “Опис та ініціалізація масиву”

Епіграф “Прагнення до нового є перша потреба людської уяви ” /Стендаль/

Хід уроку

Етап уроку Діяльність учителя Діяльність учнів
  Організаційний момент Оголошення теми та плану уроку. Мотивація Записують у зошит
  Сприйняття нового матеріалу, осмислення зв’язків і відносин між базовими поняттями   Лекція з опорою на презентацію. План: 1. Поняття масиву 2. Опис масиву 3. Звернення до елементу масиву 4. Ініціалізація масиву. Приклади 5. Завдання 6. Передача масивів у функції. Приклади   Конспектування з використанням презентації  
  Виконання тренувальних вправ   Спостереження, надання допомоги. За згодою учнів можливо закріпити завдання за робочими місцями учнів, а потім разом проаналізувати результати Реалізація задач, що наведено в завданнях слайду № 8 та прикладах слайду № 10
  Закріплення.   Роздати тест. Спостереження, забезпечення самостійності виконання Індивідуальні письмові відповіді на запитання тесту
  Домашнє завдання Знати основні поняття Скласти власний приклад тесту в кількості 6 або 12 запитань Записати в зошит Запитання по виконанню завдань

 


Теоретичний матеріал до уроку «Поняття масиву. Опис та ініціалізація»

Поняття масиву

Масив – це сукупність елементів одного типу, звернення до яких здійснюється за допомогою імені масиву та індексу.
(Лєхан С.А.)

Масив – це впорядкований скінчений набір даних одного типу, які зберігаються в послідовно розташованих комірках оперативної пам'яті і мають спільну назву (яку надає користувач). (Глинський Я.М.)

Масив – це структура даних, що являє собою однорідну (за типом), фіксовану (за розміром і конфігурацією) сукупність елементів, упорядкованих за номерами. (Скляр І.В.)

Масивом називається скінчена послідовність змінних одного типу, які мають однакове ім'я та розрізняються індексом. (Караванова Т.П.)

Масив – це змінна, утворена послідовністю значень, які називають елементами, є однотипними й ідентифікуються номерами (індексами)/ (Ставровський А. Б.)

Опис масиву

Загальний вигляд:

тип ім'я [розмір];

Тип ім’я [p1] [p2];

Розмір – це кількість елементів масиву. Розміром може бути лише стала величина (не змінна).

Розрізняють одно- та багатовимірні масиви.

Наприклад:

int a[5]; char st[30]; float x[5], y[5];

Звернення до елементу масиву

За допомогою імені масиву:

a[0]=3; cout<<a[4];

Увага! Нумерація елементів масиву починається з нуля. Контроль за виходом за межі масиву С++ не здійснює. Індекс повинен бути цілим додатним числом або математичним виразом, результатом обчислення якого є ціле додатне число.

За допомогою вказівників:

*a=3; cout<<*(a+4);

Назва масиву є вказівником на його перший елемент. Змінна *a містить значення першого елемента масиву a[0]. Оскільки всі елементи масиву розміщені у послідовних комірках оперативної пам'яті, то вказівник *(a+4) вказуватиме на 5-й елемент масиву (a[4])

Ініціалізація масиву

Проініціалізувати масив (надати значення елементам масиву) можна одним із способів:

Використовуючи принцип замовчування

Безпосередньо під час його оголошення

Застосовуючи команду присвоєння

Під час ведення із клавіатури

Під час введення із файлу

Приклади:

1. Присвоєння нульових значень int B[8]; for(int i=0; i<8; i++) B[i]=0;

2. Під час оголошення:
int s[5]={163, 4, 170, 3, 8}
float r[]={1.5, 3, 4.2} //компілятор сам визначає розмір =3
char a[6]=“abetka”; або char a[6]={‘a’, ‘b’, ‘e’, ‘t’, ‘k’, ‘a’}

3. Якщо початкових значень менше, ніж елементів у масиві, елементи, що залишилися автоматично одержують нульові початкові значення int n[10]={0};

4. Масиви-сталі оголошуються так:
const int flag[]={1, 2}; // якщо сталі не ініціалізувати під час оголошення елементам автоматично будуть присвоєні 0.

5. Використання константи для завдання розміру:
const int n=10; int m[n];

6. Уведення із клавіатури: int x[5]; for(i=0; i<5; i++) cin>>x[i];

Завдання (Слайд № 8)

Створити програму, що присвоює початкові нульові значення масиву В, що містить 8 цілих чисел і друкує його

Створити програму, що присвоює початкові значення масиву В, що містить 8 цілих чисел при оголошенні і друкує його

Створити програму, що присвоює початкові значення 1, 2,..10 масиву М з 10 елементів і виводить на екран елементи масиву з парними номерами

Передача масивів у функції

Оскільки в С++ не контролюється розмір масиву, то у функцію слід передавати також параметр, що містить кількість елементів у масиві:
void fun(int A[], int n);

Такий прийом дозволяє однією функцією обробляти масиві різних розмірів

Приклади (Слайд № 10)

Вивести значення масивів:

#include<iostream.h>

#include<conio.h>

void show_array(int A[], int n)
{
for (int i=0; i<n; i++)
cout<<A[i]<<‘ ‘;
cout<< endl;
}
int main ()
{
int little[5]={1,2, 3, 4, 5};
int big[3]={1000, 2000, 3000};
show_array(little, 5);
show_array(big, 3);
getch();
return 0;
}

Завдання: змініть програми (слайд № 8) так, що використати наведені функції (опрацюйте декілька масивів)

Увести з клавіатури значення масивів та надрукувати їх:

#include<iostream.h>

#include<conio.h>

void get_array(int A[], int n)
{
for (int i=0; i<n; i++)
cin>>A[i];
}
int main ()
{
int little[5];
int big[3];
get_array(little, 5);
for (int i=0; i<5; i++) cout<<little[i]<<endl;
get_array(big, 3);
for (int i=0; i<3; i++) cout<<big[i]<<endl;
getch();
return 0;
}

Завдання: змініть програми (слайд № 8) так, щоб використати наведені функції (опрацюйте декілька масивів)

Опис та ініціалізація масиву

  1. Нехай int а[5]={10, 11, 12, 13, 14}
    1. a[3]=? (13)
    2. a[5]=? (визначити неможливо)
  2. Нехай int а[5]={10, 11, 12, 13}
    1. a[4]=? (0)
    2. a[0]=? (10)
  3. Виберіть помилкові звернення до елементів масиву, якщо int і,j; float c;
    1. a[i+j]= (+)
    2. a[i/j]= (+)
    3. a[c]= (-)
    4. a[“I”]= (-)
  4. Нехай float r[]={1.5, 3, 4.2}. Вкажіть розмір масиву (3)
  5. Нехай char a[6]=“abetka”;
    1. a[3]=? (t)
    2. a[0]=? (a)
    3. a[0]==a[5] (true)
  6. Чи можна змінювати в програмі значення елементів масиву а? (так)
  7. Оберіть вірне передавання масиву в функцію
    1. void fun(int A[], int n); (+)
    2. void fun(int A[void], int n);
    3. void fun(int A[n], int n);
  8. Вкажіть правильно організований цикл для опрацювання всіх елементів масиву
    1. for (int i=1; i<=n; i++)
    2. for (int i=0; i<=n; i++)
    3. for (int i=1; i<n; i++)
    4. for (int i=0; i<n; i++) (+)
  9. Що буде виведено на екран:
    1. cout<<а[i]<<‘ ‘; (і-й елемент масиву)
    2. cout<<а; (адрес, з якого розміщується в пам’яті масив)
  10. Вкажіть помилкові описи масивів
    1. int a[3];
    2. int a[‘f’]; (-)
    3. int a[] (допустимо в заголовку функції)
    4. int a[3]={1}
  11. Що передається в функцію fun(a[2], 5);
    1. Масив, розмір якого 2
    2. Масив розмір якого 5
    3. 2-й елемент масиву (+)

 

Розв’язки завдань

Слайд № 8



Задача № 1

#include <iostream.h>

#include <conio.h>

int main()

{ int b[8];

for (int I=0; I<8; I++) b[I]=0;

for (I=0; I<8; I++)

cout<<I<<”\t”<<b[I]<<”\n”;

getch (); return 0;}

Задача № 2

#include <iostream.h>

#include <conio.h>

int main()

{ int b[8]={1, 2, 3, 4, 5, 6, 7, 8};

for (int I=0; I<8; I++)

cout<<I<<”\t”<<b[I]<<”\n”;

getch ();

return 0;}

Задача № 3

#include <iostream.h>

#include <conio.h>

int main()

{ int b[10];

for (int I=0; I<10; I++) b[I]=I;

for (I=0; I<10; I++)

cout<<I<<”\t”<<b[I]<<”\n”;

getch ();

return 0;

}

Слайд № 10

Задача № 1

#include <iostream.h>

#include <conio.h>

void show_array (int a[], int n)

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

cout<<a[i]<<” “; cout<<endl;}

int main()

{ int b[8], c[5];

for (int I=0; I<8; I++) b[I]=0;

for (I=0; I<8; I++) c[I]=0;

show_array (b, 8); show_array (c, 5);

getch (); return 0;}

Задача № 2

#include <iostream.h>

#include <conio.h>

void show_array (int a[], int n)

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

cout<<a[i]<<” “;cout<<endl;}

int main()

{ int b[8]={1, 2, 3, 4, 5, 6, 7, 8};

int c[5]={9, 10, 11, 12, 13};

show_array (b, 8); show_array (c, 5);

getch (); return 0;}

Задача № 3

#include <iostream.h>

#include <conio.h>

void show_array (int a[], int n)

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

cout<<a[i]<<” “; cout<<endl;}

int main()

{ int b[10], c[4];

for (int I=0; I<10; I++) b[I]=I;

for (int I=0; I<4; I++) c[I]=I+10;

show_array (b, 10); show_array (c, 4);

getch (); return 0;}


Урок № 25

Тема: Складання програм із масивами

Мета:

  1. Розширити уявлення учнів про алгоритми опрацювання масивів
  2. Розвиток алгоритмічного мислення
  3. Формування самостійності, наполегливості, інформаційної компетентності

Тип: Р озвиток навичок

Обладнання:

  1. Лєхан С. А. Інформатика. С++. Спецкурс 10-12 клас. с.82-85
  2. Шпаргалка “Масиви у С++”

Епіграф “Коли людина хоче дізнатися – вона досліджує ” /М. Горький/

Хід уроку

Етап уроку Діяльність учителя Діяльність учнів
  Організаційний момент Оголошення теми та плану уроку. Мотивація. Записують у зошит
  Актуалізація опорних знань Організувати роботу Обмін друг із другом завданнями, що приготували вдома. Виконання завдань, перевірка
  Засвоєння нового матеріалу Організувати роботу зі шпаргалкою. Пояснити алгоритм створення програми за фрагментами шпаргалки Самостійне складання конспекту з використанням шпаргалки
  Виконання тренувальних вправ   Закріпити номер прикладу зі шпаргалки за робочим місцем учнів. Спостереження. Надання допомоги в разі необхідності. Перевірка виконання завдань Розв’язування задач та їх реалізація. Обмін розв’язками    
  Домашнє завдання
  1. Випадковим чином заповнити масив з 30 чисел. Визначити, скільки елементів відмінні від останнього
  2. Увести число. Масив з 20 чисел заповнити випадковими числами в межах від 0 до 50. перевірити, чи зустрічається уведено число в масиві
  3. Випадковим чином задати масив з 25 цілих чисел. Надрукувати спочатку всі від’ємні числа, а потім всі інші.
Записати в зошит Запитання по виконанню завдань

 


Розв’язки завдань


Задача № 1

#include <iostream.h>

#include <conio.h>

#include <stdlib.h>

int main()

{

int a[30];

randomize();

for (int I=0; I<30; I++) a[I]=random(100);

int k=0;

for (I=0; I<29; I++)

if (a[I]!=a[29]) k++;

cout<<”k=”<<k<<”\n”;

getch ();

return 0;

}

Задача № 2

#include <iostream.h>

#include <conio.h>

#include <stdlib.h>

int main()

{

int a[20]; int x; cin>>x;

randomize();

for (int I=0; I<20; I++) a[I]=random(50);

for(I=0; I<20; I++)

if (a[I]==x) break;

if (I==20) cout<<”yes”<<”\n”;

else cout<<”no”<<endl;

getch ();

return 0;

}


Задача № 2 варіант 2

#include <iostream.h>

#include <conio.h>

#include <stdlib.h>

int main()

{

int a[20]; int x; cin>>x;

randomize();

for (int I=0; I<20; I++) a[I]=random(50);

I=0;

While (I<20 && a[I]!=x) {I++;}

if (I==20) cout<<”yes”<<”\n”;

else cout<<”no”<<endl;

getch ();

return 0;}

Задача № 3

#include <iostream.h>

#include <conio.h>

#include <stdlib.h>

int main()

{ int a[25];

randomize ();

for (int I=0; I<25; I++) a[I]=random(100)-50;

cout<<”-“<<endl;

for (I=0; I<25; I++)

{if (a[I]<0) cout<<a[I]<<” “;

cout<<endl;}

cout<<”+“<<endl;

for (I=0; I<25; I++)

{if (a[I]>0) cout<<a[I]<<” “;

cout<<endl;}

getch (); return 0;

}


Урок № 26

Тема: Практична робота “Програми з масивами”

Мета:

  1. Розвиток навичок роботи у середовищі програмування
  2. Розвиток навичок аналізу та локалізації помилок
  3. Формування самостійності

Тип: Р озвиток навичок

Обладнання:

  1. Лєхан С. А. Інформатика. С++. Спецкурс 10-12 клас. с.85
  2. Картки “Одновимірні масиви”

Епіграф “Роботи швидко – це робити повільні кроки без зупинок між ними” /народна мудрість/

Хід уроку

Етап уроку Діяльність учителя Діяльність учнів
  Організаційний момент Оголошення теми та плану уроку. Мотивація. Критерії оцінювання:
  1. 3 задачі з д/3 – 8 балів
  2. 2 задачі з в/з – 5 балів
  3. Перша задача картки – 3 бали
  4. Друга задача картки – 4 бали
Записують у зошит
  Самостійна практична робота   Спостереження. Надання допомоги в разі необхідності. Перевірка виконання завдань Розв’язування задач та їх реалізація.    
  Домашнє завдання Розв’язати завдання іншого варіанту Записати в зошит Запитання по виконанню завдань

 

Варіант № 1   В одномірному масиві дійсних чисел обчислити 1. суму від’ємних елементів 2. добуток елементів масиву, розташованих між максимальним та мінімальним елементами  
Варіант № 2   В одномірному масиві дійсних чисел обчислити 1. суму додатних елементів 2. добуток елементів масиву, розташованих між максимальним за модулем та мінімальним модулем елементами  
Варіант № 3   В одномірному масиві цілих чисел обчислити 1. добуток елементів з парними індексами 2. суму елементів масиву, розташованих між першим та останнім нульовими елементами  
Варіант № 4   В одномірному масиві цілих чисел обчислити 1. добуток елементів з непарними індексами 2. суму елементів масиву, розташованих між першим та останнім від’ємними елементами  
Варіант № 5   В одномірному масиві дійсних чисел обчислити 1. максимальний елемент 2. добуток елементів масиву, розташованих до першого нульового елементу  
Варіант № 6   В одномірному масиві дійсних чисел обчислити 1. мінімальний елемент 2. суму елементів масиву, розташованих після першого нульового елементу  
Варіант № 7   В одномірному масиві цілих чисел обчислити 1. номер максимального елемента 2. добуток елементів масиву, розташованих до першого від’ємного елемента  
Варіант № 8   В одномірному масиві дійсних чисел обчислити 1. номер мінімального елементу 2. суму елементів масиву, розташованих після першого від’ємного елемента  
Варіант № 9   В одномірному масиві дійсних чисел обчислити 1. максимальний за модулем елемент 2. добуток елементів масиву, розташованих до останнього нульового елемента  
Варіант № 10   В одномірному масиві дійсних чисел обчислити 1. мінімальний серед від’ємних елементів 2. суму елементів масиву, розташованих після останнього нульового елемента  

 

Розв’язки завдань

 

       
   
 
 
 
 

 

 

       
   
 
   
 
 

 

   
 
 
 
 
 

 


Урок № 27

Тема: Алгоритми сортування

Мета:

  1. Ознайомити учнів із алгоритмами сортування масивів
  2. Розвиток алгоритмічного мислення
  3. Формування уважності, наполегливості, інформаційної компетентності

Тип: Засвоєння нового матеріалу, розвиток навичок

Обладнання:

  1. Лєхан С. А. Інформатика. С++. Спецкурс 10-12 клас. с.85
  2. Лисенко Т.І. Поглиблене вивчення програмування. с.47
  3. Презентація “Впорядкування масивів”

Епіграф “Наше знание похоже не шар: чем больше он становится, тем больше у него точек соприкосновения с неизвестным” /Спенсер/

Хід уроку

Етап уроку Діяльність учителя Діяльність учнів
  Організаційний момент Оголошення теми та плану уроку. Мотивація. Записують у зошит
  Перевірка домашнього завдання Чи є запитання? Відповіді за допомогою учнів Запитання за змістом завдань
  Засвоєння нового матеріалу Лекція з використанням презентації. План: 1. Функція sizeof 2. Сортування простим пошуком 3. Метод “бульбашки” 4. Задачі Конспектування В наведених прикладах розібрати значення кожного оператору.
  Виконання тренувальних вправ   Організувати роботу із завданнями № 1-3 слайду № 8 (розділити їх за робочими місцями учнів). Спостереження. Надання допомоги в разі необхідності. Перевірка виконання завдань Розв’язування задач та їх реалізація. Обмін розв’язками Збереження програм    
  Домашнє завдання Розв’язати завдання № 4-7 слайду № 8 (розібрати алгоритми їх розв’язків) Записати в зошит Запитання по виконанню завдань

 

Зміст

Функція sizeof

Сортування простим пошуком

3. Метод “бульбашки”

Задачі

Література

 

Слайд № 3

 

Слайд № 5

 

Сортування одновимірних масивів. Метод “бульбашки”

Алгоритм:

Вивести отриманий масив

void bubl(int *mas[], int n)
{

int i.j;
int rab;
for(j=1; j<n; j++)
for (i=1; i<n; i++)
if (*mas[i-1]>*mas[i])
{
rab=*mas[i-1];
*mas[i-1]=*mas[i];
*mas[i]=rab;
}
}
….bubl(&a, n); //виклик

.

Слайд № 7

 

Задачі (Слайд № 8)

Література

1. Лєхан С.Ф. Інформатика С++. Спецкурс. 10-12 класи. – Шепетівка; Аспект, 2007.

2. Глинський Я.М., Анохін В.Є., Ряжська В.А. С++ і С++ Builder. Навчальний посібник. – Львів: СПД Глинський, 2006.

3. Глушаков С.В., Смирнов С.В., Коваль А.В. Практикум по С++. – Харьков: Фолио, 2006.

4. Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб.: Питер, 2003

Ров’язки завдань

Слайд № 8

Задача 3a

#include <iostream.h>

#include <conio.h>

void show_array(inta[], int n)

{for (int I=0; I<n; I++) cout<<a[I]<<” “;

cout<<endl;}

//----------------------------------------------------

void get_array(int a[], int n)

{for (int I=0; I<n; I++) cin>>a[I];}

//----------------------------------------------------

int MaxEl(int a[], int m, int n)

{int max=a[m]; int L=m;

for (int I=m+1; I<n; I++)

if (a[I]>=max) {max=a[I]; L=І;}

return (L);}

//---------------------------------------------------

void swap(int*a, int*b)

{int temp=*a; * a= b; *b=temp;}

//---------------------------------------------------

int main()

{int n; cin>>n; int a[100];

get_array(a,n);

int mc=0; int L;

int nc=sizeof(a)/sizeof(a[0]);

while (mc<nc)

{ L=MaxEl(a, mc, nc);

swap(&a[mc], &a[L]);

mc++;}

show_array(a, n);

getch();

return 0;

}

Задача 3b

#include <iostream.h>

#include <conio.h>

void show_array(inta[], int n)

{for (int I=0; I<n; I++) cout<<a[I]<<” “;

cout<<endl;}

//----------------------------------------------------

void get_array(int a[], int n)

{for (int I=0; I<n; I++) cin>>a[I];}

//----------------------------------------------------

void swap(int*a, int*b)

{int temp=*a; * a= b; *b=temp;}

//---------------------------------------------------

void bubl(int *mas[], int n)

{bool fl=false; int j=1;

do

{fl=false;

for (int I=0; I<n-j; I++)

if (*max[I]>*mas[I+1])

{swap(&mas[I], &mas[I+1];

fl=true;}

j++}

while (fl)

}

//--------------------------------------------------

int main()

{int n; cin>>n; int a[100];

get_array(a,n);

int nc=sizeof(a)/sizeof(a[0]);

bubl(&a, nc)

show_array(a, n);

getch();

return 0;

}

 

Задача 4

(після сортування, замість виведення елементів масиву)

for (int k=1; int I=0; I<n-1; I++)

if (a[I]!=a[I+1]) k++;

cout<<k<<endl;

 

Задача 5

(після сортування, замість виведення елементів масиву)

int k=1, km=1, b=a[0];

for (int I=0; I<n-1; I++)

if (a[I]==a[I+1]) k++;

else

if (k>km) {km=k; b=a[I], k=1;}

cout<<b<<endl;

Задача 6

(зміни внести в головну функцію)

int main()

{int n; cin>>n; int a[100];

get_array(a,n);

int m; cin>>m; int b[100];

get_array(b, m);

bubl(&a, n);

bubl(&b, m);

int I=0, L=0;

do

{if (a[I]!=b[L]) I++;

else {cout<<a[I]<<” “; I++; L++;}

while (I<n && L<m);

getch();

return 0;

}

Задача 7

#include <iostream.h>

#include <conio.h>

void show_array(inta[], int n)

{for (int I=0; I<n; I++) cout<<a[I]<<” “;

cout<<endl;}

//----------------------------------------------------

void get_array(int a[], int n)

{for (int I=0; I<n; I++) cin>>a[I];}

//----------------------------------------------------

int main()

{int n; cin>>n; int a[100];

get_array(a,n);

int m; cin>>m; int b[100];

get_array(b, m);

int c[200];

int I=L=k=0;

do

{if (a[I]<b[L]) {c[k]=a[I]; k++;}

else

if (a[I]=b[L]) {c[k]=a[I]; I++; k++; c[k]=b[L]; L++; k++;}

else {c[k]=b[L]; L++; k++;}

}

while (I<n && L<m);

if (I==n && L!=m)

{for (I=l; I<m; I++) {c[k]=b[L]; k++;}}

else

if (L==m && I!=n)

{for I=L; I<n; I++) {c[k]=a[I]; k++;}}

show_array(c, m+n);

getch (); return 0;}

Урок № 28

Тема: Практична робота “Впорядкування масивів”

Мета:

  1. Розвиток навичок роботи опрацювання масивів
  2. Розвиток навичок аналізу та локалізації помилок
  3. Формування самостійності

Тип: Р озвиток навичок

Обладнання:

  1. Презентація “Впорядкування масивів”
  2. Програми, що були збережені на попередньому уроці

Епіграф “Глаза бояться – руки делают” /народна мудрість/

Хід уроку

Етап уроку Діяльність учителя Діяльність учнів
  Організаційний момент Оголошення теми та плану уроку. Мотивація. Визначення стратегії роботи:
  1. Тестові приклади – обов’язкові!
  2. Кожна пара учнів реалізує по 3 задачі слайду № 8 або, кожна пара реалізує одну задачу, а потім міні-турнір (тобто, доповідь, рецензування, робота опонента)
Записують у зошит     Обирають варіант роботи
  Самостійна практична робота   Спостереження. Надання допомоги в разі необхідності. Перевірка виконання завдань Розв’язування задач та їх реалізація. Міні-турнір (оцінка від кожної пари учнів)  
  Домашнє завдання Доопрацювати завдання з урахуванням зауважень Записати в зошит Запитання по виконанню завдань

Урок № 29

Хід уроку

Етап уроку Діяльність учителя Діяльність учнів
  Організаційний момент Оголошення теми та плану уроку. Мотивація. Записують у зошит
  Засвоєння нового матеріалу Лекція з використанням презентації План: 1. Статичні та динамічні дані 2. Робота з динамічними даними 3. Приклади 4. Завдання Конспектування     Розібрати дію кожного оператора
  Виконання тренувальних вправ Спостереження. Надання допомоги в разі необхідності. Реалізувати будь-яку програму з прикладів
  Закріплення   Розібрати завдання слайду № 9 Якщо вистачає часу – картки “Одновимірні масиви” реалізувати з використанням динамічного масиву Занотувати. Складання та реалізація програм    
  Домашнє завдання Розв’язати завдання слайду № 9 Записати в зошит

Статичні та динамічні дані

У С++ змінні можуть бути розміщені або статично – під час компіляції, або динамічно – під час виконання програм, шляхом виклику відповідних функцій зі стандартної бібліотеки.

Завдання, у яких потрібно зберігати й обробляти заздалегідь невідоме число елементів, зазвичай вимагають динамічного виділення пам'яті. Після того як потреба у динамічній змінній зникає, місце, яке вона займала, можна звільнити для інших динамічних об'єктів.

Робота з динамічними даними

Виділення динамічної пам'яті здійснюється операцією new. За допомогою new виділяється пам’ять, і адреса, з якої вона починається, заноситься у вказівник на потрібний тип:

1. int *n=new int;

2. int *m=new int (10);

У зразку 1 виконується виділення достатньої для розміщення величини типу int ділянки динамічної пам'яті й записує адресу початку цієї ділянки в змінну n. Пам’ять під саму змінну n виділяється на етапі компіляції.

Приклади

Завдання (Слайд № 9)

1. Скласти програму, яка реалізує такі функцій для роботи з масивами:

· Уведення елементів;

· Виведення елементів;

· Пошук максимального елементу масиву.

2. Скласти програму, яка реалізує такі функцій для роботи з масивами:

· Уведення елементів;

· Виведення елементів;

· Обчислення суми додатних елементів масиву.

Розв’язки завдань


Задача 1

#include <iostrem.h>

#include <conio.h>

//----------------------------------------------

void _Input(int *, int);

void _Print(int *, int);

int MaxEl(int a[], int n)

{int max=a[0]; int L=0;

for (int I=1; I<n; I++)

if (a[I]>max)

{max=a[I]; L=I;}

return (L);}

//----------------------------------------------

int main ()

{int n, *a; cin>>n;

a=new int [n];

_Input(a,n);

int L=MaxEl(a,n);

_Print(a,n);

cout<<a[L]<<endl;

delete []a;

getch ();

return 0;

}

//-----------------------------------------------

void _Inpur (int *a, int n)

{for (int I=0; I<n; I++) cin>>a[I];}

//-----------------------------------------------

void _Print(int *a, int n)

{for (int I=0; I<n; I++) cout<<a[I]<<” “;

cout<<endl;}

 

Задача 2

#include <iostrem.h>

#include <conio.h>

//----------------------------------------------

void _Input(int *, int);

void _Print(int *, int);

int Sum(int a[], int n)

{int s=0;

for (int I=1; I<n; I++)

s+=a[I];

return (s);}

//----------------------------------------------

int main ()

{int n, *a; cin>>n;

a=new int [n];

_Input(a,n);

int L=Sum(a,n);

_Print(a,n);

cout<<L<<endl;

delete []a;

getch ();

return 0;

}

//-----------------------------------------------

void _Inpur (int *a, int n)

{for (int I=0; I<n; I++) cin>>a[I];}

//-----------------------------------------------

void _Print(int *a, int n)

{for (int I=0; I<n; I++) cout<<a[I]<<” “;

cout<<endl;

}



Урок № 30

Тема: Багатовимірні масиви

Мета:

  1. Ознайомити учнів з прийомами опрацювання матриць
  2. Розвиток алгоритмічного мислення
  3. Формування уважності, спостережливості

Тип: Засвоєння нового матеріалу, розвиток навичок

Обладнання:

  1. Лєхан С. А. Інформатика. С++. Спецкурс 10-12 клас. с.97
  2. Презентація “Вказівники, динамічні змінні й масиви” слайд № 10-14

Епіграф “Все идеи извлечены из опыта” /Ф. Энгельс/

Хід уроку

Етап уроку Діяльність учителя Діяльність учнів
  Організаційний момент Оголошення теми та плану уроку. Мотивація. Записують у зошит
  Засвоєння нового матеріалу Лекція з використанням презентації План: 1. Багатовимірні масиви 1.1. Опис 1.2. Опрацювання 2. Приклад 3. Завдання Конспектування   Розібрати дію кожного оператора
  Закріплення Спостереження Надання допомоги за необхідністю Виконання вправ слайду № 13 (якомога більше)
Домашнє завдання   Доопрацювати завдання слайду № 13 Записати в зошити

Приклад

Написати програму, в якій для двовимірного масиву цілих чисел визначається номер крайнього стовпця, розташованого ліворуч, що містить тільки додатні елементи. Якщо такого стовпця немає, виводиться відповідне повідомлення.

# include< iostream.h>
# include<conio.h>
# include<iomanip.h>
int main ()
{int ryad, stovp; cin>>ryad>>stovp;
int i, j;

int **a=new int *[ryad];
for (i=0; i<ryad; i++)
a[i]= new int [stovp];
//уведення масиву
for(i=0; i<ryad; i++)
for (j=0; j<stovp; j++)
cin>>a[i][j]

//виведення масиву
for(i=0; i<ryad; i++)
{for (j=0; j<stovp; j++)
cout<<setw(4)<<a[i][j]<<“ “;
cout<<endl;}

// аналіз масиву

int n=-1; bool dodat;

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

{ // перегляд по стовпцях

dodat=true;

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

if (a[i][j]<0)

{dodat=false; break;}

If (dodat)

{n=j; break;}

}

if (n==-1) cout<<“no”<<endl;

else cout<<“n=“<<n<<endl;

delete []a; //вивільнення пам'яті
getch(); return 0; }

Завдання (Слайд № 13)

Випробуйте програму прикладу. Переробіть її так, щоб визначити номер крайнього стовпця, розташованого ліворуч, що містить тільки від'ємні елементи. Якщо такого стовпця немає, виводиться відповідне повідомлення.

A. У зворотному порядку

B. З парними індексами

C. З непарними індексами

D. Які є парними числами

E. Які є непарними числами

Література

1. Лєхан С.Ф. Інформатика С++. Спецкурс. 10-12 класи. – Шепетівка; Аспект, 2007.

2. Глинський Я.М., Анохін В.Є., Ряжська В.А. С++ і С++ Builder. Навчальний посібник. – Львів: СПД Глинський, 2006.

3. Глушаков С.В., Смирнов С.В., Коваль А.В. Практикум по С++. – Харьков: Фолио, 2006.

4. Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб.: Питер, 2003

Розв’язки завдань

Слайд № 13

Задача 2


#include <iostrem.h>

#include <conio.h>

#include <stdlib.h>

int main ()

{int a[8][15], int k=0;

randomize();

for (int I=0; I<8; I++)

for (int j=0; j<15; j++)

{a[I][j]=random(9);

if (a[I][j]==5) k++;}

cout<<k<<endl;

getch ();

return 0;

}

Задача 3

#include <iostrem.h>

#include <conio.h>

#include <stdlib.h>

int main ()

{int a[8][15], int k[10]={0};

randomize();

for (int I=0; I<8; I++)

for (int j=0; j<15; j++)

{a[I][j]=random(9);

k[a[i][j]]++;}

for (int i=0; i<10; i++) cout<<”k[“<<i<<”]=”<<k[i]<<” “;

cout<<endl;

getch ();

return 0;

}


Задача 4

#include <iostrem.h>

#include <conio.h>

#include <stdlib.h>

int main ()

{int a[100], int n; cin>>n;

randomize();

for (int I=0; I<n; I++)

a[I]=random(90);

//-----у зворотному порядку-------

for (I=n-1; I>=0; I--) cout<a[I]<<” “;

cout<<endl;

//-----у парними індексами-------

for (I=0; I<n; I+=2) cout<a[I]<<” “;

cout<<endl;

//-----у непарними індексами-------

for (I=1; I<n; I+=2) cout<a[I]<<” “;

cout<<endl;

//-----які є парними-------

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

if (a[I]%2==0) cout<a[I]<<” “;

cout<<endl;

//-----які є непарними-------

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

if (a[I]%2!=0) cout<a[I]<<” “;

cout<<endl;

getch ();

return 0;

}


Урок № 31

Хід уроку

Етап уроку Діяльність учителя Діяльність учнів
  Організаційний момент Оголосити тему. мотивація Критерії оцінювання:
  • Тестування - О1;
  • Самостійна робота, кожна задача – 4 бал; - О2
  • (О1+О2)/2
Оформити аркуші
  Самостійна робота + тестування Спостереження, забезпечення самостійності виконання завдань По-черзі, тестування та самостійна робота (по варіантах)
  Домашнє завдання Розв’язати інший варіант Записати в зошит

 


Тематична атестація з теми «Масиви у С++»

Варіант 1 Варіант 2
№ 1. Увести масив цілих чисел. Перший елемент поміняти місцями з максимальним #include<iostream.h> #include<conio.h> Int MaxEl(int a[], int n) { int max=a[0]; int L=0; for (int i=1; i<n; i++) if (a[i]>=max) {max=a[i]; L=i;} return L; } //----------------------------------------- void _Input(int*, int); void _Print(int*, int); //-------------------------------------------- int main() { int n, *a; //розмір та масив cout<<“n=”; cin>>n; a=new int [n]; _Input(a, n); cout<<“mas:\n”; _Print(a, n); int L=MaxEl(a, n) int tenp=a[1]; a[1]=a[L]; a[L]=temp; _Print(a, n); delete []a; getch (); retutn 0; } //--------функції------------------------ void _Input(int*a, int n); { for(int i=0; i<n; i++) cin>>a[i]; } //--------------------------------------- void _Print(int*a, int n); { for(int i=0; i<n; i++) cout<<a[i]<<“ “; cout<<endl; } //-------------------------------------- № 1 Увести масив цілих чисел. Останній елемент поміняти місцями з мінімальним #include<iostream.h> #include<conio.h> Int MinEl(int a[], int n) { int min=a[0]; int L=0; for (int i=1; i<n; i++) if (a[i]<=min) {min=a[i]; L=i;} return L; } //----------------------------------------- void _Input(int*, int); void _Print(int*, int); //-------------------------------------------- int main() { int n, *a; //розмір та масив cout<<“n=”; cin>>n; a=new int [n]; _Input(a, n); cout<<“mas:\n”; _Print(a, n); int L=MinEl(a, n) int tenp=a[n]; a[n]=a[L]; a[L]=temp; _Print(a, n); delete []a; getch (); retutn 0; } //--------функції------------------------ void _Input(int*a, int n); { for(int i=0; i<n; i++) cin>>a[i]; } //--------------------------------------- void _Print(int*a, int n); { for(int i=0; i<n; i++) cout<<a[i]<<“ “; cout<<endl; } //--------------------------------------

 

№ 2. У підрозділі Y є 15 співробітників, а в G – 20. протягом місяця вони відпрацювали певну кількість днів, яка задана як випадкове число зі значенням від 0 до 31. Скільки осіб у кожному підрозділі працювали більше 15 днів? #include<iostream.h> #include<conio.h> #include<stdlib.h> Int F(int a[], int n) { int K=0; for (int i=0; i<n; i++) if (a[i]>=15) K++ return K; } //----------------------------------------- void _Input(int*, int); void _Print(int*, int); //-------------------------------------------- int main() {randomize(); int *y; //розмір та масив y=new int [15]; _Input(y, 15); cout<<“mas:\n”; _Print(y, 15); int L=F(y, 15) cout<<”y=”<<L<<endl; delete []y; int *g; //розмір та масив g=new int [20]; _Input(g, 20); cout<<“mas:\n”; _Print(g, 20); int L=F(g, 20) cout<<”g=”<<L<<endl; delete []g; getch (); retutn 0; } //--------функції------------------------ void _Input(int*a, int n); { for(int i=0; i<n; i++) a[i]=random(31); } //--------------------------------------- void _Print(int*a, int n); { for(int i=0; i<n; i++) cout<<a[i]<<“ “; cout<<endl; } //-------------------------------------- № 2. У підрозділі Y є 15 співробітників, а в G – 20. протягом місяця вони відпрацювали певну кількість днів, яка задана як випадкове число зі значенням від 0 до 31. Скільки осіб у кожному підрозділі працювали менше, ніж 10 днів? #include<iostream.h> #include<conio.h> #include<stdlib.h> Int F(int a[], int n) { int K=0; for (int i=0; i<n; i++) if (a[i]<=10) K++ return K; } //----------------------------------------- void _Input(int*, int); void _Print(int*, int); //-------------------------------------------- int main() {randomize(); int *y; //розмір та масив y=new int [15]; _Input(y, 15); cout<<“mas:\n”; _Print(y, 15); int L=F(y, 15) cout<<”y=”<<L<<endl; delete []y; int *g; //розмір та масив g=new int [20]; _Input(g, 20); cout<<“mas:\n”; _Print(g, 20); int L=F(g, 20) cout<<”g=”<<L<<endl; delete []g; getch (); retutn 0; } //--------функції------------------------ void _Input(int*a, int n); { for(int i=0; i<n; i++) a[i]=random(31); } //--------------------------------------- void _Print(int*a, int n); { for(int i=0; i<n; i++) cout<<a[i]<<“ “; cout<<endl;} //-------


Поделиться:


Последнее изменение этой страницы: 2016-06-06; просмотров: 739; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.24.238 (0.024 с.)