takya.ru страница 1
скачать файл

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ


ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ НЕФТЕГАЗОВЫЙ УНИВЕРСИТЕТ»



ИНСТИТУТ КИБЕРНЕТИКИ, ИНФОРМАТИКИ И СВЯЗИ


Методические указания
для студентов заочной формы обучения
по дисциплине

ОСНОВЫ АЛГОРИТМИЗАЦИИ
И
ПРОГРАММИРОВАНИЯ

для специальностей

2202 “Автоматизированные системы обработки информации и управления” (по отраслям)

2203 “Программное обеспечение вычислительной техники и автоматизированных систем”

Рассмотрено на заседании цикловой комиссии отделения ИТВТ


Протокол № _____

от “____” ____________ 20 года





Председатель цикловой комиссии

________

Т.Н. Косыгина

Автор:


Карлагина

Анна

Александровна

Рецензенты:



Саложёнкина Г.В., заведующая заочным отделением

Шульгин Е.Д., старший преподаватель кафедры “Управления, информатики и математики” Тюменского юридического института МВД России

Печатается по решению научно-методического совета



Протокол № ____ “___” ____________ 20 г.

СОДЕРЖАНИЕ


  1. Пояснительная записка 4

  2. Содержание дисциплины 6

  3. Домашняя контрольная работа 22

  4. Рекомендации по решению контрольной работы 26

  5. Примерный перечень вопросов и заданий к экзамену 33

  6. Примерный перечень лабораторно-практических занятий 36

  7. Список литературы 37


ПОЯСНИТЕЛЬНАЯ ЗАПИСКА


Методические указания по дисциплине “Основы алгоритмизации и программирования” предназначены для студентов заочной формы обучения по специальностям 2202 “Автоматизированные системы обработки информации и управления” (по отраслям) и 2203 “Программное обеспечение вычислительной техники и автоматизированных систем”.

Учебная дисциплина “Основы алгоритмизации и программирования” является общепрофессиональной, устанавливающей базовый уровень знаний для освоения других общепрофессиональных и специальных дисциплин, таких как “Объектно-ориентированное программирование”, “Компьютерное моделирование”, “Технология разработки программных продуктов”, ”Автоматизированные информационные системы”.

Программа дисциплины предусматривает изучение двух объектно-ориентированных языков программирования Pascal и C++ как системы обозначений алгоритмов из различных областей экономики, науки, производства, права и техники.

В результате изучения дисциплины студент должен:

иметь представление:


  • о роли и месте знаний по этой дисциплине при освоении смежных дисциплин по выбранной специальности и в сфере профессиональной деятельности;

знать:

  • стратегию проектирования, эвристические методы конструирования алгоритмов;

  • базовые принципы построения рациональных алгоритмов;

  • критерии алгоритма;

  • типы данных и переменных;

  • методы структурного нисходящего программирования;

  • массивы, записи, символьные строки;

  • способы сортировки массивов;

  • методы динамического распределения памяти;

  • механизм создания, записи, чтения и перезаписи файлов на диск;

  • использование наследования для создания новых классов при объектно-ориентированном программировании;

уметь:

  • разрабатывать алгоритм и анализировать его;

  • описывать типы данных;

  • создавать пользовательские типы данных;

  • объявлять глобальные и локальные переменные;

  • использовать операторы IF и IF-ELSE для принятия решения в соответствии со значением выражения;

  • использовать операторы SWITCH для упрощения вложенных конструкций IF-ELSE;

  • решать задачи с помощью различных видов цикла;

  • создавать циклы с предусловием (WHILE-DO), постусловием (REPEAT-UNTIL) и параметром (FOR);

  • применять вложенные циклы;

  • использовать нисходящий метод проектирования для решения сложных задач путем разбивки их на более мелкие;

  • писать функции и процедуры;

  • объявлять массивы, в том числе многомерные;

  • сортировать массивы различными способами;

  • объявлять указатели;

  • адресовать память;

  • использовать строковые функции для копирования, поиска, сравнения, разложения на подстроки;

  • работать с файловыми потоками прямого и последовательного доступа;

  • использовать объектно-ориентированное программирование для создания новых классов из уже существующих;

  • создавать массивы объектов классов;

  • создавать, удалять динамические массивы объектов класса.

На изучение дисциплины отводится 46 часов, из них 20 – лабораторно-практические.

В содержании дисциплины указаны требования к знаниям, умениям и навыкам студентов по темам. В процессе изучения дисциплины предусмотрено выполнение двух контрольных работ (домашней и классной). Домашняя контрольная работа составлена на одиннадцать вариантов, приведены требования к оформлению. В качестве примера решения заданий разобран одиннадцатый вариант контрольной работы.

Итоговая форма контроля по дисциплине – экзамен.

СОДЕРЖАНИЕ ДИСЦИПЛИНЫ

Введение

Студент должен:

иметь представление:

  • о задачах дисциплины;

  • о месте предмета в учебном плане и его связях с другими дисциплинами;

знать:

  • современное состояние и перспективы развития языков программирования

Содержание и задачи дисциплины. Место дисциплины в учебном плане, связь с другими дисциплинами.
Раздел 1. Основы алгоритмизации

Тема 1.1 Разработка алгоритмов

Студент должен:



знать:

  • понятия: алгоритм, программа;

  • свойства алгоритмов;

  • методы разработки алгоритмов;

  • способы представления алгоритмов;

  • основные конструкции блок-схем;

уметь:

  • разрабатывать алгоритмы для решения простейших задач;

  • изображать алгоритм в виде блок-схемы;

  • использовать конструкции блок-схем для решения задач

Понятия: алгоритм, программа. Свойства алгоритма. Методы разработки и способы представления алгоритмов. Элементарные базовые управляющие структуры: последовательность, ветвление, различные циклы (с предусловием, с постусловием, параметрические).


Вопросы и задания для самопроверки:

  1. Приведите примеры алгоритмов.

  2. Что подразумевает под собой свойство алгоритма массовость?

  3. Составьте блок-схему для определения наибольшего из трёх чисел.

  4. В чём заключаются отличия между циклом с постусловием и циклом с предусловием?


Рекомендуемая литература: 1.3, 2.1, 2.3
Тема 1.2. Этапы решения задач

Студент должен:



знать:

  • понятие: модель;

  • этапы решения задач;

  • схему решения задач с помощью ЭВМ;

