Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Метода(c++)

.pdf
Скачиваний:
30
Добавлен:
04.06.2022
Размер:
1.77 Mб
Скачать

вводить целое число-«флажок» (переменная fl), который будет управлять режимом расчета. Будем полагать, что при вводе в качестве значения

«флажка» 1 (единицы) будет вычисляться y 1 x

2

, а при вводе в качестве

 

значения «флажка» 0 (нуля) будет вычислять функция

y 1 x

2

.

 

Замечание:

a.Учесть, что аргумент функции может быть дробным.

b.Ввод исходных данных должен сопровождаться поясняющими строками-подсказками для пользователя.

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

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

4.Написать код, позволяющий сообщить пользователю результат расчета.

5.Проверить работоспособность программы.

6.С помощью среды C++ Builder (т. е. не выходя из нее!) сделать копию существующего проекта с именем файла модуля – unit_If_2 и именем файла проекта – Pr_If_2.

7.Изменить файл модуля в соответствии со схемой алгоритма, приведенной на рис. 5.

8.Запустить проект, проверить правильность работы программы.

9.Сохранить проект и закрыть проект.

Начало

y 1 x

2

 

 

 

 

 

 

 

 

Да

fl=1?

 

 

 

 

 

 

 

 

Нет

 

y y

 

 

 

 

Конец

Начало

Нет

fl=0?

Да

 

 

 

 

 

y |1 x2 |

 

y 1 x2

 

 

 

Конец

Рис. 5

Рис. 4

21

Упражнение 2. Оператор switch и ветвление с продолжением

1.Открыть проект OperatorSwitch.

2.Сохранить проект и модуль в другой папке (для избежания порчи исходников).

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

4.Нарисовать схему алгоритма работы программы.

5.Запустить проект, убедиться в его работоспособности во всех возможных ветвях.

6.Убрать команды break, запустить проект и просмотреть его работу во всех возможных ветвях. Верна ли она?

7.Просмотреть работу проекта в пошаговом режиме (трассировка должна начаться с оператора switch), чтобы пронаблюдать причины ошибки. Вернуть исходный вариант работы.

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

9.Выполняется по желанию: сохранить проект и модуль с другими именами. Заменить оператор switch на ветвление с продолжением.

10.Выполняется по желанию: открыть проект, получившийся после выполнения п. 8. Изменить его так, чтобы проверка на ввод допустимого номера функции осуществлялась бы в операторе switch. Каким недостатком (мелким и для пользователя) такое решение обладает?

Содержание отчета:

1.Титульный лист

2.Цель работы

3.Краткие теоретические сведения (список используемых операторов, их цель, синтаксис, формат и проч.)

4.Коды модулей С++

5.Копии экрана с примерами работы программ

6.Схемы алгоритмов программ.

7.Выводы по работе.

22

Контрольные вопросы

1.Какие разновидности операторов ветвления существуют в С++?

2.Запишите в общем виде оператор неполного ветвления.

3.Запишите в общем виде оператор полного ветвления.

4.Запишите в общем виде оператор ветвления с продолжением

5.Запишите в общем виде оператор-переключатель.

6.В чем отличие простого оператора от составного?

7.Как отличить простой оператор от составного в коде программы?

8.Как будет выглядеть оператор полного ветвления, если код при истинности условия является простым оператором, а при ложности – составным?

9.Как будет выглядеть оператор полного ветвления, если код при истинности условия является составным оператором, а при ложности – простым?

10.Как будет выглядеть оператор полного ветвления, если код и при истинности и при ложности условия является простым оператором?

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

12.Объясните термин «логическое выражение».

13.Какие значения может принимать логическое выражение?

14.Какие знаки сравнения используются в С++ при вычислении условия?

15.Какие знаки логических операций используются в С++ при вычислении условия?

16.Укажите приоритеты логических операций.

17.Может ли в условии стоять арифметический, а не логический оператор?

18.Каков принцип работы оператора ветвления, если в условии стоит не логический оператор?

19.Сколькими константами может быть помечена любая из case-ветвей оператора-переключателя?

20.Укажите тип констант, которыми может быть помечена любая из caseветвей оператора-переключателя.

21.В каком порядке должны располагаться ветви case и default в операторе switch?

22.Объясните назначение ветви default.

23

23. Объясните цель инструкции break.

24

ЛАБОРАТОРНАЯ РАБОТА №4. ОПЕРАТОРЫ ЦИКЛА,

ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ ПРОЦЕССОВ.

Цель работы: освоение способов реализации циклических процессов на основе конструкций языка С++.

