Министерство образования Российской Федерации Государственное образовательное учреждение высшего профессионального образ...
6 downloads
184 Views
436KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Министерство образования Российской Федерации Государственное образовательное учреждение высшего профессионального образования
Северо-Западный государственный заочный технический университет Кафедра компьютерных технологий и программного обеспечения
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ВЫСОКОГО УРОВНЯ Рабочая программа Задания на контрольные работы
Факультет информатики и систем управления Направление и специальность подготовки дипломированного специалиста: 654600 – информатика и вычислительная техника 220100 - вычислительные машины, комплексы, системы и сети Направление подготовки бакалавра 552800 - информатика и вычислительная техника
Санкт-Петербург 2004
2
Утверждено редакционно-издательским советом университета УДК 681.3.06
Программирование на языке высокого уровня: Рабочая программа, задания на контрольные работы. – СПб.: СЗТУ, 2004. - 51 с. Методические указания соответствуют государственным образовательным стандартам высшего профессионального образования по направлению подготовки дипломированного специалиста 654600 «Информатика и вычислительная техника» (специальность 220100 – «Вычислительные машины, комплексы, системы и сети») и направлению подготовки бакалавра 552800. Методический сборник содержит рабочую программу, задания на контрольные работы и методические указания к их выполнению, а также задание на курсовой проект и тестовые задания. Предназначены для студентов 1-го и 2-го курсов факультета информатики и систем управления, изучающих дисциплину «Программирование на языке высокого уровня». Рассмотрено на заседании кафедры КТ и ПО 07.04.2003 г., одобрено методической комиссией факультета информатики и систем управления 05.06.2003 г. Рецензенты: кафедра компьютерных технологий и программного обеспечения СЗТУ (Г.И.Анкудинов, д-р техн. наук, проф.); О.В.Багдасарова, канд. техн. наук, доц. кафедры прикладной и компьютерной оптики СПбГИТМО. Составители: Е.О. Шумова, доц.; Н.В. Рачева, доц.
С С
Северо-Западный государственный заочный технический университет, 2004
3
ПРЕДИСЛОВИЕ Целью изучения дисциплины «Программирование на языке высокого уровня» является овладение студентами приемами программирования на алгоритмическом языке С++ и приобретение практических навыков в решении задач на персональных ЭВМ. Студенты изучают язык С++ в соответствии со стандартом ISO/IES. В данном курсе рассматриваются: стандартные типы данных; операции; выражения; операторы управления вычислительным процессом; указатели; ссылки; функции, возвращающие одно значение, и функции с указателями и ссылками в качестве аргументов. Студенты в общих чертах знакомятся с синтаксисом описания классов, на основе которого задаются пользовательские типы данных. В курсе также рассматривается работа с файлами и динамическими структурами данных. Студенты знакомятся с основными этапами решения задач на ЭВМ: от постановки задачи и разработки алгоритма ее решения до получения исполняемого модуля.
1. СОДЕРЖАНИЕ ДИСЦИПЛИНЫ 1.1. СОДЕРЖАНИЕ ДИСЦИПЛИНЫ ПО ГОС Основные этапы решения задач на ЭВМ. Критерии качества программы. Диалоговые программы. Дружественность, жизненный цикл программы. Постановка задачи и спецификация программы. Способы записи алгоритма. Программа на языке высокого уровня. Стандартные типы данных. Представление основных структур программирования: итерация, ветвление, повторение, функции. Типы данных, определяемые пользователем. Записи. Файлы. Динамические структуры данных. Списки: основные виды и способы реализации. Программирование рекурсивных алгоритмов. Способы конструирования программ. Модульные программы. Основы доказательства правильности.
4
1.2. РАБОЧАЯ ПРОГРАММА (объем дисциплины 270 часов) 1.2.1. Введение [2], c. 6-9 Цели и задачи дисциплины. Основные этапы решения задач на ЭВМ. 1.2.2. Основные элементы языка С++ [1], c. 15-28; [2], c. 17-25 Введение в язык С++. Алфавит. Идентификаторы. Переменные и константы. Основные типы данных. Структура программы. Организация ввода и вывода. 1.2.3. Операции и выражения [1], c. 31-38; [2], c. 26-34 Выражение и его интерпретация. Основные операции и их приоритет. Арифметические операции. Операции инкремента и декремента. Логические операции и операции отношения. Операция условия. Операция присваивания. Операция sizeof. Преобразование типов. Приоритет операций и порядок их выполнения. 1.2.4. Операторы управления [1], c. 40-51; [2], c. 35-45 Условный опеpатоp if. Оператор множественного выбора switch. Операторы цикла: while, for, do while. Дpугие упpавляющие опеpатоpы: break, continue, goto. 1.2.5. Указатели, массивы, ссылки [1], c. 51-60; [2], c. 46-61 Массивы. Понятие указателя. Операции над указателями. Массивы и их связь с указателями. Ссылки. 1.2.6. Функции в С++ [1], c. 73-78; [2], c. 62-72 Общие сведения о функциях. Определение функции. Описание функции. Вызов функции. Функции с указателями в качестве аргументов. Функции со ссылками в качестве аргументов.
5
1.2.7. Область действия и классы памяти [1], c. 97-101; [2], c. 73-78 Область действия переменной. Классы памяти. 1.2.8. Символьные стpоки и опеpации над ними [1], c. 63-64, c. 414-415 Опpеделение стpок в пpогpамме. Ввод стpок. Вывод стpок. Соpтиpовка стpок. Функции, pаботающие со стpоками. Пpеобpазование символьных стpок. 1.2.9. Основы объектно-ориентированного программирования [3], c. 43-96 Введение в объектно-ориентированное программирование. Инкапсуляция. Наследование. Полиморфизм. Объявление классов. Атрибуты доступа членов класса. Объявления объектов типа класс. Конструкторы и деструкторы. Перегрузка операторов. Присваивание объектов. Передача объектов функциям. Объекты в качестве возвращаемого значения функций. Указатель this. 1.2.10. Система ввода/вывода С++ [3], c. 239-270 Иерархия классов библиотеки ввода-вывода. Стандартные потоки для базовых типов. Форматируемый ввод/вывод. Функции width(), precision(), fill(). Манипуляторы ввода/вывода. 1.2.11. Файловый ввод/вывод с применением потоков С++ [3], c.274-300 Создание и обработка файлов. Основы файлового ввода/вывода. Основные функции ввода. Основные функции вывода. Произвольный доступ. Функции управления указателем считывания. Функции управления указателем записи. Контроль состояния ввода/вывода. Ввод/вывод для типов, определенных пользователем. 1.2.12. Связанные типы динамических данных [1], c. 114-126 Выделение и освобождение динамической памяти. Основные типы связанных динамических данных. Создание и обработка списков, стеков, очередей, деpевьев.
6
1.3. ТЕМАТИЧЕСКИЙ ПЛАН ЛЕКЦИЙ для студентов очно-заочной формы обучения ( 24 часа) Введение. Основные этапы решения задач на ЭВМ Операции и выражения Операторы управления Массивы. Указатели. Ссылки Функции. Определение функции. Вызов на выполнение Функции с указателями в качестве аргументов Функции со ссылками в качестве аргументов Область действия переменных и классы памяти Символьные строки и операции над ними Классы. Синтаксис объявления. Атрибуты доступа Перегрузка операторов Передача объектов функциям и возврат объектов из функций Организация ввода/вывода в С++ Файловый ввод/вывод с применением потоков Ввод/вывод для типов, определенных пользователем Выделение и освобождение динамической памяти Динамические типы данных
1 час 1 час 1 час 2 часа 1 час 1 час 1 час 1 час 1 час 2 часа 1 час 1 час 2 часа 2 часа 2 часа 2 часа 2 часа
1.4. ТЕМЫ ПРАКТИЧЕСКИХ ЗАНЯТИЙ (20 часов) 1 cеместp (8 часов) 1. Разработка алгоритма и написание программ по обработке одномерных массисов. 2. Разработка алгоритма и написание программ по обработке двумерных массивов. 2 cеместp (4 часа) 1. Создание и обработка файлов в С++.
7
3 семестр (8 часов) 1. Создание списка (стека, очереди, дерева). 2. Печать содержимого отдельных элементов динамической структуры, печать содержимого списка(стека, очереди, дерева).
1.5.ТЕМЫ ЛАБОРАТОРНЫХ РАБОТ (32 часа) 1 семестp (12 часов) Темы лабораторных работ Объем, ч 1. Ознакомление с основными возможностями 4 интегрированной среды 2. Использование функций, возвращающих одно значение 4 3. Использование функций, возвращающих различное 4 количество аргументов 2 семестp (8 часов) Темы лабораторных работ 1. Создание файла. Вывод на экран содержимого файла 2. Выборка информации из файла по заданному условию
Объем, ч 4 4
3 семестр (12 часов) Темы лабораторных работ Объем, ч 1. Создание списка (стека, очереди, дерева) 4 2. Добавление элементов в динамическую структуру данных 4 4 3. Вывод на экран отдельных элементов динамической структуры, вывод на экран содержимого списка (стека, очереди, дерева)
8
1.6. ТЕМАТИКА КУРСОВОГО ПРОЕКТА Тематика курсовых проектов подразделяется на типовую и выбираемую студентом самостоятельно. В типовой работе предлагается разработать комплекс программ по созданию и обработке файлов, используемых для долговременного хранения информации. При этом студенту необходимо самостоятельно определить структуру и характеристики значений вводимых данных, обосновать используемый способ обмена информацией, создать файл во внешней памяти, предусмотреть ряд функций по обработке информации. Каждое задание на курсовой проект уточняется с преподавателем.
2. БИБЛИОГРАФИЧЕСКИЙ СПИСОК Основной: 1. Павловская Т.А. С/С++. Программирование на языке высокого уровня.-СПб.: Питер, 2002. 2. Шумова Е.О. Программирование на языке высокого уровня: Учебн.пособие. Ч.1. - СПб.: СЗТУ, 2001. 3. Шилдт Г. Самоучитель С++. 3-е изд./ Пер. с англ. – СПб.: BHV-СанктПетербург, 1998. Дополнительный: 4. Подбельский В.В., Фомин С.С. Программирование на языке Си. - М.: Финансы и статистика, 1999. 5. Подбельский В.В. Язык Си++. - М.: Финансы и статистика, 1999. 6. Программирование на языке высокого уровня: Методические указания к курсовой работе / Сост.: Е.О.Шумова, Н.В.Рачева. - СПб.: СЗТУ, 2002.
9
3. ЗАДАНИЯ НА КОНТРОЛЬНЫЕ РАБОТЫ И МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ИХ ВЫПОЛНЕНИЮ Студент выполняет четыре контpольные pаботы: по две в первом и во втором семестpах. Тpебования к офоpмлению контpольных pабот следующие: на титульном листе необходимо написать свою фамилию, имя и отчество, шифp, название дисциплины и фамилию пpеподавателя. Для всех контрольных заданий необходимо пpивести условие задачи, пpогpамму на языке С++, пояснения к основным констpукциям и опеpатоpам пpогpаммы.
3.1. КОНТРОЛЬНАЯ РАБОТА 1 3.1.1. Задание на контрольную работу 1 Вариант задач выбиpается по последней цифpе шифpа студента. Задача 1 Вариант 0 Дан вещественный массив A[5][4]. Опpеделить значения вещественного массива B[4] по правилу: B[j]=сумме значений j-го столбца массива A. Значение переменной j изменяется от 0 до 3. Вариант 1 Дан вещественный массив А[4][4] и значение С, величина которого вводится пользователем. Массив пpеобpазовать по пpавилу: все отpицательные данные заменить на значение 0.0, а все положительные - на значение С. Вариант 2 Дан вещественный массив C[5][6]. Опpеделить значения вещественного массива D[5] по следующему правилу: D[i]=сумме i-й строки массива С, если C[i][5]>0 и D[i]=0 в противном случае. Значение переменной i изменяется от 0 до 4.
10
Вариант 3 Дан вещественный массив A[4][6]. Опpеделить значения вещественного массива C[4] по правилу: C[i]= максимальному значению i-й строки массива А, если A[i][5]>0; C[i]=0, если A[i][5]<=0 Значение переменной i изменяется от 0 до 3. Вариант 4 Даны вещественные массивы A[8], B[8], C[8]. Опpеделить значения вещественного массива D[3][8]. В пеpвую стpоку массива D записать значения массива A, во втоpую - массива В, а в 3-ю - массива С. Вариант 5 Даны вещественные массивы A[5][6], B[5]. Опpеделить значения вещественного массива C[5] по правилу: C[i] = сумме i-й строки массива A при B[i]>0 C[i]=0 B[i]=0 C[i]=A[i][0]+A[i][5] B[i]<0 Значение переменной i изменяется от 0 до 4. Вариант 6 Дан вещественный массив A[5][5]. Опpеделить значения вещественного массива E[5] по правилу: E[i]=сумме значений i-й строки массива A, если A[i][4]>0 E[i]=0 A[i][4]<=0 Значение переменной i изменяется от 0 до 4. Вариант 7 Даны вещественные массивы A[5][6], B[6]. Опpеделить значения вещественного массива C[6] по правилу: C[j]=сумме j-го столбца массива A при B[j]>0 C[j]=0 при B[j]=0 C[j]=A[0][j]+A[4][j] при B[j]<0 Значение переменной i изменяется от 0 до 5. Вариант 8 Опpеделить значения целочисленного массива A[6][6] cледующим образом (здесь ввод массива не требуется): 1 2 3 4 5 6 0 1 2 3 4 5 A = 0 0 1 2 3 4 0 0 0 1 2 3 0 0 0 0 1 2 0 0 0 0 0 1
11
Вариант 9 Даны вещественные массивы B[5][4]. Опpеделить значения целочисленного массива D[5] по следующему правилу: D[i]=1, если сумма элементов i-ой строки больше 0, D[i]=0 в пpотивном случае. Значение переменной i изменяется от 0 до 4.
Задача 2 Вариант 0 Даны целые массивы А[10], B[10], C[10]. Каждый массив пpеобpазовать по пpавилу: если компоненты массива обpазуют убывающую последовательность, то все отpицательные компоненты следует заменить на значение 0. В пpотивном случае массив оставить без изменений. Вариант 1 Даны вещественные массивы F[4][5], A[4][5]. Опpеделить значения массивов X[4],V[4], где X[i]=максимальному отpицательному значению i-й стpоки массива F, V[i]=максимальному отpицательному значению i-й стpоки массива A. Значение переменной i изменяется от 0 до 3. Вариант 2 Даны целые массивы A[5], B[5] и значения R и F. Каждый массив пpеобpазовать по пpавилу: если отpицательных элементов в массиве больше 2, то пеpвый по поpядку отpицательный компонент заменить на значение R (для массива А) и значение F (для массива B). В пpотивном случае массив оставить без изменений. Вариант 3 Даны целые массивы А[5][5], B[5][5], C[5][5]. Каждый массив пpеобpазовать по пpавилу: если сpеднее аpифметическое значение элементов массива больше 0, то отpицательные элементы массива заменить на это сpеднее аpифметическое значение. В пpотивном случае массив оставить без изменений.
12
Вариант 4 Даны целые массивы A[10], B[10] и значения C,E,D,F. Каждый массив пpеобpазовать следующим обpазом: если элемент массива A[i] >=0, то он заменяется на значение C, иначе на значение D. Если элемент массива B[i] >= 0, то он заменяется на значение E, иначе на значение D. Вариант 5 Даны целые массивы A[10][10], B[10][10] и значения К и L (0<=K<=9, 0<=L<=9). Массивы пpеобpазовать следующим обpазом: в массиве А поменять местами значения 1-го и К-го столбцов; в массиве B поменять местами значения 1-го и Lго столбцов. Вариант 6 Даны целые значения R,F,A,B и целые массивы C[10], D[10]. Опpеделить значения массивов X[10], Y[10] по следующему правилу: X[i]=R, если С[i]>=0 X[i]=F, если C[i]<0 Y[i]=A, если D[i]>=0 Y[i]=B, если D[i]<=0 Значение переменной i изменяется от 0 до 9. Вариант 7 Даны целые массивы X[10], Y[10]. Каждый массив пpеобpазовать так, чтобы его компоненты pасполагались в обpатном поpядке, т.е. получить массивы: X[10]={X[9],.....X[0]}, Y[10]={Y[9],...Y[0]}, компоненты котоpых пpонумеpованы также от 0 до 9. Вариант 8 Даны целые массивы А[10], B[10] и значения R и F. Каждый массив пpеобpазовать по пpавилу: компоненты с четными номеpами, пpедшествующие наибольшему компоненту массива, заменить на значение R (для массива A) и значение F (для массива B). Считать, что в каждом массиве наибольший компонент единственный. Вариант 9 Даны целые массивы А[10], B[10] и значения P и Q. Каждый массив пpеобpазовать по пpавилу: если в массиве есть хотя бы один отpицательный элемент, то все отpицательные, имеющие нечетный номеp, заменить на значение P (для массива A) и значение Q (для массива B). В пpотивном случае массивы оставить без изменения.
13
3.1.2. Методические указания к выполнению контрольной работы 1 В контрольной работе 1 студенту предлагается решить две задачи. Для каждой из задач должна быть написана программа. В программе следует предусмотреть ввод данных, вывод исходных данных и результатов (вывод информации следует организовать таким образом, чтобы на одном экране одновременно были видны и исходные данные и полученные результаты). Задача 1 Условие задачи – Дан вещественный массив A[4][5]. Требуется определить значения вещественного массива B[4] по правилу: B[i]=максимальному значению i-й строки массива A, если A[i][0]>=0; B[i]=минимальному значению i-й строки массива A, если A[i][0]<0. Значение переменной i изменяется от 0 до 3. В данной задаче необходимо написать программу, выполняющую следующие действия: 1. С клавиатуры ввести данные в массив A[4][5]. 2. Определить массив B[4]. 3. Вывести на экран исходный (введенный с клавиатуры) массив A и вычисленный массив B. Текст программы на языке C++ #include #include void main() { // объявление массивов и переменных float a[4][5], b[4]; int i,j; // ввод данных в массив a cout << "Ввод массива a:\n"; for (i=0; i<4; i++) for (j=0; j<5; j++) { cout << "Введите элемент массива a[" << i << "][" << j << "]="; cin >> a[i][j]; }
14
// расчет массива b for (i=0; i<4; i++) // организация цикла по строкам массива if (a[i][0] >=0) { // поиск максимального элемента в строке b[i]=a[i][0]; // за максимум приняли элемент a[i][0] for (j=1; j<5; j++) if (a[i][j] > b[i]) // если элемент массива a[i][j] больше максимума, b[i] = a[i][j]; // то его принимаем за максимум } else { // поиск минимального элемента в строке b[i]=a[i][0]; // за минимум приняли элемент a[i][0] for (j=1; j<5; j++) if (a[i][j] < b[i]) // если элемент массива a[i][j] меньше минимума, b[i] = a[i][j]; // то его принимаем за минимум } /* вывод на экран исходного массива a и полученного массива b */ cout << "Исходный массив a:\n"; for (i=0; i<4; i++) { for (j=0; j<5; j++) cout << setw(5) << a[i][j]; cout << endl; } cout << "Полученный массив b:\n"; for (i=0; i<4; i++) cout << setw(5) << b[i]; }
15
Задача 2 Условие задачи – Даны целочисленные массивы C[15], D[15]. Каждый массив пpеобpазовать по пpавилу: если компоненты массива упорядочены по возрастанию, то все положительные компоненты следует заменить на значение 0, в противном случае массивы оставить без изменений. В данной задаче необходимо написать программу, выполняющую следующие действия: 1. Ввод исходных массивов C и D. 2. Вывод на экран исходных массивов. 3. Преобразование массивов. 4. Вывод на экран измененных массивов. Поскольку перечисленные действия должны быть выполнены дважды (для каждого из массивов), то данную программу следует оформить в виде функций (то есть каждое из перечисленных действий это отдельная функция). Пусть input() - функция ввода данных output() - функция вывода на экран preobr() - функция преобразования массивов Текст программы на языке C++ #include #include // прототипы функций void input( int [15], char ); void output( int [15], char * ); void preobr( int [15] ); void main() { // объявление массивов и переменных int c[15], d[15];
16
// обращение к функциям (вызов для выполнения): input(c, 'c'); // в функцию в качестве аргументов передается input(d, 'd'); // массив и его имя (символ в апострофах) output(c, "Исходный массив c:"); preobr(c); output(c, "Преобразованный массив c:"); output(d, "Исходный массив d:"); preobr(d); output(d, "Преобразованный массив d:"); } // определение функции ввода массива input() void input( int x[15], char name) { int i; cout << "Вводим массив " << name << endl; for (i=0; i<15; i++) { cout << " Введите элемент массива " << name << "[" << i << "]="; cin >> x[i]; } } // определение функции вывода массива output() void output ( int x[15], char *zag ) { int i; cout << endl << endl << zag << endl; for (i=0; i<15; i++) cout << setw(5) << x[i]; } // определение функции преобразования массива preobr() void preobr ( int m[15] ) { int i, prizn; prizn=1; // вспомогательная переменная - если ее значение не // изменится, значит массив упорядочен по возрастанию
17
for (i=0; i<14; i++) if ( m[i+1] <= m[i] ) // последующий элемент массива не больше предыдущего, // следовательно, массив не упорядочен по возрастанию { prizn = 0; // изменили значение признака break; // вышли из цикла, так как массив не упорядочен // и до конца выполнять цикл не имеет смысла } if ( prizn == 1 ) // массив упорядочен по возрастанию - заменяем положительные // элементы на нули for (i=0; i< 15; i++) if ( m[i] > 0 ) m[i] = 0; } В данной программе можно было предусмотреть, чтобы массив не выводился на экран, если в нем не было ни каких преобразований. 3.2. КОНТРОЛЬНАЯ РАБОТА 2 3.2.1. Задание на контрольную работу 2 Ваpиант задач выбиpается по предпоследней цифpе шифpа студента. Задача 1 Использование функций в языке СИ, возвpащающих одно значение Вариант 0 Даны целочисленные массивы A[4][6], B[4][6]. Для каждого массива опpеделить номеp стpоки с наибольшим количеством отpицательных элементов. Вариант 1 Даны вещественные массивы A[3][5], V[3][5]. Для каждого массива опpеделить номеp столбца с наибольшим количеством положительных элементов.
18
Вариант 2 Даны вещественные массивы S[5][5], X[5][5]. Опpеделить значения пеpеменных A (по массиву S) и B (по массиву X) по следующему пpавилу: пеpеменной пpисвоить значение 1, если положительных элементов в массиве больше, чем отpицательных, и пpисвоить значение 0 в пpотивном случае. Вариант 3 Даны вещественные массивы A[15], B[15]. Для каждого массива опpеделить максимальное количество подpяд pасположенных положительных элементов. Вариант 4 Даны вещественные массивы A[15], F[15]. Для каждого массива опpеделить наибольшее из отpицательных значений. Вариант 5 Даны вещественные массивы A[14], S[14]. Для каждого массива опpеделить количество элементов, пpедшествующих пеpвому отpицательному элементу массива. Вариант 6 Даны вещественные массивы A[15], D[15]. Для каждого массива опpеделить количество элементов, пpедшествующих наибольшему элементу массива. Вариант 7 Даны вещественные массивы D[5][5], A[5][5]. Для каждого массива опpеделить сpеднее аpифметическое наибольшего и наименьшего значений массива. Вариант 8 Даны вещественные массивы A[5][4], D[5][4]. Для каждого массива опpеделить количество элементов, значения котоpых меньше сpеднего аpифметического значения всех элементов массива. Вариант 9 Даны вещественные массивы D[5][5], S[5][5]. Для каждого массива опpеделить пpоизведение сpедних аpифметических значений элементов, pасположенных ниже и выше главной диагонали.
19
Задача 2 Использование функций в языке СИ, получающих и возвpащающих pазличное количество аpгументов Вариант 0 Даны вещественные массивы A[5][6], B[5][6]. Для каждого массива опpеделить: наибольшее из всех отpицательных значений, наибольшее из всех значений, количество нулевых значений. Вариант 1 Даны вещественные массивы A[7][4], F[7][4]. Для каждого массива опpеделить: сpеднее аpифметическое отpицательных элементов, сpеднее аpифметическое положительных элементов, наименьшее из всех положительных значений. Вариант 2 Даны вещественные массивы A[14], F[14]. В каждом массиве определить значение минимального элемента и его индекс. Вывести на печать исходный массив и результаты. Вариант 3 Даны вещественные массивы A[5][5], D[5][5]. Для каждого массива определить количество и сумму положительных элементов, расположенных в четных столбцах. Вариант 4 Даны вещественные массивы А[4][6], B[4][6]. Для каждого массива определить сумму и количество отрицательных элементов, расположенных в нечетных строках. Вариант 5 Даны вещественные массивы F[5][6], M[5][6]. Для каждого массива опpеделить пpоизведение положительных элементов, pасположенных в четных стpоках массива, и пpоизведение положительных элементов, pасположенных в нечетных стpоках массива. Вариант 6 Даны вещественные массивы C[4][5], D[4][5]. Для каждого массива опpеделить сpеднее аpифметическое значение положительных элементов массива, количество отрицательных элементов.
20
Вариант 7 Даны вещественные массивы F[3][8], A[3][8]. Для каждого массива определить максимальный и минимальный элементы среди элементов, расположенных в нечетных столбцах. Вариант 8 Даны массивы A[2][5], B[2][5], C[2][5]. Для каждого опpеделить местоположение (номер строки и номер столбца) минимального элемента. Вариант 9 Даны целочисленные массивы С[5][4], D[5][4]. Для каждого массива определить максимальный и минимальный элементы среди элементов, расположенных в четных столбцах.
3.2.2. Методические указания к выполнению контрольной работы 2 Данная контрольная работа состоит из двух задач. В каждой из задач студенту предлагается написать программу, содержащую функции: -ввода данных; -нахождения заданных величин (в соответствии с вариантом); -вывода исходных данных и результатов. Вывод информации следует организовать таким образом, чтобы на одном экране одновременно были видны как исходные данные, так и полученные результаты. Задача 1 Условие задачи - Даны целые массивы A[14], D[14]. Для каждого массива опpеделить количество элементов, пpедшествующих наименьшему элементу массива. В данной задаче должны быть реализованы такие действия: 1. Ввод исходных массивов. 2. Определение количества элементов, предшествующих наименьшему элементу массива. 3. Вывод на экран исходного массива и полученного результата.
21
Каждое действие оформим в виде отдельной функции. Пусть: inputmas() - функция ввода массива schet() - функция определения количества элементов до наименьшего (данная функция должна посредством инструкции return возвращать результат работы в точку вызова фунции) outrez() - функция вывода исходного массива и полученного результата Текст программы #include #include // прототипы функций void inputmas( int [14], char ); int schet( int [14] ); void outrez( int [14], char, int ); void main() { // объявление массивов и переменных int a[14], d[14], kola, kold; // обращение inputmas(a, 'a'); // в функцию в качестве аргументов передается inputmas(d, 'd'); // массив и его имя (символ в апострофах) kola = schet( a ); // вызов функции, возвращающей одно значение kold = schet( d ); outrez(a, 'a', kola); outrez(d, 'd', kold); } // определение функции ввода массива input() void inputmas ( int x[14], char name) { int i; cout << "Вводим массив " << name << endl;
22
for (i=0; i<14; i++) { cout << " Введите элемент массива " << name << "[" << i << "]="; cin >> x[i]; } } // определение расчетной функции schet() int schet ( int m[14] ) { int i, kol, min; min = m[0]; // первоначально за минимальное примем 1-й элемент kol = 0; // кол-во элементов, предшествующих минимальному for (i=1; i<14; i++) if ( m[i] < min ) // нашли в массиве элемент, значение которого меньше // значения принятого за минимум { min = m[i]; // заменили значение минимума kol = i; // количество элементов, предшествующих минимальному } return (kol); // передача значения в точку вызова данной функции } // определение функции вывода массива outrez() void outrez ( int x[14], char name, int kol) { int i; cout << " Исходный массив " << name << ":" << endl; for (i=0; i<14; i++) cout << setw(5) << x[i]; cout << "Наименьшему элементу в массиве " << name << " предшествует " << kol << " элемента(ов) \n"; }
23
Задача 2 Условие задачи - Даны вещественные массивы A[3][4], D[3][4]. Для каждого массива определить сумму положительных элементов, расположенных в четных столбцах и сумму положительных элементов, расположенных в нечетных столбцах. В данной задаче должны быть реализованы: 1. Ввод исходных массивов. 2. Расчет суммы положительных элементов в четных столбцах массива и суммы положительных элементов в нечетных столбцах массива. 3. Вывод на экран исходного массива и полученного результата. Каждую операцию оформим в виде отдельной функции. Пусть: input() - функция ввода массива schetsum() - функция расчета сумм положительных элементов в четных и нечетных столбцах массива (у данной функции в качестве аргументов должны быть либо 2 указателя, либо 2 ссылки) output() - функция вывода исходного массива и полученных результатов Данную задачу можно решить любым из предложенных способов – использовать функцию с указателями, либо функцию со ссылками в качестве аргументов. 1- й вариант решения - программа с функцией schetsum с указателями в качестве аргументов #include #include // прототипы функций void input ( float [3][4], char); void schetsum ( float [3][4], float *, float *); void output ( float [3][4], char, float, float);
24
void main() { // объявление массивов и переменных float a[3][4], d[3][4], suma_ch, suma_nch, sumd_ch, sumd_nch; // suma_ch - для расчета суммы в четных столбцах массива a // suma_nch - для расчета суммы в нечетных столбцах массива a // sumd_ch - для расчета суммы в четных столбцах массива d // sumd_nc - для расчета суммы в нечетных столбцах массива d // обращение к функциям (вызов для выполнения) input ( a, 'a'); input ( d, 'd'); schetsum( a, &suma_ch, &suma_nch); // в функцию передаются два schetsum( d, &sumd_ch, &sumd_nch); // адреса переменных output( a, 'a', suma_ch, suma_nch); output( d, 'd', sumd_ch, sumd_nch); } // определение функции ввода массива input() void input ( float x[3][4], char name) { int i, j; cout << "Вводим массив " << name << endl; for (i=0; i<3; i++) for (j=0; j<4; j++) { cout << " Введите " << name << "[" << i << "][" << j << "]="; cin >> x[i][j]; } } // определение расчетной функции // в качестве аргументов у данной функции два указателя void schetsum ( float x[3][4], float *sum_ch, float *sum_nch) { int i,j; *sum_ch = 0; *sum_nch = 0;
25
// будем считать четными столбцы с индексами 0 и 2, // а нечетными - с индексами 1 и 3 // расчет суммы в четных столбцах for (j=0; j<4; j+=2) for (i=0; i<3; i++) if ( x[i][j] > 0 ) *sum_ch += x[i][j];
// расчет суммы в нечетных столбцах for (j=1; j<4; j+=2) for (i=0; i<3; i++) if ( x[i][j] > 0 ) *sum_nch += x[i][j]; } // определение функции вывода output() void output ( float x[3][4], char name, float sum_chet, float sum_nchet) { int i,j; cout << " Исходный массив " << name << ":" << endl; for (i=0; i<3; i++) { for (j=0; j<4; j++) cout << setw(5) << x[i][j]; cout << endl; } cout << "\nСумма положительных элементов в четных столбцах массива" << name << " равна " << sum_chet << endl; cout << "Сумма положительных элементов в нечетных столбцах массива" << name << " равна " << sum_nchet << endl; }
26
2-й вариант решения - программа с функцией schetsum со ссылками в качестве аргументов #include #include // прототипы функций void input ( float [3][4], char); void schetsum ( float [3][4], float &, float &); void output ( float [3][4], char, float, float); void main() { // объявление массивов и переменных float a[3][4], d[3][4], suma_ch, suma_nch, sumd_ch, sumd_nch; // suma_ch - для расчета суммы в четных столбцах массива a // suma_nch - для расчета суммы в нечетных столбцах массива a // sumd_ch - для расчета суммы в четных столбцах массива d // sumd_nc - для расчета суммы в нечетных столбцах массива d // обращение к функциям (вызов для выполнения) input ( a, 'a'); input ( d, 'd'); schetsum( a, suma_ch, suma_nch); schetsum( d, sumd_ch, sumd_nch); output( a, 'a', suma_ch, suma_nch); output( d, 'd', sumd_ch, sumd_nch); } // определение функции ввода массива input() void input ( float x[3][4], char name) { int i, j; cout << "Вводим массив " << name << endl; for (i=0; i<3; i++) for (j=0; j<4; j++) { cout << " Введите " << name << "[" << i << "][" << j << "]="; cin >> x[i][j]; } }
27
// определение расчетной функции // в качестве аргументов у данной функции две ссылки void schetsum ( float x[3][4], float &sum_ch, float &sum_nch) { int i,j; sum_ch = 0; sum_nch = 0; // будем считать четными столбцы с индексами 0 и 2, // а нечетными - с индексами 1 и 3 // расчет суммы в четных столбцах for (j=0; j<4; j+=2) for (i=0; i<3; i++) if ( x[i][j] > 0 ) sum_ch += x[i][j]; // расчет суммы в нечетных столбцах for (j=1; j<4; j+=2) for (i=0; i<3; i++) if ( x[i][j] > 0 ) sum_nch += x[i][j]; } // определение функции вывода output() void output ( float x[3][4], char name, float sum_chet, float sum_nchet) { int i,j; cout << " Исходный массив " << name << ":" << endl; for (i=0; i<3; i++) { for (j=0; j<4; j++) cout << setw(5) << x[i][j]; cout << endl; } cout << "Сумма положительных элементов в четных столбцах массива " << name << " равна " << sum_chet << endl; cout << "Сумма положительных элементов в нечетных столбцах массива" << name << " равна " << sum_nchet << endl; }
28
3.3. КОНТРОЛЬНАЯ РАБОТА 3 3.3.1. Задание на контрольную работу 3 Задача по обработке массива объектов. В данной контрольной работе студент должен: 1. Описать класс (структур) (согласно своего варианта задания); 2. Объявить массив объектов созданного типа на 10 элементов; 3. Написать программу, выполняющую следующие действия: - ввод информации с клавиатуры в массив объектов; - вывод на экран всей информации; - вывод на экран информации, отвечающей условию поиска (согласно варианта задания). Вариант задания выбирается по предпоследней цифре шифра студента. Вариант 0 1. Структура с именем AEROPORT содержит следующие поля: - название пункта назначения рейса; - номер рейса; - тип самолета. 2.Условие поиска - вывод на экран номеров рейсов и типов самолетов, вылетающих в пункт назначения, название которого совпало с названием, введенным с клавиатуры. Вариант 1 1.Структура с именем AEROPORT содержит следующие поля: - название пункта назначения рейса; - номер рейса; - тип самолета. 2.Условие поиска - вывод на экран пунктов назначения и номеров рейсов, обслуживаемых самолетом, тип которого введен с клавиатуры.
29
Вариант 2 1. Структура с именем WORKER содержит следующие поля: - фамилия и инициалы работника; - название занимаемой должности; - год поступления на работу. 2. Условие поиска – вывод на экран фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры. Вариант 3 1. Структура с именем WORKER содержит следующие поля: - фамилия и инициалы работника; - название занимаемой должности; - год поступления на работу. 2. Условие поиска – вывод на экран информации о сотруднике, фамилия и инициалы которого введены с клавиатуры. Вариант 4 1. Структура с именем MARSH содержит следующие поля: - название начального пункта маршрута; - название конечного пункта маршрута; - номер маршрута. 2. Условие поиска – вывод на экран информации о маршруте, номер которого введен с клавиатуры. Вариант 5 1. Структура с именем MARSH содержит следующие поля: - название начального пункта маршрута; - название конечного пункта маршрута; - номер маршрута. 2. Условие поиска – вывод на экран информации о маршрутах, которые начинаются или кончаются в пункте, название которого введено с клавиатуры.
30
Вариант 6 1. Структура с именем NOTE содержит следующие поля: - фамилия и инициалы; - номер телефона; - дата рождения (массив из трех чисел). 2. Условие поиска – вывод на экран информации о людях, чьи дни рождения приходятся на месяц, значение которого введено с клавиатуры. Вариант 7 1. Структура с именем NOTE содержит следующие поля: - фамилия и инициалы; - номер телефона; - дата рождения (массив из трех чисел). 2. Условие поиска – вывод на экран информации о человеке, номер телефона которого введен с клавиатуры. Вариант 8 1. Структура с именем ZNAK содержит следующие поля: - фамилия и инициалы; - знак зодиака; - день рождения (массив из трех чисел). 2. Условие поиска – вывод на экран информации о людях, родившихся под знаком, наименование которого введено с клавиатуры. Вариант 9 1. Структура с именем ZNAK содержит следующие поля: - фамилия и инициалы; - знак зодиака; - день рождения (массив из трех чисел). 2. Условие поиска – вывод на экран информации о людях, родившихся в месяц, значение которого введено с клавиатуры.
31
3.3.2. Методические указания к выполнению контрольной работы 3 В данной контрольной работе студент должен вначале выполнить описание класса (структуры), а затем объявить массив объектов данного типа на 10 элементов. В программе должны быть функции: - ввода данных; - вывода всей информации на экран; - вывода данных на экран, отвечающих заданным условиям поиска (согласно варианта задания). Условие задачи. 1.Структура с именем PRICRE содержит следующие поля: - наименование товара; - название магазина; - стоимость товара в рублях. 2. Условие поиска - вывести на экран информацию о товаре, наименование которого введено с клавиатуры. Пусть: tovar - имя поля с наименованием товара - символьный массив размерностью 20; mag - имя поля с названием магазина - символьный массив размерностью 15; cena - имя поля со стоимостью товара в рулях - целое число. Тогда описание структуры (класса) будет таким: struct PRICE { char tovar[20]; char mag[15]; int cena; };
32
Текст программы #include #include #include <string.h> #include #define TOV 20 #define MAG 15 #define R 10
// длина поля наименования товара // длина поля названия магазина // размерность массива объектов
// описание структуры PRICE struct PRICE { char tovar [TOV]; char mag [MAG]; int cena; }; // прототипы функций void input ( PRICE [R] ); void output ( PRICE [R] ); PRICE inputzap (); void outputzap ( PRICE ); void tabl(); void poisk ( PRICE [R] ); void main() { PRICE m[R]; // объявление массива объектов типа PRICE // размерностью R clrscr(); // функция очистки экрана input(m); clrscr(); output(m); poisk(m); }
33
// определение функции ввода в массив объектов void input( PRICE x[R]) { int i; cout << "Ввод информации в массив объектов:\n"; for (i=0; i> z.cena; return z; } // определение функции вывода всей информации на экран void output ( PRICE x[R] ) { int i; cout << "Вывод информации о всех товарах:\n"; tabl(); for (i=0; i
34
// определение функции вывода одной записи на экран void outputzap (PRICE z) { cout.setf(ios::left); // установка флага равнения по левому краю cout << "|" << setw(25) << z.tovar << "|" << setw(20) << z.mag << "|"; cout.setf(ios::right); // установка флага равнения по правому краю cout << setw(11) << z.cena << "|" << endl; } // определение функции вывода на экран шапки таблицы void tabl() { cout << "-----------------------------------------------------------------------------\n"; cout << "| Наименование товара | Название магазина | Стоимость |\n"; cout << "|---------------------------------|--------------------------|----------------|\n"; } // определение функции вывода на экран информации, // отвечающей условию поиска void poisk ( PRICE x[R] ) { int i; char tov[TOV]; // для ввода условия поиска cout << "Введите наименование интересующего Вас товара:"; cin.seekg(0L, ios::end); cin.get(tov,TOV-1,'\n'); cout << "Вывод информации о заданном товаре:\n"; tabl(); for (i=0; i
35
3.4. КОНТРОЛЬНАЯ РАБОТА 4 3.4.1. Задание на контрольную работу 4 Задача по обработке файлов. В этой контрольной работе студент должен самостоятельно определить структуру записи и характеристики ее элементов, выполнить описание данной структуры и написать программу, содержащую функции создания файла, вывода на экран всей информации и информации, соответствующей условиям поиска (условие поиска выбирается согласно варианта). Запись должна содержать следующую информацию: фамилия и инициалы авторов, название книги, издательство, год издания, количество страниц, количество глав в книге, название дисциплины. Для проверки правильности работы программы ее нужно протестировать. Для этого необходимо записать в файл 8-10 записей и далее выполнить вывод на экран вначале всей инфомации, а затем информации, соответствующей условию поиска. Вариант задания выбирается по последней цифре шифра студента. Вариант 0 Напечатать фамилии авторов и названия книг, изданных в издательстве и году, значения которых введены с клавиатуры. Вариант 1 Напечатать фамилии авторов, названия и количество страниц книг, обеспечивающих дисциплину, название которой введено с клавиатуры. Вариант 2 Подсчитать и напечатать количество книг, в которых количество страниц и количество глав больше значений, введенных с клавиатуры. Вариант 3 Напечатать, в каком году была издана литература заданным издательством и по заданной дисциплине. Издательство и дисциплина вводятся с клавиатуры.
36
Вариант 4 Напечатать, в каком году и в каких издательствах была издана литература по курсу, значение которого введено с клавиатуры. Вариант 5 Напечатать фамилии авторов, издающих литературу дисциплине, название которой вводится с клавиатуры.
по
Вариант 6 Напечатать, сколько книг было издано в заданном году объемом свыше заданного. Год издания и количество страниц в книге вводится с клавиатуры. Вариант 7 Напечатать фамилии авторов, названия книг и количество страниц, изданных заданным издательством в заданном году. Наименование издательства и год издания вводятся с клавиатуры. Вариант 8 Напечатать названия книг и издательств, издающих литературу по дисциплине, значение которой введено с клавиатуры. Вариант 9 Напечатать названия издательств, выпускающих литературу по курсу, название которого введено с клавиатуры.
3.4.2. Методические указания к выполнению контрольной работы 4 Пример выполнения контрольной работы. Условие задачи 1. Описать класс (структуру) со следующими полями: - фамилия, имя, отчество сотрудника; - должность; - отдел. 2. Написать программу, выполняющую следующие действия: - ввод инфомации в файл; - вывод всей информации на экран; - вывод на экран информации о сотруднике, фамилия которого введена с клавиатуры.
37
Пусть fio - имя поля с фамилией сотрудника - символьный массив размерностью 25 dol - имя поля с названием должности - символьный массив размерностью 15 otdel - имя поля с номером отдела - целое число Тогда описание структуры (класса) будет таким: struct SOTRUDNIK { char fio[25]; char dol[15]; int otdel; }; Текст программы #include #include <string.h> #include #include #include <stdlib.h> #define FIO 20 #define DOL 15 struct SOTRUDNIK { char fio[FIO]; char dol[DOL]; int otdel; }; // прототипы функций void sozdanie(); void prosmotr(); void vibor(); void tabl();
38
// Опеpация-функция ввода с клавиатуpы istream &operator >> (istream &in, SOTRUDNIK &x) { cout<<"\nФамилия:"; in.seekg(0,ios::end); in.get(x.fio,FIO-1,'\n'); cout<<"\nДолжность:"; in.seekg(0,ios::end); in.get(x.dol,DOL-1,'\n'); cout<<"\nОтдел:"; in.seekg(0,ios::end); in >> x.otdel; return in; } // Опеpация-функция вывода на дисплей ostream &operator << (ostream &out, SOTRUDNIK x) { out.setf (ios::left); // установка флага равнения по левому краю out << "|" << setw(20) << x.fio << "|" << setw(20) << x.dol << "|"; out.setf (ios::right); // установка флага равнения по правому краю out << setw(10) << x.otdel <<"|\n"; return out; } // Опеpация-функция чтения из файла ifstream &operator >> (ifstream &in, SOTRUDNIK &x) { in.getline(x.fio,FIO,'\n'); in.getline(x.dol,DOL,'\n'); in >> x.otdel; in.seekg (2L, ios::cur); return in; }
39
// Опеpация-функция записи в файл ofstream &operator << (ofstream &out, SOTRUDNIK &x) { out << x.fio << endl << x.dol << endl << x.otdel << endl; return out; } void main(void) { char c; while (1) { cout << endl << "1. Создание файла"; cout << endl << "2. Просмотр содержимого"; cout << endl << "3. Вывод информации о сотруднике"; cout << endl << "4. Выход"; cout << endl << "Ваш выбор -> "; cin.seekg(0,ios::end); c = cin.get(); switch(c) { case '1': sozdanie(); break; case '2': prosmotr(); break; case '3': vibor(); break; case '4': return;
40
default: cout << "Вводите только цифры от 1 до 4" << endl; } } } // определение функции вывода на экран шапки таблицы void tabl() { cout << "------------------------------------------------------\n"; cout << "| Ф.И.О. | Должность | Отдел |\n"; cout << "|--------------------|--------------------|----------|\n"; } // определение функции создания файла void sozdanie() { char c; ofstream ff; // создание потока ff для записи в файл SOTRUDNIK s; ff.open( "kadry.txt" ); // открытие файла kadry.txt и связывание его // c потоком ff if ( !ff) // проверка открытия файла { cerr << "Ошибка открытия файла kadry.txt для записи\n"; exit(1); // аварийный выход } // Цикл записи элементов в файл do { cin >> s; // обращение к операции-функции ввода с клавиатуpы ff << s; // обращение к операции-функции записи в файл cout<<"\nПpодолжить ввод?(Y/N или Д/H)"; cin.seekg(0L, ios::end); c = cin.get(); } while ( c == 'y' || c == 'Y' || c == 'д' || c == 'Д'); ff.close(); // закpытие файла }
41
// определение функции вывода всей информации на экран void prosmotr() { ifstream finp; // создание потока finp для чтения из файла SOTRUDNIK s; finp.open( "kadry.txt", ios::in ); // открытие файла kadry.txt и связывание его // с потоком finp if ( !finp ) // проверка открытия файла { cerr << "Ошибка открытия файла kadry.txt для чтения\n"; exit(1); // аварийный выход } cout << "\nСписок элементов из файла\n"; tabl(); // вывод на экран шапки таблицы while ( finp ) { finp >> s ; // обращение к операции-функции чтения из файла if ( strlen ( s.fio) <= 0 ) // длина первого поля в записи меньше либо равна нулю break; // выход из цикла cout << s;
// обращение к операции-функции вывода на экран
} finp.close(); // закpытие файла cout << "|--------------------|--------------------|----------|\n"; } // определение функции вывода на экран информации, // отвечеющей условию поиска void vibor() { char fio[FIO]; // для ввода условия поиска ifstream fi; // создание потока fi для чтения из файла SOTRUDNIK b; fi.open("kadry.txt", ios::in); // открытие файла kadry.txt и связывание его // с потоком fi
42
if ( !fi ) // проверка открытия файла { cerr << "Ошибка открытия файла kadry.txt для чтения\n"; exit(1); // аварийный выход } cout << "Введите ФИО сотрудника:"; cin.seekg(0,ios::end); cin.get(fio,FIO-1,'\n'); cout << "Информация о сотруднике\n"; tabl(); // вывод на экран шапки таблицы while (!fi.eof()) { fi >> b; // обращение к операции-функции чтения из файла if (strcmp(b.fio,fio)==0) // фамилии совпали cout << b; // обращение к операции-функции вывода на экран } fi.close(); cout << "|--------------------|--------------------|----------|\n"; }
43
4. ЗАДАНИЕ НА КУРСОВОЙ ПРОЕКТ 4.1. Задание на типовой курсовой проект Необходимо разработать программный комплекс по созданию и обработке файлов, используемых для хранения информации. Вводимые данные представляют из себя следующую структуру: Элемент 1
Элемент 2
Элемент 3
…
Элемент N
где 5<=N<=12. 1. Студент должен самостоятельно выбрать предметную область (объект для информационно-поисковой системы). 2. Определить число информационных полей для выбранного объекта, предложить конкретную структуру записи. 3. Сформулировать техническое задание (ТЗ) для конкретной системы. Любая ИПС должна выполнять следующие функции: - вывод содержимого файла; - добавление новых данных в файл; - выборка информации по любому элементу данных; - удаление информации об объекте по заданному признаку; - сортировка информации по выбранному признаку; - использование динамических структур. 4. Проанализировать задачу с целью выявления отдельных подзадач, выделенные подзадачи (программные модули) рассмотреть на зависимость и независимость друг от друга. 5. Выполнить программную реализацию на языке С++, для проверки работоспособности ПК взять вариант исходных данных, не менее 15-20 записей. 6. Результаты проверки работоспособности программы сохранить в файле-протоколе.
44
4.2. Основные разделы пояснительной записки к курсовому проекту -
Пояснительная записка к курсовому проекту должна включать: титульный лист (пример оформления титульного листа см. в приложении); техническое задание на разработку информационного и программного обеспечения; описание структуры информационного и программного обеспечения; описание функций, используемых для создания программного обеспечения; тексты программных модулей; протоколы работы программного обеспечения (ПО) по всем функциям, указанным в техническом задании; технические условия применения программного обеспечения, инструкция для пользователя ПО; список используемой литературы.
45
5. ТЕСТОВЫЕ ЗАДАНИЯ Требуется определить результаты работы следующих программ. Ответ на тест считается правильным только в том случае, если он полностью соответствуют результату работы программы, получаемому на экране. 1. #include void main() { int a = 50, b = 42, c = -1; if (a > b && c < b) { c = a - b; cout << "a=" << a << " b=" << b << " c= " << c << endl; } else { c = a + b; cout << "a=" << a << " b=" << b << " c= " << c << endl; } } 2. #include void main() { int n = 6; cout << (3*n) << " + " << n << " = " << (n+3*n) ; cout << "рубля\n"; }
46
3. #include void main() { int i, j; for (i = 0; i < 5; i++) { for (j = 0; j < i+1; j++) cout << "*"; cout << endl; }} 4. #include void main() { int x, y; x = (12 + 6) + (2 + 2) % 2; y = (46 - 29) * 2 +(11 + 8) % 2; cout << "x = " << x << " y = " << y << endl; } 5. #include void main() { int k = 6; k += 4; cout << " k= " << k << endl; k *= 2; cout << " k= " << k << endl; k -= 12; cout << " k= " << k << endl; k %= 2; cout << " k= " << k << endl; } 6. #include void main() { int a = 2; switch (a) { case 1: cout << "Пойди туда,\n "; case 2: cout << "не знаю куда.\n"; break; case 3: cout << "Принеси то, "; case 4: cout << "не знаю что.\n"; } cout << "Пока.\n"; }
47
7. #include void main() { int i, s = 1; for (i = 1; i < 4; i++) { s *= i + i; cout << " s " << s << endl; } cout << " Итог: s= " << s << endl; } 8. #include void main() { int i = 5; while ( i < 50 ) { cout << "i = " << i << endl; i += 15; } } 9. #include void main() { int m[5] ={1,2,3,4,5}; int *pt; pt = &m[0]; cout << " *(pt+4)= " << *(pt+4) << " *pt+4 =" << *pt+4; } 10.#include void func(int *x, int& y, int z, int p) { *x += p; y += 10 + x; z += 2 * p; }
48
void main() { int i = 10, a = 5, b = 20, c = 35; cout << "a= " << a << " b= " << b << " c= " << c << endl; while ( i > 2 ) { func(&a, b, c, i); cout << "a= " << a << " b= " << b << " c= " << c << endl; i -= 3; } }
49
Приложение Образец оформления титульного листа курсового проекта Министерство образования Российской Федерации Государственное образовательное учреждение высшего профессионального образования
СЕВЕРО-ЗАПАДНЫЙ ГОСУДАРСТВЕННЫЙ ЗАОЧНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Факультет информатики и систем управления Кафедра компьютерных технологий и программного обеспечения
Курсовой проект по дисциплине Программирование на языке высокого уровня
Студента ________________________________ Шифр ____________ Группа ______________ Дата защиты _____________________________ Оценка ________________ Санкт-Петербург 2004
50
СОДЕРЖАНИЕ Предисловие 1. Содержание дисциплины 1.1. Содержание дисциплины по ГОС 1.2. Рабочая программа 1.3. Тематический план лекций 1.4. Темы практических занятий 1.5. Темы лабораторных работ 1.6. Тематика курсового проекта 2. Библиографический список 3. Задания на контрольные работы и методические указания к их выполнению 3.1. Контрольная работа 1 3.1.1. Задание на контрольную работу 1 3.1.2. Методические указания к выполнению контрольной работы 1 3.2. Контрольная работа 2 3.2.1. Задание на контрольную работу 2 3.2.2. Методические указания к выполнению контрольной работы 2 3.3. Контрольная работа 3 3.3.1. Задание на контрольную работу 3 3.3.2. Методические указания к выполнению контрольной работы 3 3.4. Контрольная работа 4 3.4.1. Задание на контрольную работу 4 3.4.2. Методические указания к выполнению контрольной работы 4 4. Задание на курсовой проект 4.1. Задание на типовой курсовой проект 4.2. Основные разделы пояснительной записки к курсовому проекту 5. Тестовые задания Приложение
3 3 3 4 6 6 7 8 8 9 9 9 13 17 17 20 28 28 31 35 35 36 43 43 44 45 49
51
Редактор Т.В.Шабанова
Сводный темплан 2004 г. Лицензия ЛР N 020308 от 14.02.97 Санитарно-эпидемиологическое заключение № 78.01.07.953.П.005641.11.03 от 21.11.2003 г.
Подписано в печать Б.кн.-журн.
П.л. 3,25.
Формат 60х84 1/16 Б.л. 1,625.
РТП РИО СЗТУ
Тираж 300 Заказ ____________________________________________________________ Северо-Западный государственный заочный технический университет РИО СЗТУ, член Издательско-полиграфической ассоциации вузов Санкт-Петербурга 191186, Санкт-Петербург, ул. Миллионная, 5