уметь:

  • выделять этапы решения задач;

  • правильно осуществлять постановку задачи;

  • проводить анализ результатов работы алгоритма.

Этапы решения задач с помощью ЭВМ: постановка задачи, создание модели, алгоритм, кодирование алгоритма, анализ результатов. Правила постановки задачи. Модель: входные и выходные параметры, соотношение между ними.


Вопросы и задания для самопроверки:

  1. Что такое математическая модель?

  2. Охарактеризуйте каждый этап построения модели.

  3. Для каких целей производится анализ результатов работы программы?

  4. Рассмотрите этапы решения задач (постановка задачи, модель, алгоритм, анализ результатов) на примере подсчёта всех кратных трём чисел от 1 до n.


Рекомендуемая литература: 1.3, 2.1, 2.3
Тема 1.3. Языки программирования

Студент должен:



иметь представление:

  • о развитии языков программирования;

знать:

  • понятия: транслятор, интерпретатор, компилятор;

  • основные виды программирования;

уметь:

  • выделять отличительные особенности компиляторов и интерпретаторов;

  • характеризовать основные виды программирования

История развития языков программирования. Виды программирования: структурное, модульное, функциональное, процедурное, логическое. Принципы различных методов программирования. Трансляторы: интерпретаторы и компиляторы.


Вопросы и задания для самопроверки:

  1. Изобразите схему разделения языков программирования по видам.

  2. Дайте определение транслятора.

  3. Чем отличается компилятор от интерпретатора?

  4. Какой из трансляторов используется в интегрированной среде разработке Pascal?


Рекомендуемая литература: 1.3, 2.1, 2.3
Раздел 2. Язык Турбо Паскаль

Тема 2.1. Основы языка

Студент должен:



знать:

  • алфавит;

  • правила записи идентификаторов в языке Турбо Паскаль;

  • структуру программы;

  • назначение некоторых разделов программы;

  • пункты меню Турбо Паскаля

уметь:

  • правильно записывать идентификаторы;

  • работать в среде Турбо Паскаль

Алфавит языка, лексемы, идентификаторы, служебные слова, структура программы на языке Турбо Паскаль. Знаки операций, разделители. Среда Турбо Паскаля.


Вопросы и задания для самопроверки:

  1. Обозначьте правила записи идентификаторов.

  2. Какие заголовки программ правильны:

  • Program Zarplata

  • Program Сумма

  • Program Summa Nalogov

  • Программа 12Kurs2

  • Program Summa_Elementov

  1. Охарактеризуйте пункты меню ИСР Pascal “edit”, “windows”, “file”, “run”.

  2. Какие знаки относятся к разделителям?

  3. Запишите структуру на языке Pascal.


Рекомендуемая литература: 1.3, 1.4, 2.2, 2.5
Тема 2.2. Типы данных

Студент должен:



знать:

  • стандартные типы данных;

  • расширение стандартных типов данных;

  • интервальный и перечислимый типы;

  • правила записи и объявления констант и переменных;

  • функции ORD, CHR, PRED, SUCC

уметь:

  • правильно описывать и применять константы и переменные;

  • объявлять стандартные и скалярные типы данных;

  • использовать пункты меню при написании программ

Простые типы данных: целый, действительный, логический, символьный. Понятия: константа и переменная. Способы описания констант и переменных. Расширение стандартных типов. Диапазоны типов данных. Скалярные типы: ограниченный (интервальный) и перечислимый.


Вопросы и задания для самопроверки:

  1. Что такое тип данных?

  2. Обозначьте все целочисленные типы данных.

  3. Обозначьте все вещественные типы данных.

  4. Опишите переменные различных стандартных типов данных.

  5. Можно ли переменной вещественного типа присвоить переменную целого типа? Почему?

  6. Можно ли переменной целого типа присвоить вещественную переменную? Почему?

  7. Какие из следующих утверждений неправильны:

  1. Для описания переменных используется слово var;

  2. Для описания констант используется слово const;

  3. Имена переменных не обязательно описывать в разделе var;

  4. Значение константы можно изменять.


Рекомендуемая литература: 1.3, 1.4, 2.2, 2.5
Тема 2.3. Выражения

Студент должен:



знать:

  • понятия: операнд, операция, выражение, приоритет операций;

  • стандартные математические функции;

  • логические операции;

  • правила записи выражений и операций

уметь:

  • правильно применять математические функции;

  • записывать выражения и операции (арифметические и логические);

  • переводить выражение, записанное в обычном виде в Паскаль и обратно

Понятия: операнд, операция, выражение, приоритет операций. Правила записи выражений. Стандартные математические функции. Выражения и операции: арифметические и логические.


Вопросы и задания для самопроверки:

  1. Запишите некоторое арифметическое выражение и укажите в нём все операнды и операции.

  2. Какие результаты выполнения выражений неправильны и почему:

(3>2) AND (5>6) = True

(60>70) OR (100<90) = True

(‘a’ < ‘b’) XOR (1>0) = True

NOT (30>10) = False

60 >>20 = True

24 / 12 = 2

11 DIV 5 = 1

10 DIV 3 = 3

15 + 21 DIV 2 = 25

11 MOD 5 = 1

14 MOD ( 5 + 3 ) = 2


  1. Записать по правилам Паскаля выражение:



  1. Записать по традиционным правилам выражение:


Рекомендуемая литература: 1.3, 1.4, 2.2, 2.5
Тема 2.4. Операторы языка

Студент должен:



знать:

  • операторы присваивания, простой, составной;

  • операторы ввода/вывода;

  • операторы условия, выбора, перехода;

  • полная и неполная формы условия;

  • описание меток

уметь:

  • применять операторы для решения задач;

  • осуществлять форматный вывод;

  • представлять операторы в виде блок-схем


2.4.1. Оператор простой, составной, присваивания. Ввод/вывод в Паскале

Оператор присваивания (арифметический, логический, литерный). Простой и составной операторы. Пустой оператор. Операторы ввода с клавиатуры и вывод на экран. Форматный вывод.


2.4.2. Условные операторы. Оператор перехода

Условный оператор: полная и сокращенная форма записи. Операторы выбора и перехода. Метки.