Краткие теоретические сведения:

Под циклом понимается многократное выполнение одних и тех же операторов при различных значениях промежуточных данных. Число повторений может быть задано в явной или неявной формах. Для организации повторений в языке C++ используются три различных оператора цикла.

I. Цикл с параметром

for (выражение1; выражение2; выражение3)

{

Операторы;

}

Здесь:

выражение1 (инициализирующее). Задает начальное значение переменной, управляющей циклом (инициализация счётчика цикла);

выражение2 задает условие продолжения цикла (как правило, это операция отношения). Если оно возвращает не ноль (истина), то выполняется тело цикла, если возвращает ноль (ложь), то выполняется первый оператор стоящий за закрывающей цикл фигурной скобкой;

выражение3

обеспечивает

изменение

цикловой

переменной

(счетчика цикла).

 

 

 

 

Принцип работы for-цикла:

 

 

 

1.

Вычисляется выражение1.

 

 

 

2.

Вычисляется

выражение2. Если

оно истинно (true или

не ноль),

то выполняется тело цикла, после чего вычисляется выражение 3 и см. п.2 сначала. Если ложно – цикл прерывается и управление передается на следующий за циклом оператор.

Упражнение 1. Числа Фибоначчи

Числа Фибоначчи (ряд Фибоначчи) – это элементы числовой возвратной последовательности вида 1, 1, 2, 3, 5, 8, ..., в которых каждый последующий

25

член равен сумме двух предыдущих. Необходимо составить программу, выводящую первые N членов ряда Фибоначчи.

Один из вариантов решения:

1.Создать новый проект, имя проекта – PrFib, имя модуля unitFib.

2.В файле модуля подключить модуль iostream.h.

3.Перейти в функцию main() и набрать код, представленный на рис. 6:

int N;

cout << “Vvedite N:”; cin >> N;

cout << endl << endl << endl << "Ryad Fibona44i для N=" << N << “:”; cout << "Элемент 1 = 1";

cout << "Элемент 2 = 1";

unsigned int f1,f2,f3;

f1=f2=1;

for (unsigned int i=3;i<=N;i++)

{

f3=f2+f1;

f1=f2;

f2=f3;

cout << "Элемент " << i << " = " << f3;

}

cin >> N;

Рис. 6. Код модуля

4.Запустить проект и убедиться в правильности работы кода.

5.Cамостоятельно в отладчике пошагового «прогнать» программу, предварительно добавив в Wath List все необходимые переменные.

6.Нарисовать схему алгоритма программы.

7.Проанализировать работу проекта, выданного преподавателем.

II. Итерационные циклы

1. Цикл с предусловием (while-цикл)

while (условие выполнения цикла)

{

Операторы;

}

Принцип работы while-цикла:

1.Вычисляется условие выполнения цикла.

2.Если оно истинно (не ноль), то выполняются операторы цикл. Далее см. п.1.

26

Если оно ложно, управление передается на следующий оператор.

2. Цикл с постусловием (do-while цикл) do

{

операторы;

}

while (условие выполнения цикла);

Принцип работы do-while-цикла:

1.Выполняются операторы цикла.

2.Вычисляется условие выполнения цикла. Если оно истинно (не ноль), то см. п.1. Если оно ложно, управление передается на следующий оператор.

Упражнение 2.

1.Открыть проект PrWhileFib

2.Перейти в модуль, и сравнить код с тем, что был приведен в п. 3 упражнения 1.

3.Запустить программу, убедиться в ее работоспособности.

4.Нарисовать схему алгоритма программы.

5.Как можно было бы оптимизировать программный код?

6.Изменить while-цикл на do-while цикл. Модуль сохранить с именем unitDoWhileFib, а проект – с именем PrDoWhileFib.

7.Проанализировать работу проекта, выданного преподавателем.

Содержание отчета:

1.Титульный лист

2.Цель работы

3.Краткие теоретические сведения (список используемых операторов, их цель, синтаксис, формат и проч.)

4.Коды модулей С++

5.Копии экрана с примерами работы программ

6.Схемы алгоритмов программ.

7.Выводы по работе.

Контрольные вопросы

1. Дайте определение понятия «цикл».

27

2.Объясните понятия «условие продолжение цикла», «условие окончания цикла», «тело цикла», «прерывание цикла», «зацикливание».

3.Какие виды циклов Вам известны?

4.Нарисуйте схему алгоритма цикла с преусловием.

5.Нарисуйте схему алгоритма цикла с постусловием.

