Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Тема 6.8. Структуры и объединения ⇐ ПредыдущаяСтр 5 из 5
Студент должен: знать: ¨ понятия: структура, объединение, конструктор, деструктор; ¨ способы описания структур и т.д.; ¨ сферы применения уметь: ¨ описывать и применять структуры, объединения; ¨ описывать и применять конструкторы и деструкторы
Структура как тип данных. Объединение разнотипных данных. Особенности применения структур и объединений и их различия. Конструкторы и деструкторы. Вопросы и задания для самопроверки:
Рекомендуемая литература: 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. Математически факториал запишется следующим образом: . Программно реализуется с помощью последовательного накопления произведения в параметрическом цикле: или, с использованием сокращённых операторов С++, , где i – параметр цикла, начальное значение f присваивается единице. Входной параметр функции x – число, от которого определяем факториал; функция возвращает значение переменной f, т.е. факториал некоторого числа 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; просмотров: 112; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.131.238 (0.192 с.) |