Вопросы и задания для самопроверки:

  1. Что такое оператор? Чем отличаются составной и простой операторы?

  2. Как записать пустой оператор?

  3. Напишите программу, которая вводит значения трех переменных: А, В, С типа word и выводит их сумму. Ввод каждого значения произвести с отдельной строки. Результат помещается на отдельную строку. При составлении программы обеспечить приглашение к вводу данных.

  4. Чем отличается оператор write от writeln?

  5. Чем отличается оператор read от readln?

  6. Условный оператор

устанавливает зависимость значения у от значения х. Постройте в тетради график этой зависимости.



  1. Обозначьте общий вид записи оператора выбора, когда данный оператор применяется?

  2. Какие ограничения накладываются на селектор и константы в операторе case?


Рекомендуемая литература: 1.3, 1.4, 2.2, 2.5
Тема 2.5. Простые и вложенные циклы

Студент должен:



знать:

  • понятие цикла;

  • формы записи циклов с постусловием, предусловием, параметром;

  • операторы выхода из цикла;

  • правила применения вложенных циклов

уметь:

  • применять циклические операторы для решения задач;

  • организовывать простые и вложенные циклы;

  • представлять операторы в виде блок-схем

Понятие цикла. Цикл с параметром, цикл с предварительным условием, цикл с последующим условием. Вложенные циклы. Блок-схемы циклов.


Вопросы и задания для самопроверки:

  1. Запишите общий вид каждого цикла.

  2. Когда используется параметрический цикл?

  3. Что такое вложенные циклы? Какие условия необходимо соблюдать при организации вложенных циклов?

  4. Составьте программу вычисления суммы всех двузначных чисел.

  5. Какие ограничения налагаются на параметр в цикле for?


Рекомендуемая литература: 1.3, 1.4, 2.2, 2.5
Тема 2.6. Структурированные типы данных

Студент должен:



знать:

  • понятия: массив, матрица, запись, множество;

  • объявление структурированных типов данных;

  • различные способы задания массивов;

  • функции и процедуры работы со строками;

  • операции над множествами;

  • оператор присоединения;

  • алгоритмы сортировки элементов массивов, алгоритмы поиска;

уметь:

  • использовать структурированные типы данных при решении задач;

  • описывать и задавать одномерные и многомерные массивы;

  • алгоритмы поиска и сортировки;

  • работать со строками.


2.6.1. Массивы

Одномерные и многомерные массивы. Ввод и вывод массивов. Правила работы с массивами. Алгоритмы сортировки элементов массива, алгоритмы поиска.


2.6.2. Символьные строки

Правила описания символьных строк. Процедуры и функции работы с символьными строками.


2.6.3. Множества

Описание множеств. Операции над множествами.


2.6.4. Тип запись. Оператор присоединения

Описание типа запись. Правила работы с записью. Оператор присоединения. Массивы записей.


Вопросы и задания для самопроверки:

  1. Дайте определение массива.

  2. Опишите через раздел описания переменных массив X(20), состоящий из вещественных чисел.

  3. Как получить доступ к элементу массива и строки?

  4. В чём заключаются отличия массивов от множеств?

  5. Каким образом происходит заполнение множества и вывод его элементов на экран?

  6. Напишите программу для заполнения матрицы Z(5, 10) произвольными числами и вывода её на экран.

  7. Для чего применяются операторы random и randomize.

  8. Укажите способы, которыми можно заполнить произвольный массив.


Рекомендуемая литература: 1.3, 1.4, 2.2, 2.5
Тема 2.7. Подпрограммы

Студент должен:



знать:

  • понятие подпрограмма;

  • два вида подпрограмм: функция и процедура;

  • параметры подпрограмм и области их видимости;

  • принципы и особенности использования процедур и функций

уметь:

  • описывать подпрограммы;

  • правильно применять процедуры и функции в программах


2.7.1. Подпрограммы-процедуры

2.7.2. Подпрограммы-функции

Понятие подпрограммы. Подпрограмма-процедура. Подпрограмма-функция. Правила вызова подпрограмм. Параметры-значения, параметры-переменные. Локальные и глобальные параметры. Область видимости переменных.


Вопросы и задания для самопроверки:

  1. Дайте определение подпрограмме.

  2. Укажите особенности использования подпрограмм-функций.

  3. Напишите подпрограмму-функцию и подпрограмму-процедуру для вычисления факториала некоторого числа.

  4. Охарактеризуйте параметры подпрограмм (локальные, глобальные, параметры-переменные, параметры-значения): назначение, описание, использование.

  5. Каким образом осуществляется вызов подпрограмм?

  6. Можно ли одну и туже функцию вызывать несколько раз? А процедуру?

  7. Как связаны между собой фактические и формальные параметры?


Рекомендуемая литература: 1.4, 1.5, 2.2, 2.5
Тема 2.8. Файлы

Студент должен:



знать:

  • понятия: логический и физический файл;

  • принцип организации файлов разных типов;

  • правила работы с файлами разных типов;

  • процедуры и функции для работы с файловым типом данных

уметь:

  • описывать файловый тип;

  • работать с файлами разного типа


2.8.1. Текстовые файлы

2.8.2. Типизированные файлы

2.8.3. Нетипизированные файлы

Понятие файла. Текстовые, типизированные, нетипизированные файлы. Организация доступа к файлам, процедуры и функции для работы с файлами. Алгоритмы записи, чтения файлов.


Вопросы и задания для самопроверки:

  1. Что представляют собой такие понятия, как логический и физический файл?

  2. Для чего применяются переменные файлового типа?

  3. Запишите словесные алгоритмы чтения файла, записи в файл и дозаписи данных в файл, при этом необходимо учесть особенности использования типизированных, нетипизированных и текстовых файлов.

  4. Чем отличаются операторы read и readln при использовании их для работы с текстовыми файлами.

  5. Можно ли в один и тот же файл записать значения переменных разного типа? Почему?

  6. Напишите программу для чтения произвольного файла с диска.


Рекомендуемая литература: 1.4, 1.5, 2.2, 2.5
Тема 2.9. Динамическая память

Студент должен:



знать:

  • объявление и использование указателей и динамической памяти;

  • процедуры и функции для работы с динамической памятью

уметь:

  • объявлять указатели;

  • применять указатели


2.9.1. Указатели и динамическая память

2.9.2. Процедуры и функции для работы с динамической памятью

Понятие об адресах и указателях, объявление и использование указателей. Процедуры и функции для работы с указателями.