6.В каких случаях используются итерационные циклы?

7.Какие виды итерационных циклов Вам известны?

8.Когда удобно использование цикла с параметром?

9.К какому виду относится цикл с параметром: к циклам с предусловием или с постусловием? почему?

10.Сколько синтаксических конструкций для реализации циклов существует в С++? Приведите их запись.

11.Объясните назначение выражения 1, выражения 2, выражения 3 в синтаксисе записи for-цикла.

12.Объясните принцип работы for-цикла.

13.Могут ли в for-цикле в полях выражения 1, выражения 2, выражения 3 находится составные операторы? оператор «запятая»?

14.Может ли тело цикла быть простым оператором? составным?

15.Может ли выражение 2 в синтаксисе записи for-цикла содержать не логическое выражение?

16.Допустимо ли в for-цикле объявление переменных в выражении 1, выражении 2, выражении 3, а также в теле цикла?

17.Запишите цикл с предусловием в синтаксисе С++.

18.Каков алгоритм выполнения while-цикла?

19.Запишите цикл с постусловием в синтаксисе С++.

20.Каков алгоритм выполнения do-while-цикла?

21.Допустимо ли объявление переменных в теле while или do-while циклов?

22.Может ли в поле «условие» while или do-while циклов находится не логическое выражение?

28

ЛАБОРАТОРНАЯ РАБОТА №5 МАССИВЫ ДАННЫХ,

ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ ПРОЦЕССОВ

Цель работы: знакомство с массивами; освоение реализаций циклических алгоритмов при работе с массивами; знакомство с датчиком случайных чисел.

Краткие теоретические сведения

I. Массивы в С++

1. Одномерный массив. Для объявления:

<ТипЭлементовМассива> <ИмяМассива> [<КоличествоЭлементовМассива>];

Для обращения к элементу массива:

<ИмяМассива>[<НомерЭлемента>]

Нумерация элементов начинается с 0!!!!

2. Двумерный массив Для объявления:

<ТипЭлементовМассива> <ИмяМассива>[<КоличествоСтрок>][<КоличествоСтолбцов>];

Для обращения к элементу массива:

<ИмяМассива>[<НомерСтроки>][<НомерСтолбца>]

Нумерация элементов начинается с 0!!!!

Упражнение 1. Ввод значений элементов массива.

1.Создать новый проект. Сохранить его в папке «InpTable». Имя проекта –

InpTable, имя файла модуля – unitTable.

2.Перейти в функцию main, набрать в ней следующий код:

double Mas[100]={0}; unsigned char NEl;

cout << «Vvedite koli4estvo elementov massiva (<100)»; cin >> NEl;

for (int i=1;i<=NEl;i++)

{

cout << “Vvedite znachenie elementa N”<<i; cin >> Mas[i-1];

}

3. В режиме отладчика запустить программу до строки return 0. Задать количество элементов – 5, значения элементов – 20, 10, 0, -10, -20.

29

4.Открыть Watch List и добавить в него переменную Mas. Просмотреть результат.

5.Добавить в Watch List переменные Mas[0], Mas[2], Mas[4]. Просмотреть результат, сравнить его с тем, что наблюдалось в п. 4. Сделать вывод, какой из способов (п. 4 или п. 5) удобнее.

6.Сбросить программу.

7.Убрать (удалить) в строке double Mas[100]={0} символы ={0}.

8.Вновь выполнить п. 3 и просмотреть Watch List. Какие изменения наблюдаются? Почему?

9.Сбросить программу.

10.Вернуться в функцию main() и после окончания цикла по i набрать

следующий код:

for (int j = 0;j<NEl;j++)

{

cout << Mas[j]<<", ";

}

cout << endl;

11.Не запуская программу, постараться понять действия, выполняемые в вышеприведенном коде.

12.Проверить свои размышления: запустить программу, задать количество элементов – 5, значения элементов – 20, 10, 0, -10, -20.

13.Выполняется по желанию: изменить код в блоке вывода так, чтобы после значения последнего элемента массива не выводилась бы запятая.

14.Закомментарить строки ввода NEl и цикла по i. Вспомнив возможности

инициализации, задать значения первым шести элементам массива 20, 0.2,

30, 0.3, 40, 0.4.

15. Сохранить проект.

Краткие теоретические сведения: II. Датчик случайных чисел

При работе с массивами очень удобен встроенный датчик случайных чисел (функция rand), который существенно облегчает задание значений элементов массива.

Синтаксис:

<ИмяПеременной> = rand();

30

Соседние файлы в предмете Информатика