Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ РАДІОЕЛЕКТРОНІКИ
МЕТОДИЧНІ ВКАЗІВКИ
ДО САМОСТІЙНОЇ РОБОТИ СТУДЕНТІВ З КУРСУ
ХАРКІВ 2011
1. МЕТА І ЗАВДАННЯ ДИСЦИПЛІНИ
Метою викладання дисципліни є формування у студентів знань та практичних навичок по алгоритмізації та програмуванню задач для реалізації їх на сучасних ПК.
1.2 Програма знань і умінь
За результатом вивчання дисципліни студенти повинні:
ЗНАТИ: основи алгоритмізації задач, основи організації обчислювального процесу на ПК, засоби програмування мовою С++ в системі VISUAL C++;
ВМІТИ: розробляти алгоритми, проектувати та відлагоджувати програми мовами С++ в системі VISUAL C++ .
Розділи курсу, що пропонуються для самостійного вивчення
1. Перетворення чисел із однієї системи в іншу. 1
2. Бітова арифметика. 2
3. Різноманітності алгоритмів. Засоби розробки алгоритмів. 2
4. Адресна арифметика. 2
5. Структури та обєднання. 2
6. Механізми взаємодії функцій. 4
7. Керування пам'яттю. 4
8. Черги, списки, стеки. 4
9. Керування розміром області кучі та стека. 4
10. Алгоритми пошуку та сортування. 4
Підготовка до лекцій, практичних та лабораторних робіт - 54 год.
2/ Самостійна підготовка студентів
2.1 Лабораторні роботи
зміст. Модул |
Теми занять |
обсяг, год. |
рейт, оцінка. |
літер, джер. |
1 |
2 |
3 |
4 |
5 |
1 |
Знайомство з оболонкою C++ Рішення задач із простими змінними Програмування алгоритмів розгалуження |
4 |
7-13 |
5.1 5.2 5.3 |
1 |
Рішення задач з використанням масивів. Масиви і їх стосунок з покажчиками. |
4 |
7-13 |
5.1 5.2 5.3 |
2 |
Строкові дані. Функції обробки строкових даних. |
4 |
7-13 |
5.1 5.2 5.3 |
2 |
Рішення задач з використанням структур. |
4 |
7-13 |
5.1 5.2 5.3 |
2 |
Функції. Засоби передачі параметрів. Посилання. |
4 |
7-13 |
5.1 5.2 5.3 |
Загальна кількість |
20 |
35-65 |
2/2. Практичні заняття
№ зміст. Модулю |
Теми занять |
обсяг, год. |
рейт, оцінка. |
літер, джер. |
1 |
2 |
3 |
4 |
5 |
1 |
Типові засоби розробки алгоритмів. Структура простих програм. Операції та вирази в C++, їх пріоритет. Оператори керування обчислювальним процесом Програмування алгоритмів розгалуження |
2 |
0-3 |
5.1 5.3 |
1. |
Масиви. Покажчики. Адресна арифметика.. |
2 |
0-3 |
5.1 5.3 |
3. |
Загальна кількість |
4 |
0-6 |
2.3. Самостійна робота студента
№ зміст, мод. |
Вид самостійної роботи |
обсяг, год |
форма СРС |
ВИД контр олю |
літер, джер. |
1,2 |
Вивчення конспекту лекцій |
18 |
Опрацюван ня лекційного . матеріалу та мет. вказівок |
усне опитув ання |
5.3 |
1,2 |
Підготовка до лабораторних робіт |
20 |
Опрацюван ня лекційного матеріалу та мет. вказівок |
усне опитув ання тест |
5.1, 5.3 |
1,2 |
Підготовка до практичних занять |
6 |
Опрацюван ня лекційного матеріалу та мет. вказівок |
Усне опитув ання Тест |
5.1, 5.3 |
1 4 5 |
Вивчення додаткових тем за літературними джерелами: 1. Перетворення чисел із однієї системи в іншу. Внутрішнє уявлення чисел в ЕОМ. Бітова арифметика. 2. Динамічні змінні. Керування розміру області кучі та стека. 3. Динамічний розподіл пам'яті. Керування пам'яттю. Черги, списки, стеки. 4. Алгоритми пошуку та сортування. |
23 |
1Опрацюван ня додаткових матеріалів та мет. вказівок |
Усне опитув ання |
5.2 |
Загальна кількість |
67 |
2.5 Рекомендована література
2.5.1 Основна література
2.5.2 Додаткова література
4. Страуструп Б. Язык программирования Си++. Часть 1,2. Киев: "ДиаСофт", 1993. 560 с.
5. Х.М.Дейтел, П.Дж. Дейтел. Как программировать на С++.- М.:ЗАО «Издательство БИНОМ», 2000 г. 1024 с.
6. Глушаков С.В. и др. Язык программирования С++. - Харьков: Фолио, 2002. - 500с.
7. Ван Тассел Д. Стиль, разработка, отладка и испытание программ.-M.:Мир,1985.
8. Жешке Р. Толковый словарь стандарта языка Си: С.-Петербург: Питер, 1994. 221с
9. Холзнер С. Microsoft Visual C++ с самого начала. СПб. , Питер, 1998.-480с.
3. Характеристика підручників і навчальних посібників
Найбільш зрозуміло для починаючого програміста основи мови С викладено в книзі /1/. Тут приведено багато прикладів поступового освоєння (окремі уроки) по вивченню мови С. Приклади програм дають можливість поглибити свої знання. У книгах /2,4,6/ приведена докладна довідкова інформація про програмування мовою С++.
Книга /3/ присвячена викладу фундаментальних принципів побудови ефективних і надійних алгоритмів. Містить опис і аналіз основних алгоритмів пошуку і сортування.
Книга /5/ пропонує повний курс вивчення С++. Містить безліч корисних порад і рекомендацій, включає тематичні питання і завдання для самостійної роботи. Крім основ мови С++, у книзі /6/ описані деякі найважливіші функції мови С. Описана робота зі зв'язними списками, чергами, стеками.
Приклади програм можна знайти також у роботах /4,6,8/. В книзі /7/ приведено оригінальні правила, методи та підходи до розробки . Основи програмування в середовищі Microsoft Visual C++ найкраще приведено в книзі /9/.
4. Методичні вказівки з вивчення курсу
1. Бритик В.И., Мегель Ю.Е. Программирование на объектно-ориентированном языке С++: Учебное пособие для вузов/ М-во образования Украины.-К.,2001.-425с.
2. Лекцiї з курсу “Програмування” (електронний варіант).
3. Методичні вказівки до виконання лабораторних робіт з дисципліни “Програмування” для студентів спеціальностей КСМ, СКС, СП. Електронний варіант. Автори: Руденко Д.О., Долженкова Т.Г., Бєлова Н.В.
5. Методичні вказівки з курсового проектування з дисципліни “Програмування” для спеціальностей КСМ, СКС, СП. Електронний варіант. Автори: Руденко Д.О., Долженкова Т.Г., Бєлова Н.В.
5. Індивідуальні розрахункові завдання, контрольні запитання
5.1 Список запитань до курсу
5.2 Індивідуальні розрахункові завдання.
Приклади завдань.
1. У матриці А(5,5) знайти суми елементів рядків та помістити їх у масив. Відсортувати масив по правилу спадання.
2. У кожному стовпці матриці В(7,7) знайти кількості парних елементів. У отриманому масиві поміняти місцями максимальний та мінімальний елементи.
3. У матриці С(6,6) серед елементів, які стоять нижче головної діагоналі, підрахувати кількість парних чисел, а серед елементів вище головної діагоналі підрахувати кількість непарних елементів. Знайти максимум серед елементів побічної діагоналі.
4. У кожному стовпці матриці D(5,5) знайти кількість елементів, які діляться на 3. Відсортувати по зростанню знайдений масив.
5. У рядках матриці E( 7,7 ) з відємними елементами на головній діагоналі знайти мінімальні елементи, а серед них максимальний.
6. У матриці F(5,5) в рядкках з відємним елементом в другому стовпці знайти максимальні елементи , а серед них- мінімальний.
7. В кожному рядку матриці G(4,4) підрахувати кількість елементів більших, ніж задане значення х, та записати їх до масиву. Відсортувати цей масив за правилом спадання.
8. Серед елементів матриці H(5,5), які стоять нижче головної діагоналі, відібрати до масиву елементи, які діляться на 5, та знайти у ньому максимум.
9. Відсортувати елементи головної діагоналі матриці X(6,6) з визначенням номеру рядка з максимальним елементом.
10. У кожному стовпці матриці A(7,7) підрахувати кількість парних елементів та відсортувати отриманий масив.
11. У матриці Z(10,10) номери елементів, що повторюються в кожному стовпці, записати в масив S і відсортувати його за зростанням.
12. Виділити з тексту слово з найбільшою кількістю голосних звуків.
13. Знайти в тексті найбільше слово, яке складається тільки з цифр.
14. Виділити з тексту слова, які починаються і закінчуються цифрою.
15. Розмістити у реченні слова за зростанням кількості літер у слові.
16. Розмістити у реченні слова за спаданням кількості цифр у слові.
17. До відсортованого за зростанням кількості літер масиву слів речення вставити довільні два слова, не змінюючи встановленого порядку. Сортування застосовувати не можна.
18. У заданому тексті треба ліквідувати зайві пропуски або добавити деяку кількість пропусків, залишивши між словами задану фіксовану кількість пропусків.
19. Написати функцiю, яка в двох масивах довільного розміру знаходить елементи, які повторюються, і записує їх до третього масиву без повторень.
20. Написати функцiю, яка з масиву цілих чисел довільного розміру вибирає максимальну за довжиною підпослідовність підряд розташованих квадратів чисел, застосовуючи функцію знаходження квадрата числа.
21. Написати функцію, яка із заданого рядка символів вибирає найбільший за довжиною підрядок, який складається тільки з цифр.
22. Написати функцiю, яка проводить злиття двох різних за розмірами відсортованих за зростанням масивів до третього, зберігаючи співвідношення зростання. Сортування не застосовувати.
23. Написати функцiю, яка до відсортованого за зростанням кількості літер у словах текст вставляє довільне слово, не порушуючи встановленого порядку. Сортування не застосовувати.
6. Основні рекомендації з організації самостійної роботи (графік вивчення дисципліни)
Самостійна робота виконується по мірі вивчення основного змісту курсу. Самостійна робота включає: підготовку до лекцій, до практичних та лабораторних робіт, виконання курсової роботи, а також самостійне вивчення матеріалу, наведеного в розділі 2.2. Засвоєння теоретичного та практичного матеріалу, що вивчений самостійно, перевіряється при виконанні контрольних робіт, індивідуальних завдань, курсової роботи, а також на модульному екзамені. Необхідний теоретичний матеріал можна знайти у літературі, аналіз якої приведено в розділі 3.
7. Приклади розвязання типових задач
Приклади виконання лабораторних та практичних робіт наведено у відповідних методичних вказівках. Приклади програмування індивідуальних завдань наводяться нижче.
Приклад 1 до виконання індивідуальної роботи. Для заданої матриці зробити обчислення середнього значення кожного її стовпця з використанням функції введення розмірності матриці, функції введення матриці і функції одержання середнього значення стовпців.
#include <iostream .h>
const int mincol = 1;
const int maxcol = 20;
const int minrow = 2;
const int maxrow = 30;
//Функція getnum ( ) для введення кількості рядків і стовпців
int getnum (const char *elemtype , int low , int high )
{ int n;
do {
cout << " Введіть кількість " << elemtype
<< " N від [" << low << "] до [" << high << " ] : ";
cin >> n;
}
while (( n<low) || (n>high));
return n; }
// Функція inmatr ( ) введення елементів матриці
void inmatr ( float matr [ ] [maxcol], int rows , int cols);
{ for (int i =0; i<rows; i++)
{ cout << "Введіть"<< i << "рядок матриці " << endl;
for ( int j =0; j < cols ; j++)
cin >> matr [i][j]; }
cout << endl; }
// Функція srcols ( ) одержання середніх значень стовпців
void srcols ( float matr [ ] [maxcol] , int rows , int cols )
{float sum , sr;
for ( int j = 0; j < cols; j++ )
{ sum =0.0;
for ( int i = 0; i < rows; i++)
sum += matr [i][j];
sr = sum / rows;
cout << "середнє значення стовпця" << j << " = " << sr << endl; }
}
// Головна програма
int main ( )
{ float matr [maxrow] [maxcol];
int rows, cols;
// Введення кількості рядків і стовпців
rows = getnum ( "rows", minrow, maxrow );
cols = getnum ( "colnums" , mincol , maxcol);
// Введення матриці
inmatr ( matr, rows , cols);
// Обчислення середнього значення стовбців матриці
srcols (matr , rows , cols);
return 0;}
Приклад 2. Написати функцію, що змінює місця парних та непарних рядків матриці.
#include<iostream.h>
#include<conio.h>
const n=10;
void inmatr (int**,int,int);
void outmatr (int**,int,int);
void obmen (int**,int);
void main()
{ int a[n][n],*b[n],i,j,kstrok,kstolbcov;
char s[]={'A','B','C'};
for(int k=0;k<3;k++)
{cout<<"Vvedite kolicestvo strok matrici "<<s[k]<<endl;
cin>>kstrok;
cout<<"Vvedite kolicestvo stolbcov matrici "<<s[k]<<endl;
cin>>kstolbcov;
cout<<"Vvedite matricu "<<s[k]<<endl;
for(i=0;i<kstrok;i++)
b[i]=&a[i][0];
inmatr (b,kstrok,kstolbcov);
obmen(b,n);
outmatr (b,kstrok,kstolbcov); }
getch();}
void inmatr (int**x,int kstrok,int kstolbcov)
{ for (int i=0;i<kstrok;i++)
for (int j=0;j<kstolbcov;j++)
cin>>x[i][j]; }
void obmen (int**x,int kstrok)
{ int *p;
for(int i=0;i<kstrok-1;i+=2)
{p=x[i];
x[i]=x[i+1];
x[i+1]=p;}
}
void outmatr (int**x,int kstrok,int kstolbcov)
{ for (int i=0;i<kstrok;i++)
{ cout<<endl;
for (int j=0;j<kstolbcov;j++)
cout<<x[i][j]<<" "; }
cout<<endl; }