Вопросы и задания для самопроверки:

  1. Каким образом в Pascal происходит обращение к динамической памяти.

  2. Приведите примеры описания указателей различного типа.

  3. Охарактеризуйте операцию разыменования.

  4. Запишите процедуры и функции, позволяющие работать с графикой через использование динамической памяти.

  5. Какие преимущества даёт использование динамической памяти для организации движения в графике.


Рекомендуемая литература: 1.4, 1.5, 2.2, 2.5
Раздел 3. Модульное программирование

Тема 3.1. Принципы модульного программирования

Студент должен:



знать:

  • понятие модуля;

  • принципы модульного программирования;

  • назначение модулей

уметь:

  • применять принципы модульного программирования на практике

Понятие модуля. Принципы модульного программирования. Построение программ на основе модулей.


Вопросы и задания для самопроверки:

  1. Дайте понятие библиотечного модуля.

  2. Охарактеризуйте модульное программирование.

  3. Для каких целей применяется разбиение программы на модули?


Рекомендуемая литература: 1.4, 1.5, 2.2, 2.5
Тема 3.2. Модуль пользователя

Студент должен:



знать:

  • включение модуля в программу;

  • структуру модулей;

  • правила использования модулей

уметь:

  • правильно называть модуль;

  • создавать собственные модули

Пользовательский модуль. Структура модуля: заголовок, интерфейсная часть, инициализационный раздел, инициализационная часть.


Вопросы и задания для самопроверки:

  1. Дайте понятие пользовательского модуля.

  2. Охарактеризуйте структуру модуля.

  3. В каком разделе описываются переменные и подпрограммы, доступные только внутри модуля?

  4. В каком разделе описываются переменные и подпрограммы, доступные внешней программе?

  5. Каким образом происходит подключение пользовательского модуля к программам?

  6. Можно ли многократно использовать подпрограммы, описанные в некотором модуле?


Рекомендуемая литература: 1.4, 1.5, 2.2, 2.5
Тема 3.3. Стандартные модули

Студент должен:



знать:

  • отличия пользовательских и стандартных модулей;

  • способ включения модулей в программу;

  • возможности стандартных модулей;

  • функции и процедуры модуля CRT;

  • функции и процедуры модуля GRAPH

уметь:

  • применять возможности модулей;

  • управлять курсором, звуком в текстовом режиме;

  • инициализировать графику;

  • создавать графические объекты;

  • осуществлять движение графических объектов


3.2.1. Обзор библиотечных модулей

3.2.2. Модуль CRT

3.2.3. Модуль GRAPH

Подключение стандартных библиотечных модулей. Назначение модулей: DOS, OVERLAY, PRINTER, CRT, GRAPH. Установка текстовых режимов. Очистка экрана. Управление курсором. Вывод на цветной и монохромный экран. Работа с буфером экрана. Текстовые окна. Управление экраном и звуком. Аппаратная и программная поддержка графики. Инициализация графики. Базовые процедуры и функции. Работа с текстом. Построение графических фигур. Движение графических фигур.


Вопросы и задания для самопроверки:

  1. Дайте определение стандартного библиотечного модуля.

  2. В чём заключаются отличия пользовательского и стандартного модуля?

  3. Оформите стандартные процедуры и функции модуля CRT в виде таблицы.

  4. Оформите стандартные процедуры и функции модуля GRAPH в виде таблицы.

  5. Разработайте алгоритм организации движения графических объектов.


Рекомендуемая литература: 1.4, 1.5, 2.2, 2.5
Раздел 4. Основы объектно-ориентированного программирования

Студент должен:



знать:

  • понятия: объект, инкапсуляция, полиморфизм, наследование;

  • основные принципы объектно-ориентированного программирования;

уметь:

  • применять на практике принципы объектно-ориентированного программирования

Понятия: объект, инкапсуляция, полиморфизм, наследование. Основные принципы объектно-ориентированного программирования. Иерархия объектов. Наследование записей. Методы. Внутреннее представление объектов.


Вопросы и задания для самопроверки:

  1. Что понимается под объектом в Pascal?

  2. Создайте собственный объект с некоторыми свойствами.

  3. Приведите примеры инкапсуляции, полиморфизма и наследования.


Рекомендуемая литература: 1.4, 1.5, 2.2, 2.5
Раздел 5. Математические методы в программировании

Студент должен:



знать:

  • методы одномерной оптимизации;

  • методы интегрирования и дифференцирования;

  • алгоритмы применения математических методов;

  • программная реализация математических методов

уметь:

  • строить алгоритмы использования математических методов;

  • оптимизировать функции;

  • программно реализовывать некоторые методы

Методы численного интегрирования, дифференцирования. Приближенные вычисления. Методы оптимизации функций.


Вопросы и задания для самопроверки:

  1. Назовите основные математические методы, реализованные с помощью ЭВМ.

  2. Представьте в словесном виде алгоритм определения максимума некоторой функции с помощью метода половинного деления.

  3. Изобразите блок-схему метода правых прямоугольников для вычисления интеграла.

  4. Проведите сравнительный анализ методов интегрирования.

  5. Программно реализуйте вычисление произвольного интеграла методом касательных.


Рекомендуемая литература: 1.4, 1.5, 2.3, 2.2, 2.5
Раздел 6. Основы С++

Тема 6.1. Лексические основы языка С++

Студент должен:



знать:

  • алфавит;

  • принципы программирования в С++;

  • правила записи идентификаторов;

  • структура программы на С++

уметь:

  • правильно записывать идентификаторы

Общие сведения о программах, лексемах и алфавите, идентификаторах и служебных словах. Константы, знаки операций, разделители.


Вопросы и задания для самопроверки:

  1. Обозначьте правила записи идентификаторов в C++. Проведите сравнение с Pascal.

  2. Какие знаки относятся к разделителям?

  3. Охарактеризуйте логические операции в С++.

  4. Для чего используются библиотеки в С++?

  5. Укажите назначение библиотеки iostream.h.


Рекомендуемая литература: 1.1, 1.2, 2.4, 2.6
Тема 6.2. Скалярные типы и выражения

Студент должен:



знать:

  • скалярные типы данных;

  • диапазоны типов данных;

  • описание типов;

  • операции инкремента, декремента, их отличия;

  • правила преобразования одних типов данных к другим

уметь:

  • описывать различные типы данных;

  • осуществлять преобразования типов;

  • осуществлять простейшие операции при работе с данными.

Типы данных: описание, преобразование. Вещественные, целые, символьные, логические типы данных. Операции инкремента и декремента.


