Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Тема 6.8. Структуры и объединенияСодержание книги Поиск на нашем сайте Студент должен: знать: ¨ понятия: структура, объединение, конструктор, деструктор; ¨ способы описания структур и т.д.; ¨ сферы применения уметь: ¨ описывать и применять структуры, объединения; ¨ описывать и применять конструкторы и деструкторы
Структура как тип данных. Объединение разнотипных данных. Особенности применения структур и объединений и их различия. Конструкторы и деструкторы. Вопросы и задания для самопроверки:
Рекомендуемая литература: 1.1, 1.2, 2.4, 2.6
Тема 6.9. Классы в С++ Студент должен: знать: ¨ понятия: класс, наследование, потомок, предок; ¨ основные свойства классов; ¨ описание классов уметь: ¨ применять классы; ¨ использовать принципы наследования; ¨ создавать классы
Понятие класса. Наследование, потомок, предок. Основные свойства классов. описание и применение классов в С++. Принципы наследования. Вопросы и задания для самопроверки:
Рекомендуемая литература: 1.1, 1.2, 2.4, 2.6
Тема 6.10. Графические операторы в С++ Студент должен: знать: ¨ графические функции; ¨ особенности использования графики; уметь: ¨ инициализировать графику в С++; ¨ применять графические функции; ¨ осуществлять движение графических объектов Графическая библиотека graphics.h. Инициализация графики. Графические функции. Организация движения графических объектов. Вопросы и задания для самопроверки:
Рекомендуемая литература: 1.1, 1.2, 2.4, 2.6
Тема 6.11. Стадии и команды процессорной обработки Студент должен: знать: ¨ стадии процессорной обработки; ¨ команды процессорной обработки; ¨ директивы замены, подстановки уметь: ¨ выделять стадии процессорной обработки; ¨ применять команды замены и подстановки
Стадии и команды процессорной обработки. Директивы замены и подстановки. Особенности работы компилятора. Представление директив в программном коде после обработки компилятора.
Вопросы и задания для самопроверки:
Рекомендуемая литература: 1.1, 1.2, 2.4, 2.6
Классная контрольная работа по темам “Массивы в Pascal” и “Подпрограммы в Pascal” (2 часа) Примерные задания на контрольную работу:
ДОМАШНЯЯ КОНТРОЛЬНАЯ РАБОТА
ТРЕБОВАНИЯ К ВЫПОЛНЕНИЮ: 1. Оформить контрольную работу в отдельной тетради 2. Указать вариант, который определяется по последней цифре в шифре 3. Должны присутствовать тексты задач 4. К каждой задаче необходимо составить алгоритм решения в виде блок-схемы 5. Привести листинги программ 6. Язык программной реализации – С++ 7. К контрольной работе приложить дискету с действующими программами 8. На проверку принимаются только аккуратно оформленные контрольные работы 9. Список литературы в соответствие со стандартом
I ВАРИАНТ 1. Вычислить все значения функции y = если х принадлежит интервалу [-4; 5] и изменяется с шагом 0.2
2. Найти максимальный и минимальный элементы массива S(n) и поменять их местами
3. В матрице N для каждой строки найти число элементов кратных 5
4. Определить разность факториалов двух чисел a и b. Факториал вычислять через функцию
II ВАРИАНТ 1. Вычислить все значения функции p = если х принадлежит интервалу [-8; 10] и изменяется с шагом 0.15
2. Найти произведение отрицательных элементов массива А(m)
3. Дана матрица. Определить номера строк наибольшего и наименьшего элементов
4. Определить сумму факториалов двух чисел a и b. Факториал вычислять через функцию
III ВАРИАНТ 1. Вычислить все значения функции z = если х принадлежит интервалу (-1.57; 1.57) и изменяется с шагом 0.1 2. Вывести на экран все положительные элементы массива X(n), номера которых кратны 3
3. Записать и подсчитать количество отрицательных элементов в матрице и вместо них записать нули
4. Определить произведение факториалов двух чисел a и b. Факториал вычислять в функции
IV ВАРИАНТ 1. Вычислить все значения функции v = если х принадлежит интервалу (0; 3.14) и изменяется с шагом 0.25 2. Вычислить среднее геометрическое значение элементов массива Y(20)
3. Найти сумму и количество ненулевых элементов, находящихся на главной диагонали матрицы F(m, m)
4. Определить факториалы двух чисел a и b. Факториал вычислять через функцию
V ВАРИАНТ
1. Вычислить все значения функции v = если х принадлежит интервалу (-2; 15] и изменяется с шагом 1.1
2. Найти произведение элементов массива С (n), имеющих нечётные номера
3. Определить максимальный по модулю элемент массива А(30) и его порядковый номер, если А(i)<-2
4. Вычислить z = (x1+y1)/(x2-y2), где х1 и х2 - корни уравнения 2х2-13х+20 = 0; y1 и y2- корни уравнения y2+8y+15=0. x1, x2, y1 и y2 вычислять через функцию
VI ВАРИАНТ 1. Вычислить все значения функции v = если х принадлежит интервалу [-4; 5] и изменяется с шагом 0.2; h изменяется от 0 с тем же шагом
2. Найти сумму и количество элементов массива Y(15), которые лежат в диапазоне от 5 до 34 включительно
3. Записать на месте отрицательных элементов матрицы D(4, 5) нули, а на месте положительных - единицы
4. Определить периметры трёх треугольников, заданных координатами вершин через генератор случайных чисел. Периметр вычислять с помощью функции
VII ВАРИАНТ 1. Вычислить функцию y = tg(x) / (x-2) на определённом интервале с определённым шагом. Учитывать ОДЗ
2. Найти номер максимального по модулю элемента массива Z(n) из диапазона от -50 до 3 включительно
3. Вычислить сумму отрицательных элементов двумерного массива T(8, 5), находящихся над главной диагональю
4. Определить площади двух треугольников, заданных длинами сторон (через клавиатуру), по формуле Герона. Полупериметр вычислять с помощью функции
VIII ВАРИАНТ 1. Найти корень уравнения x-1/(3+sin(3.6x)) = 0 на интервале [0; 0.85]. Шаг изменения х равен 0.05
2. Переписать отрицательные элементы массива S(12) в массив P
3. В двумерном массиве A(n, m) расположить под главной диагональю единицы
4. Определить корни уравнений y = ax2 + bx + c и z = a1x2 + b1x +c1. Использовать функцию
IX ВАРИАНТ 1. Найти корень уравнения ln(x)-x+1,8=0 на интервале [2; 3]. Шаг изменения х равен 0.03
2. Переписать номера нулевых элементов массива X(m) в массив T
3. Вычислить суммы элементов каждого столбца матрицы C(k, f)
4. Дано два массива Y(n) и X(m). С помощью функции найти количество отрицательных элементов в каждом массиве
X ВАРИАНТ 1. Найти s = 1 + cos(x) + cos(2x) +... + cos(nx), где х изменяется от 0 до 3 с шагом 0.2
2. Заменить все положительные элементы массива S(k) на отрицательные и наоборот
3. Вычислить произведения элементов каждого столбца матрицы Z(n, m)
4. Создать матрицу в виде таблицы умножения. Произведения вычислять через функцию
XI ВАРИАНТ 1. Найти y = sin(x) + sin(x/2) +... + sin(x/n), где х изменяется от 1 до 5 с шагом 0,5
2. Дан массив x(n). Определить количество отрицательных элементов в массиве. Заменить все отрицательные элементы в массиве на их количество
3. В матрице z(n, m) расположить по главной диагонали максимальные элементы из каждой строки
4. Определить наибольший из трёх факториалов от чисел a, b и c. Факториал вычислять через функцию
РЕКОМЕНДАЦИИ ПО РЕШЕНИЮ КОНТРОЛЬНОЙ РАБОТЫ
В качестве примера рассмотрим решение задач XI варианта. Все приведённые ниже рассуждения необязательно указывать в Вашей контрольной работе, они использованы только для лучшего понимания Вами хода решения. В соответствие с требованиями к оформлению контрольной работы сначала описано условие задачи, затем алгоритм решения в виде блок-схемы и листинг (текст) программы на языке С++.
Задача №1 Найти y = sin(x) + sin(x/2) +... + sin(x/n), где х изменяется от 1 до 5 с шагом 0,5 Решение: Исходные данные: n – количество вычислений синусов; значение x, которое изменяется от 1 до 5; шаг изменения равный 0,5. Выходные данные: y – сумма синусов от x. Поскольку x изменяется от 1 до 5 с шагом 0,5, то n будет равнять (5-1)/0,5+1=9, т.е. начальное значение минус конечное, разделить на шаг и прибавить единицу, т.к. необходимо учитывать ещё и начальное значение. Лучше всего для вычисления суммы синусов использовать параметрический цикл по параметру i от 1 до n c шагом единица. Конечное значение y определяется последовательным накоплением суммы, что означает постепенное увеличение y с помощью формулы y = y + sin(x/i). Для y сделаем вывод с комментариями cout<<"y="<<y;. На экране получим число 5.443581. В самом начале программы подключаются необходимые для работы библиотеки: iostream.h, conio.h, math.h. Комментарии в листинге программы указаны в скобках /* */ или после двух обратных слешей “//”. Алгоритм решения представлен на рис.1.
Задача №2 Дан массив x(n). Определить количество отрицательных элементов в массиве. Заменить все отрицательные элементы в массиве на их количество Решение: Исходные данные: массив x, состоящий из положительных и отрицательных целых чисел; размерность этого массива n, но т.к. заранее неизвестно значение n, то описывать будем массив на 50 элементов. Выходные данные: k – количество отрицательных элементов в массиве x(n); массив с изменёнными данными. Для задания массива будем использовать параметрический цикл по i, где i – это номер элемента массива. В цикле через генератор случайных чисел присваиваем каждому элементу массива какое-либо значение, например, в диапазоне от -20 до +20. Осуществить это можно при помощи следующей записи x[i]:=random(41)-20; random(y) – генератор случайных чисел, который выбирает случайным образом число в диапазоне от 0 до y-1. В нашем примере от начальной и конечной границ отнимаем 20 и получаем необходимый диапазон. В этом же цикле выводим массив на экран и подсчитываем количество отрицательных элементов. Вывод элементов массива оператором cout<<x[i]<<'\t' означает, что после каждого элемента производится табуляция для разделения. Организуем другой цикл, в котором заменяем отрицательные элементы на их количество и выводим на экран. В начале программы подключаются библиотеки: iostream.h – стандартная библиотека ввода/вывода, stdlib.h – библиотека для работы со случайными числами с помощью функций randomize() и random(), conio.h – функции очистки экрана и задержки выполнения программы.
Алгоритм: см. рис. 2. Листинг программы: #include<iostream.h> // подключение стандартной библиотеки ввода-вывода #include<stdlib.h> //подключение библиотеки для работы с генератором случайных чисел #include<conio.h> // подключение библиотеки по работе с экраном main() // главная функция { clrscr();// очистка экрана (библиотека conio.h) int i,n,x[50],k=0; // описание целочисленных переменных с инициализацией и массива cout<<"введите размерность массива "; // вывод на экран сообщения cin>>n; // ввод значения переменной n randomize(); // функция, которая меняет набор случайных чисел cout<<"исходный массив \n"; // вывод сообщения с переходом на новую строку (\n) for(i=0;i<n;i++) // параметрический цикл { // начало цикла x[i]=random(41)-20; // заполнение массива случайным образом if (x[i]<0) k++; // условие для подсчёта количества отрицательных элементов cout<<x[i]<<'\t'; // вывод элементов массива на экран с использованием табуляции } // конец цикла cout<<"\n количество отрицательных = "<<k; // переход на новую строку и вывод k cout<<"\n\n\изменённый массив\n"; // вывод двух пустых строк и сообщения for(i=0;i<n;i++) // параметрический цикл { // начало цикла if (x[i]<0) x[i]=k; // замена элементов по условию cout<<x[i]<<'\t'; // вывод элементов изменённого массива } // конец цикла getch();// функция, которая возвращает значение нажатой клавиши } // завершение программы
Рис. 2. Блок-схема к задаче №2. Задача №3 В матрице z(n, m) расположить по главной диагонали максимальные элементы из каждой строки Решение: Исходные данные: матрица z(n, m), т.е. двумерный массив; n и m –количество строк и столбцов (размерность массива). Выходные данные: изменённый массив, где по главной диагонали расположены максимальные элементы каждой строки. Двумерный массив зададим с помощью двух вложенных параметрических циклов: первый цикл по i будет определять строки, второй по j - столбцы. Сами элементы выбираются произвольным образом генератором случайных чисел random, randomize – служит для смены набора случайных чисел, т.е. при каждом новом запуске программы элементы в массиве меняются. Для того чтобы массив при выводе на экран был похож на матрицу после вывода элементов каждой строки cout<<z[i][j]<<’\t’ применим оператор cout<<’\n’, который осуществляет переход на новую строку. В следующих вложенных циклах определяем максимальный элемент в строке. Организуем цикл по строкам (параметр i); переменной max присваиваем нулевой элемент каждой строки, для того чтобы произвести сравнение. Организуем цикл по столбикам (параметр j); сравниваем max со всеми элементами i-й строки. Если найдётся элемент больший max, то max присваиваем этот элемент, а переменным imax и jmax – номера строки и столбца максимального элемента. Закрываем цикл по столбцам, производим переприсваивание, для этого на месте максимального элемента пишем элемент с главной диагонали и наоборот.
Алгоритм в виде блок-схемы: см. рис. 3.
Листинг программы: #include<iostream.h> // стандартная библиотека ввода/вывода #include<stdlib.h> // библиотека для использования генератора случайных чисел #include<conio.h> // библиотека, в которой содержатся функции clrscr() и getch() main() { // главная функция, начало программы int z[50][50],i,j,max,imax,jmax,n,m; //описание целых переменных и массива randomize(); // функция, которая меняет набор случайных чисел clrscr(); // функция для очистки экрана cout<<"введите размерность \n"; //вывод надписи на экран с переходом на новую строку cin>>n>>m; // ввод значений переменных n и m cout<<"\nисходная матрица:\n"; // вывод надписи на экран с переходом на новую строку for (i=0;i<n;i++) // внешний параметрический цикл по строкам { // начало внешнего цикла for (j=0;j<m;j++) // внутренний параметрический цикл по столбцам { // начало внутреннего цикла z[i][j]=random(40); // заполнение матрицы случайными числами от 0 до 39 cout<<z[i][j]<<'\t'; // вывод элементов на экран с использованием табуляции } // конец внутреннего цикла cout<<'\n';} // переход на новую строку для вывода матрицы в общепринятом виде //циклы для определения максимального в строке и перестановки элементов for (i=0;i<n;i++) // цикл по строкам { max=z[i][0]; imax=i; jmax=0; /* предположим самый максимальный элемент строки находится в нулевом столбике каждой строки */ for (j=0;j<m;j++) // цикл по столбцам if (z[i][j]>max) { // с помощью условия определяется максимальный элемент в каждой строке max=z[i][j]; // присваивание максимального элемента imax=i;jmax=j; } // определение индексов максимального элемента z[imax][jmax]=z[i][i]; // максимальный элемент заменяется элементом с главной диагонали z[i][i]=max;} // на главную диагональ записываем максимальный элемент из каждой строки cout<<"\nизменённая матрица:\n"; // вывод текста на экран с переходом на новую строку for (i=0;i<n;i++) // цикл по строкам для преобразованной матрицы { for (j=0;j<m;j++) // цикл по столбцам для преобразованной матрицы cout<<z[i][j]<<'\t'; // вывод матрицы на экран cout<<'\n'; // переход на новую строку для вывода матрицы в общепринятом виде } // закрытие внешнего цикла по строкам getch();} // функция, которая возвращает значение нажатой клавиши
Рис. 3. Алгоритм в виде блок-схемы к задаче №3 Задача №4 Определить наибольший из трёх факториалов от чисел a, b и c. Факториал вычислять через функцию Решение: Исходные данные: a, b, c – целые числа. Выходные данные: наибольший из факториалов от трёх чисел. По условию задачи факториал вычисляется через функцию (назовём её factorial). Функция на блок-схеме оформляется отдельно. Вызов подпрограммы на блок-схеме обозначается добавлением линий с обеих сторон блока вызова (рис. 4).
Рис. 4. Вызов подпрограммы в основной программе
Факториал от какого-либо x – это произведение всех чисел от единицы до x. Математически факториал запишется следующим образом: return f; Параметры, описанные в заголовке подпрограммы, называют формальными. В данном случае присутствует только один формальный параметр - он же является входным - x. Фактическими являются параметры, которые передаются из основной программы при вызове подпрограммы. В нашей задаче функцию будем вызывать три раза, поскольку факториал необходимо вычислять для трёх чисел a, b и c. Следовательно, фактическими параметрами при каждом следующем вызове функции станут a, b и c, соответственно. Кроме этого все переменные можно разделить на локальные и глобальные. Локальные – доступны только в том блоке, где они описаны, например в подпрограмме. Глобальные переменные доступны как в подпрограмме, так и основной программе. Мы используем локальные параметры – i, f, т.к. данные переменные применяются только в функции. Остальные переменные будут глобальными. Для вычисления факториала используется тип long, который является целочисленным типом, но имеет больший диапазон значений, чем основной целочисленный тип - int.
Алгоритм в виде блок-схемы: см. рис. 5. Листинг программы: #include<iostream.h> // библиотека ввода/вывода #include<conio.h> // библиотека работы с экраном main() // главная функция {long factorial(int x); // прототип пользовательской функции int a,b,c; long fa,fb,fc,p; // описание переменных целого и длинного целого типов clrscr(); // очистка экрана cout<<”введите три числа \n”; cin>>a>>b>>c; // вывод сообщения и ввод значений переменных fa=factorial(a); fb=factorial(b); fc=factorial(c); // вызов функции для вычисления факториала cout<<"\n наибольшим является факториал "; // вывод сообщения if (fa>=fb && fa>=fc) p=fa; //если факториал а – наибольший, то p присваивает его значение if (fb>=fa && fb>=fc) p=fb; //если факториал b – наибольший, то p присваивает его значение if (fc>=fa && fc>=fb) p=fc; //если факториал c – наибольший, то p присваивает его значение cout<<p; // вывод на экран наибольшего факториала getch(); } // задержка выполнения программы, завершение программы long factorial(int x) // заголовок пользовательской функции { long i, f=1; // описание и инициализация локальных переменных for (i=1; i<=x; i++) f*=i; // цикл для вычисления факториала, используется сокращённая запись return f;} // функция возвращает значение переменной f
Рис. 5. Блок-схема к задаче №4 ПРИМЕРНЫЙ ПЕРЕЧЕНЬ ВОПРОСОВ К ЭКЗАМЕНУ
Алгоритмизация и Pascal
40. Описание файловых переменных: типизированных, нетипизированных и текстовых. Различия в использовании 41. Функции и процедуры для работы с файлами
51. Понятия и свойства ООП: инкапсуляция, полиморфизм, наследование, иерархия 52. Алгоритмы отделения корней в программировании: метод половинного деления, хорд, касательных 53. Алгортмы вычисления интегралов в программировании: метод правых и левых прямоугольников, трапеций, Симпсона Язык программирования С++ 54. Примерная структура программы на С++, назначение файла iostream.h 55. Лексические основы С++: алфивит, идентификаторы, константы, разделители 56. Описание, диапазон основных скалярных типов С++ 57. Особенности описания переменных и типов в сравнении с Pascal 58. Осуществление преобразования типов: явное и неявное 59. Составление арифметических выражений, сокращённые записи 60. Составление логических выражений и правила их записи 61. Организация ввода/вывода, применение символьных констант 62. Общий вид и назначение условного оператора. Провести сравнение с Pascal 63. Общий вид, назначение и примеры использования оператора-переключателя 64. Оператор перехода: общий вид записи, метки, сравнение с Pascal 65. Циклические операторы: виды циклов, особенности применения 66. Организация вложенных циклов в С++ 67. Прерывание программы или её автономной части: операторы break, continue 68. Принципы создания и применения пользовательских функций на конкретном примере 69. Параметры функций: виды, назначение, использование в программе. Функции, использующие параметры по умолчанию 70. Назначение и описание прототипов функций 71. Создание собственной библиотеки функций: этапы разработки, подключение, правила использования 72. Описание и ввод/вывод одномерных массивов в С++ 73. Описание и ввод/вывод многомерных массивов в С++ 74. Указатели в С++: процедуры и функции для работы с динамической памятью 75. Создание структур и объединений в С++ 76. Классы в С++: назначение, создание, свойства 77. Охарактеризуйте стадии процессорной обработки 78. Команды процессорной обработки: включение файлов, директива замены 79. Процедуры и функции заголовочного файла conio.h, их описание и назначение 80. Графическая библиотека: файл “graphics.h”, процедура инициализации, примеры использования 81. Графические функции: описания, примеры использования
ПРИМЕРНЫЕ ПРАКТИЧЕСКИЕ ЗАДАНИЯ К ЭКЗАМЕНУ
ПРИМЕРНЫЙ ПЕРЕЧЕНЬ ЛАБОРАТОРНО-ПРАКТИЧЕСКИХ ЗАНЯТИЙ
СПИСОК ЛИТЕРАТУРЫ: 1. Основная: 1.1. Киммел П. Borland C++ 5. - СПб: BHV, 1997. 1.2. Подбельский В.В. Язык С++: Учеб. пособие. – 3-е изд., дораб. – М.: Финансы и статистика, 1998. 1.3. Попов В.Б. Turbo Pascal для школьников: Учеб. пособие. – 3-е доп. изд. – М.: Финансы и статистика, 1999 1.4. Сухарев М. Turbo Pascal 7.0, теория и практика программирования. – СПб: Наука и Техника, 2003. 1.5. Турбо Паскаль 7.0. – К.: Издательская группа BHV, 1996 1.6. Шаммас Н.К. Основы СИ++ и объектно-ориентированного программирования. – К.: Диалектика, - 1996. 2. Дополнительная: 2.1. Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов. – М.: Радио и связь, 1991. 2.2. Епанешников А.М., Епанешников В.А. Программирование в среде Turbo Pascal 7.0 – 3-е изд. – М.: Диалог-МИФИ, 1997. 2.3. Есипов А.С. Информатика. Учебник по базовому курсу общеобразовательных учебных заведений. Изд. 2-е, доп. и перераб. – СПб: Наука и Техника, 2001. 2.4. Ишкова Э.А. С++. Начала программирования – М.: ЗАО “Издательство БИНОМ”, 2000. 2.5. Марченко А.И., Марченко Л.А. Программирование в среде Turbo Pascal 7.0/ под ред. Тарасенок В.П. – 6-е изд., стереотипное, юбилейное. – К.: ВЕК+, 2000. 2.6. Сван Т. Освоение Borland C++ 5. - К.: Диалектика, 1996. 2.7. Фаронов В.В. Турбо-Паскаль 7.0. – М.: Нолидж, 1997.
|
||||||||
|
Последнее изменение этой страницы: 2017-02-17; просмотров: 170; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.198 (0.013 с.) |