Вопросы и задания для самопроверки:

  1. Перечислите основные скалярные типы данных и укажите их диапазоны.

  2. Что представляют собой операции инкремента и декремента?

  3. Опишите переменные различных типов данных.

  4. Произведите явное и неявное преобразование переменной вещественного типа в целочисленный. Охарактеризуйте, что при этом произошло на физическом уровне?

  5. Можно ли переменной целого типа присвоить вещественное значение.


Рекомендуемая литература: 1.1, 1.2, 2.4, 2.6
Тема 6.3. Ввод/вывод в С++

Студент должен:



знать:

  • синтаксис операторов ввода/вывода;

  • особенности вывода данных различных типов;

  • стандартные потоки ввода/вывода

уметь:

  • правильно использовать операторы в программах;

  • включать библиотеки ввода/вывода;

  • корректно выводить данные различных типов

Общие сведения о библиотеке потокового ввода/вывода. Стандартные потоки для базовых типов. Особенности вывода данных различных типов.


Вопросы и задания для самопроверки:

  1. Укажите операторы ввода/вывода.

  2. Какие символьные константы используются при выводе и для чего они предназначены?

  3. С помощью какой команды осуществляется подключение библиотек?

  4. Напишите программу для определения значений тригонометрических функций от некоторого числа, введённого с клавиатуры.


Рекомендуемая литература: 1.1, 1.2, 2.4, 2.6
Тема 6.4. Условный оператор

Студент должен:



знать:

  • синтаксис условного оператора, операторы выбора;

  • полная и неполная формы условия;

  • краткая запись условия в С++;

  • логические выражения и операции

уметь:

  • применять условный оператор и оператор выбора для решения простейших задач;

  • правильно составлять условие;

  • использовать как общую, так и краткую запись условного оператора;

  • составлять логические выражения;

  • производить логические операции

Операторы языка: операторы условия и выбора. Логические операции и выражения. Краткая форма записи условия. Особенности применения оператора выбора.


Вопросы и задания для самопроверки:

  1. Запишите общий вид условного оператора на языке С++.

  2. Вспомните блок-схемы полного и неполного условного оператора.

  3. Каким образом осуществляется краткая запись условного оператора?

  4. Запишите общий вид оператора выбора на языке С++.

  5. Составьте логическое выражение и запишите для него таблицу истинности.

  6. Напишите программу для определения наибольшего из трёх чисел.


Рекомендуемая литература: 1.1, 1.2, 2.4, 2.6
Тема 6.5. Циклические операторы

Студент должен:



знать:

  • операторы циклов: параметрический, с постусловием, с предусловием;

  • операторы передачи управления;

  • простые и вложенные циклы

уметь:

  • применять операторы циклов;

  • организовывать простые и вложенные циклы;

  • передавать управление в циклах

Операторы языка: операторы цикла, операторы передачи управления. Различия в операторах передачи управления. Простые и вложенные циклы.


Вопросы и задания для самопроверки:

  1. Укажите общий вид записи параметрического цикла в С++ и его блок-схему.

  2. Укажите общий вид записи цикла с предусловием в С++ и его блок-схему.

  3. Укажите общий вид записи цикла с постусловием в С++ и его блок-схему.

  4. Для цикла с параметром определите все возможные способы его записи. Охарактеризуйте их.

  5. Проведите сравнительный анализ действия циклов в Pascal и C++.

  6. Напишите программу для определения количества всех простых чисел от 1 до n.


Рекомендуемая литература: 1.1, 1.2, 2.4, 2.6
Тема 6.6. Функции, прототипы функций

Студент должен:



знать:

  • определение, описание и вызов функций;

  • особенности использования прототипов функций;

  • параметры функций;

  • библиотеки функций

уметь:

  • описывать функции и прототипы функций;

  • вызывать функции;

  • правильно определять параметры функций;

  • создавать собственные библиотеки функций

Определение, описание и вызов функций. Функции с переменным количеством параметров. Рекурсивные функции. Аргументы функции main. Параметры функций: локальные и глобальные.


Вопросы и задания для самопроверки:

  1. Что представляет собой функция?

  2. Укажите назначение прототипов функций.

  3. Обозначьте параметры функций, их назначение, описание, способы использования.

  4. Каким образом происходит вызов функции?

  5. Как записываются параметры, заданные по умолчанию?

  6. Чем отличаются внутренние функции от внешних? Укажите правила использования внешних функций.

  7. Напишите программу, которая будет вычислять сумму двух факториалов. Причём факториал определяется через внешнюю функцию.


Рекомендуемая литература: 1.1, 1.2, 2.4, 2.6
Тема 6.7. Указатели и массивы в С++

Студент должен:



знать:

  • понятие: массив, указатели;

  • объявление и использование одномерных и многомерных массивов;

  • объявление и использование указателей:

  • методы сортировки;

  • методы поиска элементов в массивах;

уметь:

  • создавать и описывать массивы и указатели;

  • использовать массивы и указатели;

  • использовать методы сортировки и поиска элементов

Указатели и адреса объектов, связи массивов и указателей. Многомерные массивы, массивы указателей, динамические массивы. Пузырьковая сортировка, сортировка методом Шелла, быстрая сортировка. Методы поиска элементов в одномерных и многомерных массивах.


Вопросы и задания для самопроверки:

  1. Каким образом происходит описание массивов в С++?

  2. Опишите одномерный массив X(10) вещественных чисел.

  3. Укажите правильные описания массивов:

а) int A[4];

б) float x(7);

в) byte Y[1..10];

г) long F[5][6], D[4];

д) int G[6, 6];

е) char H[7], j[5][4]



  1. Напишите программу для подсчёта количества чётных элементов в массиве X(n, m).

  2. Для чего предназначены указатели?

  3. Опишите указатели на различные типы данных.

  4. Каким образом происходит операция разыменования и для чего она предназначена?


Рекомендуемая литература: 1.1, 1.2, 2.4, 2.6
Тема 6.8. Структуры и объединения

Студент должен:



знать:

  • понятия: структура, объединение, конструктор, деструктор;

  • способы описания структур и т.д.;

  • сферы применения

уметь:

  • описывать и применять структуры, объединения;

  • описывать и применять конструкторы и деструкторы

Структура как тип данных. Объединение разнотипных данных. Особенности применения структур и объединений и их различия. Конструкторы и деструкторы.


Вопросы и задания для самопроверки:

  1. С помощью каких служебных слов описываются структуры и объединения?

  2. Какой тип в Pascal ближе всего по описанию к типу “структура”?

  3. Опишите структуру, содержащую следующие данные: фамилия, группа, три оценки.

  4. В чём заключаются различия в использовании структур и объединений?

  5. Для чего предназначены конструкторы и деструкторы?

  6. Создайте объединение, конструктор и деструктор.


Рекомендуемая литература: 1.1, 1.2, 2.4, 2.6
Тема 6.9. Классы в С++

Студент должен:



знать:

  • понятия: класс, наследование, потомок, предок;

  • основные свойства классов;

  • описание классов

уметь:

  • применять классы;

  • использовать принципы наследования;

  • создавать классы

Понятие класса. Наследование, потомок, предок. Основные свойства классов. описание и применение классов в С++. Принципы наследования.


Вопросы и задания для самопроверки:

  1. Охарактеризуйте назначение класса, как одного из основных понятий ООП.

  2. Поясните на конкретных примерах свойства классов.

  3. Создайте собственный класс с произвольным наполнением.

  4. Потомок наследует все свойства предка? Почему?


Рекомендуемая литература: 1.1, 1.2, 2.4, 2.6
Тема 6.10. Графические операторы в С++

Студент должен:



знать:

  • графические функции;

  • особенности использования графики;

уметь:

  • инициализировать графику в С++;

  • применять графические функции;

  • осуществлять движение графических объектов

Графическая библиотека graphics.h. Инициализация графики. Графические функции. Организация движения графических объектов.


Вопросы и задания для самопроверки:

  1. С помощью какой функции происходит инициализация графики? Охарактеризуйте параметры этой функции.

  2. Составьте таблицу графических функций с указанием типа параметров.

  3. Напишите программу для организации движения закрашенного прямоугольника по диагонали.


Рекомендуемая литература: 1.1, 1.2, 2.4, 2.6
Тема 6.11. Стадии и команды процессорной обработки

Студент должен:



знать:

  • стадии процессорной обработки;

  • команды процессорной обработки;

  • директивы замены, подстановки

уметь:

  • выделять стадии процессорной обработки;

  • применять команды замены и подстановки

Стадии и команды процессорной обработки. Директивы замены и подстановки. Особенности работы компилятора. Представление директив в программном коде после обработки компилятора.


Вопросы и задания для самопроверки:

  1. Дайте определение директивы.

  2. Каким образом преобразуется программа после обработки компилятором?

  3. Охарактеризуйте операцию замены.

  4. Как работает препроцессор с директивой #include?


Рекомендуемая литература: 1.1, 1.2, 2.4, 2.6
Классная контрольная работа по темам “Массивы в Pascal” и “Подпрограммы в Pascal” (2 часа)
Примерные задания на контрольную работу:

  1. Составить алгоритм в виде блок-схемы и программу для определения факториала некоторого числа. Использовать подпрограмму функцию или процедуру.

  2. Составить алгоритм в виде блок-схемы и программу для вычисления суммы всех отрицательных элементов массива X[n, m].

  3. Составить алгоритм в виде блок-схемы и программу для подсчёта количества положительных элементов массива X[10, 5].

ДОМАШНЯЯ КОНТРОЛЬНАЯ РАБОТА
ТРЕБОВАНИЯ К ВЫПОЛНЕНИЮ:

  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="<

В самом начале программы подключаются необходимые для работы библиотеки: iostream.h, conio.h, math.h.

Комментарии в листинге программы указаны в скобках /* */ или после двух обратных слешей “//”. Алгоритм решения представлен на рис.1.



Алгоритм:

Рис.1. Алгоритм к первой задаче



Листинг программы:
#include /* подключение стандартной библиотеки ввода-вывода */

#include /* подключение библиотеки математических функций */

#include /* подключение библиотеки по работе с экраном */

main() // главная функция

{

clrscr(); // очистка экрана (библиотека conio.h)



double y=0,x=1; /* описание вещественных переменных с инициализацией */

int i,n=9; /* описание целочисленных переменных с инициализацией */

for(i=1;i<=n;i++) // параметрический цикл

{ y=y+sin(x/i); // начало цикла и вычисление y

x=x+0.5;} // увеличение x и конец цикла

cout<<"y="<

getch(); /* функция, которая возвращает значение нажатой клавиши */

} // завершение программы



Задача №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<

В начале программы подключаются библиотеки: iostream.h – стандартная библиотека ввода/вывода, stdlib.h – библиотека для работы со случайными числами с помощью функций randomize() и random(), conio.h – функции очистки экрана и задержки выполнения программы.
Алгоритм: см. рис. 2.
Листинг программы:

#include // подключение стандартной библиотеки ввода-вывода

#include //подключение библиотеки для работы с генератором случайных чисел

#include // подключение библиотеки по работе с экраном

main() // главная функция

{ clrscr();// очистка экрана (библиотека conio.h)

int i,n,x[50],k=0; // описание целочисленных переменных с инициализацией и массива

cout<<"введите размерность массива "; // вывод на экран сообщения

cin>>n; // ввод значения переменной n

randomize(); // функция, которая меняет набор случайных чисел

cout<<"исходный массив \n"; // вывод сообщения с переходом на новую строку (\n)

for(i=0;i

{ // начало цикла

x[i]=random(41)-20; // заполнение массива случайным образом

if (x[i]<0) k++; // условие для подсчёта количества отрицательных элементов

cout<

} // конец цикла

cout<<"\n количество отрицательных = "<

cout<<"\n\n\изменённый массив\n"; // вывод двух пустых строк и сообщения

for(i=0;i

{ // начало цикла

if (x[i]<0) x[i]=k; // замена элементов по условию

cout<

} // конец цикла

getch();// функция, которая возвращает значение нажатой клавиши

} // завершение программы


Рис. 2. Блок-схема к задаче №2.



Задача №3

В матрице z(n, m) расположить по главной диагонали максимальные элементы из каждой строки



Решение:

Исходные данные: матрица z(n, m), т.е. двумерный массив; n и m –количество строк и столбцов (размерность массива). Выходные данные: изменённый массив, где по главной диагонали расположены максимальные элементы каждой строки. Двумерный массив зададим с помощью двух вложенных параметрических циклов: первый цикл по i будет определять строки, второй по j - столбцы. Сами элементы выбираются произвольным образом генератором случайных чисел random, randomize – служит для смены набора случайных чисел, т.е. при каждом новом запуске программы элементы в массиве меняются. Для того чтобы массив при выводе на экран был похож на матрицу после вывода элементов каждой строки cout<
Алгоритм в виде блок-схемы: см. рис. 3.
Листинг программы:

#include // стандартная библиотека ввода/вывода

#include // библиотека для использования генератора случайных чисел

#include // библиотека, в которой содержатся функции 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

{ // начало внешнего цикла

for (j=0;j

{ // начало внутреннего цикла

z[i][j]=random(40); // заполнение матрицы случайными числами от 0 до 39

cout<

} // конец внутреннего цикла

cout<<'\n';} // переход на новую строку для вывода матрицы в общепринятом виде

//циклы для определения максимального в строке и перестановки элементов

for (i=0;i

{ max=z[i][0]; imax=i; jmax=0; /* предположим самый максимальный элемент строки находится в нулевом столбике каждой строки */

for (j=0;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

{ for (j=0;j

cout<

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 // библиотека ввода/вывода

#include // библиотека работы с экраном

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<

getch(); } // задержка выполнения программы, завершение программы

long factorial(int x) // заголовок пользовательской функции

{ long i, f=1; // описание и инициализация локальных переменных

for (i=1; i<=x; i++) f*=i; // цикл для вычисления факториала, используется сокращённая запись

return f;} // функция возвращает значение переменной f

Рис. 5. Блок-схема к задаче №4


ПРИМЕРНЫЙ ПЕРЕЧЕНЬ ВОПРОСОВ К ЭКЗАМЕНУ



Алгоритмизация и Pascal

  1. Этапы решения задач с помощью ЭВМ

  2. Понятие ”алгоритм”, определите его свойства, способы представления

  3. Конструкции блок-схем как один из способов представления алгоритмов

  4. Сочетание различных структур блок-схем на примерах

  5. Трансляторы, их виды, назначение и отличия

  6. Лексические основы языка Паскаль: лексемы, алфавит

  7. Правила записи идентификаторов, примеры написания

  8. Структура программы на языке Паскаль, охарактеристика каждого раздела

  9. Целый тип данных – integer: описание, диапазон, основные операции

  10. Вещественный тип – real: описание, диапазон, основные операции

  11. Логический тип – boolean: описание, диапазон, основные операции

  12. Символьный тип - char: описание, диапазон, основные операции

  13. Расширения стандартных типов данных: описание, диапазон

  14. Использование и описание констант различных типов

  15. Правила описания и использования переменных различных типов

  16. Правила описания и использования пользовательских типов

  17. Перечислимый и интервальный типы: характеристика, описание, примеры использования

  18. Выражения. Операции (логические и арифметические). Операнды

  19. Условный оператор: общий вид записи, назначение, примеры использования

  20. Оператор выбора: общий вид записи, назначение, примеры использования

  21. Оператор перехода: общий вид записи, назначение, примеры использования. Описание меток

  22. Особенности применения различных видов цикла

  23. Цикл с предусловием: общий вид записи, блок-схема, принцип действия

  24. Цикл с постусловием: общий вид записи, блок-схема, принцип действия

  25. Параметрический цикл: общий вид записи, блок-схема, принцип действия

  26. Правила организации вложенных циклов. Привести примеры

  27. Подпрограммы-процедуры: описание, особенности применения

  28. Подпрограммы-функции: описание, особенности применения

  29. Назначение, область действия локальных и глобальных параметров

  30. Назначение, область действия фактических и формальных параметров

  31. Описание, ввод/вывод одномерных массивов

  32. Описание, ввод/вывод двумерных массивов

  33. Обработка массивов: поиск, сортировка, арифметические действия

  34. Строковый тип: описание, операции по обработке

  35. Множества: описание, включение/исключение элементов

  36. Логические и арифметические операций над множествами

  37. Комбинированный тип – запись: описание, назначение, доступ к полям

  38. Оператор with, как эффективный способ работы с полями записи

  39. Принципы и примеры организации массивов записей

  40. Описание файловых переменных: типизированных, нетипизированных и текстовых. Различия в использовании

  41. Функции и процедуры для работы с файлами

  42. Назначение, описание указателей

  43. Процедуры и функции для работы с динамической памятью

  44. Основные принципы модульного программирования

  45. Организация пользовательского модуля, его структура

  46. Назначение различных частей модуля

  47. Включение и использование пользовательского модуля в основной программе

  48. Обзор стандартных библиотечных модулей

  49. Процедуры и функции для работы с модулем Crt

  50. Процедуры и функции для работы с модулем Graph

  51. Понятия и свойства ООП: инкапсуляция, полиморфизм, наследование, иерархия

  52. Алгоритмы отделения корней в программировании: метод половинного деления, хорд, касательных

  53. Алгортмы вычисления интегралов в программировании: метод правых и левых прямоугольников, трапеций, Симпсона


Язык программирования С++

  1. Примерная структура программы на С++, назначение файла iostream.h

  2. Лексические основы С++: алфивит, идентификаторы, константы, разделители

  3. Описание, диапазон основных скалярных типов С++

  4. Особенности описания переменных и типов в сравнении с Pascal

  5. Осуществление преобразования типов: явное и неявное

  6. Составление арифметических выражений, сокращённые записи

  7. Составление логических выражений и правила их записи

  8. Организация ввода/вывода, применение символьных констант

  9. Общий вид и назначение условного оператора. Провести сравнение с Pascal

  10. Общий вид, назначение и примеры использования оператора-переключателя

  11. Оператор перехода: общий вид записи, метки, сравнение с Pascal

  12. Циклические операторы: виды циклов, особенности применения

  13. Организация вложенных циклов в С++

  14. Прерывание программы или её автономной части: операторы break, continue

  15. Принципы создания и применения пользовательских функций на конкретном примере

  16. Параметры функций: виды, назначение, использование в программе. Функции, использующие параметры по умолчанию

  17. Назначение и описание прототипов функций

  18. Создание собственной библиотеки функций: этапы разработки, подключение, правила использования

  19. Описание и ввод/вывод одномерных массивов в С++

  20. Описание и ввод/вывод многомерных массивов в С++

  21. Указатели в С++: процедуры и функции для работы с динамической памятью

  22. Создание структур и объединений в С++

  23. Классы в С++: назначение, создание, свойства

  24. Охарактеризуйте стадии процессорной обработки

  25. Команды процессорной обработки: включение файлов, директива замены

  26. Процедуры и функции заголовочного файла conio.h, их описание и назначение

  27. Графическая библиотека: файл “graphics.h”, процедура инициализации, примеры использования

  28. Графические функции: описания, примеры использования



ПРИМЕРНЫЕ ПРАКТИЧЕСКИЕ ЗАДАНИЯ К ЭКЗАМЕНУ


  1. Составить математическую модель задачи

  2. Составить алгоритм решения

  3. Рассмотреть все этапы решения задач на конкретном примере

  4. Определить, правильно ли записаны идентификаторы

  5. Записать числа в определённом формате

  6. Описание различных типов данных (стандартных и пользовательских)

  7. Записать арифметические и логические выражения по правилам Паскаля

  8. Решение задач на применение операторов: условного, выбора и перехода

  9. Решение задач с использованием различных видов цикла

  10. Изменение в цикле нескольких параметров одновременно

  11. Составить программу с использованием подпрограмм-процедур

  12. Составить программу с использованием подпрограмм-функций

  13. Отсортировать массив

  14. Операции над элементами массива

  15. Ввод/вывод матриц

  16. Задание массива с клавиатуры и через генератор случайных чисел

  17. Обработка строк

  18. Создание и использование множеств

  19. Организация массивов записей

  20. Заполнение полей записи

  21. Создание и редактирование различных файлов (типизированных, нетипизированных и текстовых)

  22. Работа с указателями и динамической памятью

  23. Создание собственного модуля

  24. Работа с модулем CRT

  25. Работа с графическими функциями и процедурами

  26. Описание типов в С++

  27. Запись сокращённых операций над данными

  28. Использование операторов cin и cout

  29. Решение задач с условием

  30. Включение оператора-переключателя

  31. Решение задач с использованием простых и вложенных циклов на С++

  32. Организация досрочного выхода из цикла или блока

  33. Создание пользовательских функций

  34. Описание прототипов функций

  35. Задание и вывод массивов

  36. Обработка многомерных массивов

  37. Применение указателей для решения задач

  38. Включение текстов программ из других файлов

  39. Замены идентификаторов в программе

  40. Использование графических функций

  41. Реализация движения графических объектов


ПРИМЕРНЫЙ ПЕРЕЧЕНЬ ЛАБОРАТОРНО-ПРАКТИЧЕСКИХ ЗАНЯТИЙ


  1. Практическая работа №1. “Решение задач с использованием различных видов цикла. Организация вложенных циклов”

  2. Лабораторная работа №1. “Создание и обработка двумерных массивов”

  3. Лабораторная работа №2. “Процедуры и их применение ”

  4. Лабораторная работа №3. “Движение графических объектов”

  5. Лабораторная работа №4. “Программная реализация математических методов”

  6. Лабораторная работа №5. “Организация ввода/вывода в С++”

  7. Лабораторная работа № 6. “Организация вложенных циклов”

  8. Практическое занятие № 2. “Использование функций и прототипов функций”

  9. Практическое занятие № 3. “Создание одномерных и многомерных массивов”

  10. Лабораторная работа № 7. “Организация движения графических объектов”


СПИСОК ЛИТЕРАТУРЫ:

  1. Основная:

    1. Киммел П. Borland C++ 5. - СПб: BHV, 1997.

    2. Подбельский В.В. Язык С++: Учеб. пособие. – 3-е изд., дораб. – М.: Финансы и статистика, 1998.

    3. Попов В.Б. Turbo Pascal для школьников: Учеб. пособие. – 3-е доп. изд. – М.: Финансы и статистика, 1999

    4. Сухарев М. Turbo Pascal 7.0, теория и практика программирования. – СПб: Наука и Техника, 2003.

    5. Турбо Паскаль 7.0. – К.: Издательская группа BHV, 1996

    6. Шаммас Н.К. Основы СИ++ и объектно-ориентированного программирования. – К.: Диалектика, - 1996.

  2. Дополнительная:

    1. Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов. – М.: Радио и связь, 1991.

    2. Епанешников А.М., Епанешников В.А. Программирование в среде Turbo Pascal 7.0 – 3-е изд. – М.: Диалог-МИФИ, 1997.

    3. Есипов А.С. Информатика. Учебник по базовому курсу общеобразовательных учебных заведений. Изд. 2-е, доп. и перераб. – СПб: Наука и Техника, 2001.

    4. Ишкова Э.А. С++. Начала программирования – М.: ЗАО “Издательство БИНОМ”, 2000.

    5. Марченко А.И., Марченко Л.А. Программирование в среде Turbo Pascal 7.0/ под ред. Тарасенок В.П. – 6-е изд., стереотипное, юбилейное. – К.: ВЕК+, 2000.

    6. Сван Т. Освоение Borland C++ 5. - К.: Диалектика, 1996.

    7. Фаронов В.В. Турбо-Паскаль 7.0. – М.: Нолидж, 1997.


скачать файл



Смотрите также:
Декоративные композиции Методические указания и контрольные задания для студентов заочной формы обучения Специальность
98.46kb.
Методические указания для студентов заочной формы обучения по дисциплине
485.54kb.
Методические указания по выполнению контрольной работы для студентов всех специальностей заочной формы обучения
541.39kb.
Методические указания по выполнению контрольных работ включают методические указания по выполнению контрольных работ, задания контрольной работы, вопросы для подготовки к экзамену, список рекомендуемой литературы
488.03kb.
Методические указания по дисциплине «Элементы высшей математики» для студентов заочной формы обучения для специальности
176.42kb.
Программа и варианты к контрольной работе №1 по дисциплине
256.12kb.
Методические указания по выполнению контрольных работ для студентов заочной формы обучения и слушателей факультета обучения в сокращенные сроки по специальности 030501 «Юриспруденция»
482.83kb.
Методические указания для студентов заочной формы обучения при изучении курса «Основы проектной деятельности»
363.44kb.
Методические рекомендации для студентов заочной формы обучения по дисциплине «Человек и его потребности»
137.8kb.
Методические указания по выполнению контрольных работ для студентов заочной формы обучения
263.67kb.
Самарская государственная академия путей сообщения
665.73kb.
Методические указания и контрольные задания по физике для студентов всех специальностей ускоренной формы обучения Воронеж 2008
1193.33kb.