Для компиляции проекта надо выбрать в главном меню Build > Build <имя проекта> или нажать клавишу F7.
Visual C++ 6.0 откомпилирует исходные файлы и создаст соответствующие файлы с расширением.obj. Затем эти файлы соединяются в исполняемый файл. Весь процесс компиляции и создания исполняемого файла отображается в окне Output, вкладка Build. После компиляции файла его можно запустить.
Для запуска исполняемого файла надо выбрать в главном меню Build > Execute <имя файла>.exe или нажмите клавиши Ctrl+F5. Если файл был создан, то он запустится. Для повторного запуска файла не нужно его снова компилировать. Но если в программу были внесены изменения, то перед запуском необходимо выполнить компиляцию. Выполняется именно файл с расширением.exe, а не текущий проект, т.е. в процессе запуска компиляции не происходит.
Отладка программы
Для отладки программы используется команда главного меню Build>Start Debug> Step Into – отладка с заходом в функции, которая начинается с первой строки функции main или Build>Start Debug> Run to Cursor – выполнение программы до курсора, т. е. отладка начинается с той строки, в которой установлен курсор. После выполнения этой команды выполнение программы происходит в режиме отладчика. Переход к следующей строке программы можно выполнять с помощью команды Step Into (F11) (с заходом во все вызываемые функции) или с помощью команды Step over (F10) (без захода в вызываемые функции). Выход из функции нижнего уровня выполняется командой Step Out (Shift+F11). Текущие значения переменных можно просматривать:
1) в специальных окнах Watch (отображает значения всех используемых переменных)и Value ( отображает значения заданных пользователем переменных);
2) при наведении курсора мышки на переменную отображается текущее значение этой переменной.
Создание рабочего пространства для нескольких проектов
Несколько проектов можно объединить в одно рабочее пространство с помощью команды Project/Insert Project into Workspace. Активный проект, т. е. тот, который будет выполняться, устанавливается с помощью команды Project/Set Active Project. Активный проект надо отметить галочкой.
Лабораторная работа №1
Выполнение программы простой структуры. Вычисление выражений с использованием стандартных функций
1. Цель задания:
1) Выполнение простой программы в системе программирования VC++6.0
2) Приобретение навыков в записи выражений на языке C++ и использование стандартных функций.
Теоретические сведения
2.1.Структура программы на С++
Программа на языке Си имеет следующую структуру:
#директивы препроцессора
.........
#директивы препроцессора
функция а ()
операторы
функция в ()
операторы
void main () //функция, с которой начинается выполнение программы
операторы
описания
присваивания
функция
пустой оператор
составной
выбора
циклов
перехода
Директивы препроцессора управляют преобразованием текста программы до ее компиляции. Исходная программа, подготовленная на С++ в виде текстового файла, проходит 3 этапа обработки:
1) препроцессорное преобразование текста;
2) компиляция;
3) компоновка (редактирование связей или сборка).
Рис. 2. Обработка С++ программы
После этих трех этапов формируется исполняемый код программы. Задача препроцессора – преобразование текста программы до ее компиляции. Правила препроцессорной обработки определяет программист с помощью директив препроцессора. Директива начинается с #.
#define - указывает правила замены в тексте.
#include<имя заголовочного файла> – директива предназначена для включения в текст программы текста из каталога заголовочных файлов, поставляемых вместе со стандартными библиотеками. Каждая библиотечная функция C имеет соответствующее описание в одном из заголовочных файлов. Список заголовочных файлов определен стандартом языка. Употребление директивы include не подключает соответствующую стандартную библиотеку, а только позволяют вставить в текст программы описания из указанного заголовочного файла. Если используется заголовочный файл из стандартной библиотеки, то его имя заключают в угловые скобки. Если используется заголовочный файл, который находится в текущем каталоге проекта (он может быть создан разработчиком программы), то его имя заключается в кавычки. Подключение кодов библиотеки осуществляется на этапе компоновки, т. е. после компиляции. Хотя в заголовочных файлах содержатся все описания стандартных функций, в код программы включаются только те функции, которые используются в программе.
После выполнения препроцессорной обработки в тексте программы не остается ни одной препроцессорной директивы.
Программа представляет собой набор описаний и определений, и состоит из набора функций. Среди этих функций всегда должна быть функция с именем main. Без нее программа не может быть выполнена. Перед именем функции помещаются сведения о типе возвращаемого функцией значения (тип результата). Если функция ничего не возвращает, то указывается тип void: void main(). Каждая функция, в том числе и main, должна иметь список параметров. Список может быть пустым, тогда он указывается как(void) (слово void может быть опущено: ()).
За заголовком функции размещается тело функции. Тело функции – это последовательность определений, описаний и исполняемых операторов, заключенных в фигурные скобки. Каждое определение, описание или оператор заканчивается точкой с запятой.
Определения – вводят объекты (объект – это именованная область памяти, частный случай объекта – переменная), необходимые для представления в программе обрабатываемых данных. Примерами являются
const int y = 10; //именованная константа
float x; //переменная
Описания – уведомляют компилятор о свойствах и именах объектов и функций, описанных в других частях программы.
Операторы – определяют действия программы на каждом шаге ее исполнения.
2.2. Элементы языка C/C++
1) Алфавит языка который включает
· прописные и строчные латинские буквы и знак подчеркивания;
· арабские цифры от 0 до 9;
· специальные знаки “{},| []()+-/%*.\’:;&?<>=!#^
· пробельные символы (пробел, символ табуляции, символы перехода на новую строку).
2) Из символов формируются лексемы языка:
· Идентификаторы – имена объектов C/C++-программ. В идентификаторе могут быть использованы латинские буквы, цифры и знак подчеркивания. Прописные и строчные буквы различаются, например, PROG1, prog1 и Prog1 – три различных идентификатора. Первым символом должна быть буква или знак подчеркивания (но не цифра). Пробелы в идентификаторах не допускаются.
· Ключевые (зарезервированные) слова – это слова, которые имеют специальное значение для компилятора. Их нельзя использовать в качестве идентификаторов.
· Знаки операций – это один или несколько символов, определяющих действие над операндами. Операции делятся на унарные, бинарные и тернарную по количеству участвующих в этой операции операндов.
· Константы – это неизменяемые величины. Существуют целые, вещественные, символьные и строковые константы. Компилятор выделяет константу в качестве лексемы (элементарной конструкции) и относит ее к одному из типов по ее внешнему виду.
· Разделители – скобки, точка, запятая пробельные символы.
2.3. Константы в C/C++
Константа – это лексема, представляющая изображение фиксированного числового, строкового или символьного значения. Константы делятся на 5 групп:
· целые;
· вещественные (с плавающей точкой);
· перечислимые;
· символьные;
· строковые.
Компилятор выделяет лексему и относит ее к той или другой группе, а затем внутри группы к определенному типу по ее форме записи в тексте программы и по числовому значению.
Целые константы могут быть десятичными, восьмеричными и шестнадцатеричными.
Название | Определение | Примеры |
Десятичная константа | Последовательность десятичных цифр, начинающаяся не с 0, если это число не 0 | 8, 0, 192345 |
Восьмеричная константа | Последовательность восьмеричных цифр, которым предшествует 0. | 026, 034, 017 |
Шестнадцатеричная константа | Последовательность шестнадцатеричных цифр, которым предшествуют символы 0х или 0Х | 0хА, 0Х00F, 0х123 |
Вещественные константы могут иметь две формы представления: с фиксированной точкой и с плавающей точкой.
Название | Вид | Примеры |
Константы с фиксированной точкой | [цифры].[цифры] | 5.7,.0001, 41. |
Константа с плавающей точкой | [цифры][.][цифры]E|e[+|-] [цифры] | 0.5е5,.11е-5, 5Е3 |
Перечислимые константы вводятся с помощью ключевого слова enum. Это обычные целые константы, которым приписаны уникальные и удобные для использования обозначения.
enum {one=1, two=2, three=3, four=4};
enum {zero,one,two,three};
enum {ten=10, three=3, four, five, six};
enum {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
Символьные константы – это один или два символа, заключенные в апострофы. Символьные константы, состоящие из одного символа, имеют тип char и занимают в памяти один байт, символьные константы, состоящие из двух символов, имеют тип int и занимают два байта. Последовательности, начинающиеся со знака \, называются управляющими, они используются:
· для представления символов, не имеющих графического отображения, например:
\a – звуковой сигнал,
\b – возврат на один шаг,
\n – перевод строки,
\t – горизонтальная табуляция;
· для представления символов: \, ’,?, ” (\\, \’,\?,\”);
· для представления символов с помощью шестнадцатеричных или восьмеричных кодов (\073, \0хF5);
Строковая константа – это последовательность символов, заключенная в кавычки. Внутри строк также могут использоваться управляющие символы. Например:
”\nНовая строка”,
”\n\”Алгоритмические языки программирования\””.
2.3. Типы данных в C++
Типы C++ можно разделить на простые и составные. К простым типам относят типы, которые характеризуются одним значением. В языке C++ определено 6 простых типов данных:
int (целый)
|
wchar_t (расширенный символьный) (C++)
bool (логический) (C++)
|
double (вещественный с двойной точностью)
Существует 4 спецификатора типа, уточняющих внутреннее представление и диапазон стандартных типов
short (короткий)
long (длинный)
signed (знаковый)
unsigned (беззнаковый)
Тип данных | Определение | Размер | Диапазон |
(signed) char | Значениями являются элементы конечного упорядоченного множества символов. Каждому символу ставится в соответствие число, которое называется кодом символа. | 1 байт | -128..127 |
unsigned char | 0..255 | ||
wchar_t | Значениями являются элементы конечного упорядоченного множества символов в кодировке Unicode | 2 байта | 0..65535 |
(signed) int | Значениями являются целые числа. | 4 байта (для 32-разрядного МП) | –2147483648 … +2147483647. |
(signed) long (int) | |||
unsigned int | 0…+4294967 295. | ||
unsigned long (int) | |||
(signed) short int | 2 байта (для 32-разрядного МП) | –32768 … +32767 | |
unsigned short int | 0 … 65536; | ||
bool | Данные этого типа могут принимать значения true и false. | 1 байт | false, true |
float | Значениями являются вещественные числа | 4 байта | 3.4Е-38..3.4Е+38 |
double | 8 байт | 1.7Е-308..1.7Е+308 | |
long double | 10 байт | 3.4Е-4932..1Е+4932 |
Переменные
Переменная в C++ – именованная область памяти, в которой хранятся данные определенного типа. У переменной есть имя и значение. Имя служит для обращения к области памяти, в которой хранится значение. Перед использованием любая переменная должна быть описана.
int a; float x;
Операции
В соответствии с количеством операндов, которые используются в операциях они делятся на унарные (один операнд), бинарные (два операнда) и тернарную (три операнда).
Операция | Описание |
Унарные операции | |
++ | Увеличение на единицу: префиксная операция - увеличивает операнд до его использования, постфиксная операция увеличивает операнд после его использования. |
-- | Уменьшение на единицу: префиксная операция - уменьшает операнд до его использования, постфиксная операция уменьшает операнд после его использования. |
sizeof | вычисление размера (в байтах) для объекта того типа, который имеет операнд |
- | Унарный минус |
+ | Унарный плюс |
! | Логическое отрицание (НЕ). В качестве логических значений используется 0 (false) - ложь и не 0 (true) - истина, отрицанием 0 будет 1, отрицанием любого ненулевого числа будет 0. |
& | Получение адреса операнда |
* | Получение значения, находящегося по указанному адресу (разыменование) |
new | Выделение памяти |
delete | Освобождение памяти |
(type) | Преобразование типа |
Бинарные операции | |
Мультипликативные | |
* | умножение операндов арифметического типа |
/ | деление операндов арифметического типа (если операнды целочисленные, то выполняется целочисленное деление) |
% | получение остатка от деления целочисленных операндов |
Аддитивные | |
+ | бинарный плюс (сложение арифметических операндов) |
- | бинарный минус (вычитание арифметических операндов) |
Операции сравнения | |
< | меньше, чем |
<= | меньше или равно |
> | больше |
>= | больше или равно |
= | равно |
!= | не равно |
Логические о | |
&& | конъюнкция (И) целочисленных операндов или отношений, целочисленный результат ложь(0) или истина(не 0) |
|| | дизъюнкция (ИЛИ) целочисленных операндов или отношений, целочисленный результат ложь(0) или истина(не 0) |
Тернарная | |
?: | Условная операция в ней используется три операнда. Выражение1? Выражение2: Выражение3; Первым вычисляется значение выражения1. Если оно истинно, то вычисляется значение выражения2, которое становится результатом. Если при вычислении выражения1 получится 0, то в качестве результата берется значение выражения3. Например: x<0? -x: x; //вычисляется абсолютное значение x. |
Присваивание | |
= | присваивание |
*= | умножение с присваиванием (мультипликативное присваивание) |
/= | деление с присваиванием |
%= | деление с остатком с присваиванием |
+= | сложение с присваиванием |
-= | вычитание с присваиванием |
Приоритеты операций.
Ранг | Операции |
() [ ] ->. | |
! ~ - ++ -- & * (тип) sizeof тип() | |
* / % (мультипликативные бинарные) | |
+ - (аддитивные бинарные) | |
< > <= >= (отношения) | |
==!= (отношения) | |
&& (конъюнкция «И») | |
|| (дизъюнкция «ИЛИ») | |
?: (условная операция) | |
= *= /= %= -= &= ^= |= <<= >>= (операция присваивания) | |
, (операция запятая) |
Выражения
Из констант, переменных, разделителей и знаков операций можно конструировать выражения. Каждое выражение представляет собой правило вычисления нового значения. Каждое выражение состоит из одного или нескольких операндов, символов операций и ограничителей. Если выражение формирует целое или вещественное число, то оно называется арифметическим. Пара арифметических выражений, объединенная операцией сравнения, называется отношением. Если отношение имеет ненулевое значение, то оно – истинно, иначе – ложно.
Ввод и вывод данных
В языке C/C++ нет встроенных средств ввода и вывода – он осуществляется с помощью функций, типов и объектов, которые находятся в стандартных библиотеках. Существует два основных способа: функции C и объекты C++.
Для ввода/вывода данных в стиле C используются функции, которые описываются в библиотечном файле stdio.h.
· printf (форматная строка, список аргументов);
форматная строка – строка символов, заключенных в кавычки, которая показывает, как должны быть напечатаны аргументы. Например:
printf (”Значение числа Пи равно %f\n”, pi);
Форматная строка может содержать:
· символы печатаемые текстуально;
· спецификации преобразования;
· управляющие символы.
Каждому аргументу соответствует своя спецификация преобразования:
%d, %i – десятичное целое число;
%f – число с плавающей точкой;
%e,%E – число с плавающей точкой в экспоненциальной форме;
%u – десятичное число в беззнаковой форме;
%c – символ;
%s – строка.
В форматную строку также могут входить управляющие символы:
\n – управляющий символ новая строка;
\t – табуляция;
\a – звуковой сигнал и др.
Также в форматной строке могут использоваться модификаторы формата, которые управляют шириной поля, отводимого для размещения выводимого значения. Модификаторы – это числа, которые указывают минимальное количество позиций для вывода значения и количество позиций ля вывода дробной части числа:
%[-]m[.p]C, где
– – задает выравнивание по левому краю,
m – минимальная ширина поля,
p – количество цифр после запятой для чисел с плавающей точкой и минимальное количество выводимых цифр для целых чисел (если цифр в числе меньше, чем значение р, то выводятся начальные нули),
С – спецификация формата вывода.
printf("\nСпецификации формата:\n%10.5d - целое, \n \\ %10.5f - с плавающей точкой\\n %10.5e – \\
в экспоненциальной форме\n%10s - строка", 10, 10.0, 10.0, "10");
Будет выведено:
Спецификации формата:
00010 – целое
10.00000 – с плавающей точкой
1.00000е+001 - в экспоненциальной форме
10 – строка.
· scanf (форматная строка, список аргументов);
в качестве аргументов используются адреса переменных. Например:
scanf(“ %d%f ”, &x,&y);
При использовании библиотеки классов C++, используется библиотечный файл iostream.h, в котором определены стандартные потоки ввода данных от клавиатуры cin и вывода данных на экран cout, а также соответствующие операции
<< – операция записи данных в поток;
>> – операция чтения данных из потока.
#include <iostream.h>;
…
cout << “\nВведите количество элементов: ”;
cin >> n;
Постановка задачи
1. Для задачи 1 определить тип заданных выражений и найти их значения.
2. Составить систему тестов и вычислить полученное выражение для нескольких значений Х, определить при каких Х выражение не может быть вычислено.
3. Для задачи 2 записать выражение, зависящее от координат точки X1 и Y1 и принимающее значение TRUE, если точка принадлежит заштрихованной области, и FALSE, если не принадлежит.
4. Составить систему тестов и вычислить полученное выражение для нескольких точек, принадлежащих и не принадлежащих заштрихованной области.
5. Для задачи 3 вычислить значение выражения, используя различные вещественные типы данных (float и double).
6. Объяснить полученные результаты.
7. Результаты всех вычислений вывести на печать.
Варианты
№ | Задача 1 | Задача 2 | Задача 3 |
1) n+++m 2) m-- >n 3) n-- >m 4) | а=1000, b=0.0001 | ||
1) ++n*++m 2) m++<n 3) n++>m 4) | а=1000, b=0.0001 | ||
1) m--n 2) m++<n 3) n++>m 4) | а=100, b=0.001 | ||
1) n++*m 2) n++<m 3) --m>n 4) | а=100, b=0.001 | ||
1) --m-n++ 2) m*m<n++ 3) n-->++m 4) | а=100, b=0.001 | ||
1) m-++n 2) m++>--n 3) m--<++n 4) | а=100, b=0.001 | ||
1) m+--n 2) m++<--n 3) --m>n— 4) | а=100, b=0.001 a) Y= + ctg(arctg (x )) | ||
1) n/m++ 2)m++<--n 3) (m/n)++<n/m 4) | а=100, b=0.001 | ||
1) m++/n— 2) ++m<n-- 3) n-->m 4) | а=100, b=0.001 | ||
1) m/--n++ 2) m/n<n— 3)m+n++>n+m 4) | а=100, b=0.001 | ||
1) n+++m-- 2) n*m<n++ 3) n-->++m 4) | а=10, b=0.01 | ||
1) n++*m 2) m--<n 3)++m>n 4) | а=10, b=0.01 | ||
1) (n++/--m)++ 2) ++m<n— 3)--m>++n 4) | а=10, b=0.01 | ||
1) n++*--m 2) n--<m++ 3) --n>--m 4) | а=10, b=0.01 | ||
1) n++/--m 2)n-->n/m++ 3)m<n++ 4) | а=10, b=0.01 | ||
1) m/--n++ 2) m/n<n— 3)m+n++>n+m 4) | а=10, b=0.01 | ||
1) n+++m-- 2) n*m<n++ 3) n-->++m 4) | а=10, b=0.01 | ||
1) n++*m 2) m--<n 3)++m>n 4) | а=10, b=0.01 | ||
1) (n++/--m)++ 2) ++m<n— 3)--m>++n 4) | а=1000, b=0.0001 | ||
1) n++*--m 2) n--<m++ 3) --n>--m 4) | а=1000, b=0.0001 | ||
1) n++/--m 2) n-->n/m++ 3) m<n++ 4) | а=100, b=0.001 | ||
1) n++*m 2) n++<m 3) --m>n 4) | а=100, b=0.001 | ||
1) --m-n++ 2) m*m<n++ 3) n-->++m 4) | а=100, b=0.001 | ||
1) m-++n 2) m++>--n 3) m--<++n 4) | а=100, b=0.001 | ||
1) m+--n 2) m++<--n 3) --m>n— 4) | а=100, b=0.001 |
Методические указания
- Для ввода и вывода данных использовать операции >> и << и стандартные потоки cin, cout.
- Ввод данных для заданий А и Б организовать с клавиатуры.
- При вычислении выражений подключить библиотеку <math.h> для вычисления функций (например, pow(x,y)для вычисления xy).
- Вывод результатов для задания А организовать в виде:
- При выполнении задания Б использовать переменную логического типа, а не условный оператор.
- При выполнении задания В использовать вспомогательные переменные для хранения промежуточных значений. Например:
c=pow(a,3); d=3*pow(a,2)*b; e=3*a*pow(b,2); f=pow(b,3);
Содержание отчета
1) Постановка задачи (общая и конкретного варианта).
2) Формулы, используемые при решении задачи (математическая модель).
3) Программы для решения задач на языке C++.
4) Описание используемых в программе стандартных функций.
5) Система тестов для проверки правильности работы программы и результаты выполнения тестов.
6) Объяснение результатов работы программы.
Лабораторная работа №2
Использование основных операторов языка С++
1. Цель задания:
1) Получение практических навыков использования операторов выбора.
2) Получение практических навыков выбора и использования операторов циклов.
Теоретические сведения
Операторы управления работой программы называют управляющими конструкциями программы. К ним относят:
· составные операторы;
· операторы выбора;
· операторы циклов;
· операторы перехода.
Составные операторы
К составным операторам относят собственно составные операторы и блоки. В обоих случаях это последовательность операторов, заключенная в фигурные скобки. Блок отличается от составного оператора наличием определений в теле блока.
{
n++; //это составной оператор
summa+=n;
}
{
int n=0;
n++; //это блок
summa+=n;
}
Операторы выбора
Операторы выбора – это условный оператор и переключатель.
1. Условный оператор имеет полную и сокращенную форму.
if (выражение-условие) оператор; //сокращенная форма
В качестве выражения-условия могут использоваться арифметическое выражение, отношение и логическое выражение. Если значение выражения-условия отлично от нуля (т. е. истинно), то выполняется оператор.
if (x<y&&x<z)min=x;
if (выражение-условие) оператор1; //полная форма
else оператор2;
Если значение выражения-условия отлично от нуля, то выполняется оператор1, при нулевом значении выражения-условия выполняется оператор2.
if (d>=0)
{
x1=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
cout<< “\nx1=”<<x1<<“x2=”<<x2;
}
else cout<<“\nРешения нет”;
2. Переключатель определяет множественный выбор.
switch (выражение)
{
case константа1: оператор1;
case константа2: оператор2;
...........
[default: операторы;]
}
При выполнении оператора switch, вычисляется выражение, записанное после switch, оно должно быть целочисленным. Полученное значение последовательно сравнивается с константами, которые записаны следом за case. При первом же совпадении выполняются операторы, помеченные данной меткой. Если выполненные операторы не содержат оператора перехода, то далее выполняются операторы всех следующих вариантов, пока не появится оператор перехода или не закончится переключатель. Если значение выражения, записанного после switch, не совпало ни с одной константой, то выполняются операторы, которые следуют за меткой default. Метка default может отсутствовать.
#include <iostream.h>
void main()
{
int i;
cout<<"\nEnter the number";
cin>>i;
switch(i)
{
case 1:cout<<"\nthe number is one";
case 2:cout<<"\n2*2="<<i*i;
case 3: cout<<"\n3*3="<<i*i;break;
case 4: cout<<"\n"<<i<<" is very beautiful!";
default:cout<<"\nThe end of work";
}
}
Результаты работы программы:
1. При вводе 1 будет выведено:
The number is one
2*2=1
3*3=1
2. При вводе 2 будет выведено:
2*2=4
3*3=4
3. При вводе 3 будет выведено:
3*3=9
4. При вводе 4 будет выведено:
4 is very beautiful!
5. При вводе всех остальных чисел будет выведено:
The end of work
Операторы циклов
· Цикл с предусловием:
while (выражение-условие)
оператор;
В качестве <выражения-условия> чаще всего используется отношение или логическое выражение. Если оно истинно, т. е. не равно 0, то тело цикла выполняется до тех пор, пока выражение-условие не станет ложным.
while (a!=0)
{
cin>>a;
s+=a;
}
· Цикл с постусловием:
do
оператор
while (выражение-условие);
Тело цикла выполняется до тех пор, пока выражение-условие истинно.
do
{
cin>>a;
s+=a;
}
while(a!=0);
· Цикл с параметром:
for (выражение_1;выражение-условие;выражение_3)
оператор;
выражение_1 и выражение_3 могут состоять из нескольких выражений, разделенных запятыми. Выражение_1 – задает начальные условия для цикла (инициализация). Выражение-условие определяет условие выполнения цикла, если оно не равно 0, цикл выполняется, а затем вычисляется значение выражения_3. Выражение_3 – задает изменение параметра цикла или других переменных (коррекция). Цикл продолжается до тех пор, пока выражение-условие не станет равно 0. Любое выражение может отсутствовать, но разделяющие их «;» должны быть обязательно.
1.
for (n=10; n>0; n--)// Уменьшение параметра
{
оператор;
}
2.
for (n=2; n>60; n+=13)// Изменение шага корректировки
{
оператор;
}
3.
for (num=1;num*num*num<216; num++)//проверка условия отличного от
//того, которое налагается на число итераций
{
оператор;
}
4.
for (d=100.0; d<150.0;d*=1.1)//коррекция с помощью
//умножения
{
оператор;
}
5.
for (x=1;y<=75;y=5*(x++)+10)//коррекция с помощью
//арифметического выражения
{
оператор;
}
6.
for (x=1, y=0; x<10;x++;y+=x);//использование нескольких корректирующих выражений, тело цикла отсутствует
Операторы перехода
Операторы перехода выполняют безусловную передачу управления.
· break – оператор прерывания цикла.
{
оператор;
if (<выражение_условие>) break;
оператор;
}
Т. е. оператор break целесообразно использовать, когда условие продолжения итераций надо проверять в середине цикла.
// Найти сумму чисел, числа вводятся с клавиатуры до тех пор, пока не будет //введено 100 чисел или 0.
for(s=0, i=1; i<100;i++)
{
cin>>x;
if(x==0) break; // если ввели 0, то суммирование заканчивается
s+=x;
}
· continue – переход к следующей итерации цикла. Он используется, когда тело цикла содержит ветвления.
//Найти количество и сумму положительных чисел
for(k=0,s=0,x=1;x!=0;)
{
cin>>x;
if (x<=0) continue;
k++; s+=x;
}
· goto <метка> – передает управление оператору, который содержит метку.
В теле той же функции должна присутствовать конструкция:
<метка>:оператор;
Метка – это обычный идентификатор, областью видимости которого является функция. Оператор goto передает управления оператору, стоящему после метки. Использование оператора goto оправдано, если необходимо выполнить переход из нескольких вложенных циклов или переключателей вниз по тексту программы или перейти в одно место функции после выполнения различных действий.
Применение goto нарушает принципы структурного и модульного программирования, по которым все блоки, из которых состоит программа, должны иметь только один вход и только один выход.
Нельзя передавать управление внутрь операторов if, switch и циклов. Нельзя переходить внутрь блоков, содержащих инициализацию, на операторы, которые стоят после инициализации.
· return – оператор возврата из функции. Он всегда завершает выполнение функции и передает управление в точку ее вызова. Вид оператора:
return [выражение];
Постановка задачи
Решить указанные в варианте задачи, используя основные операторы языка С++. При решении задачи, использовать все типы циклов (for, while, do while).
- Дана последовательность из n целых чисел. Найти среднее арифметическое этой последовательности.
- Дана последовательность из n целых чисел. Найти сумму четных элементов этой последовательности.
- Дана последовательность из n целых чисел. Найти сумму элементов с четными номерами из этой последовательности.
- Дана последовательность из n целых чисел. Найти сумму нечетных элементов этой последовательности.
- Дана последовательность из n целых чисел. Найти сумму элементов с нечетными номерами из этой последовательности.
- Дана последовательность из n целых чисел. Найти минимальный элемент в этой последовательности.
- Дана последовательность из n целых чисел. Найти номер максимального элемента в этой последовательности.
- Дана последовательность из n целых чисел. Найти номер минимального элемента в этой последовательности.
- Дана последовательность из n целых чисел. Найти максимальный элемент в этой последовательности.
- Дана последовательность из n целых чисел. Найти сумму минимального и максимального элементов в этой последовательности.
- Дана последовательность из n целых чисел. Найти разность минимального и максимального элементов в этой последовательности.
- Дана последовательность из n целых чисел. Найти количество нечетных элементов этой последовательности.
- Дана последовательность из n целых чисел. Найти количество четных элементов этой последовательности.
- Дана последовательность из n целых чисел. Найти количество элементов этой последовательности, кратных числу К.
- Дана последовательность из n целых чисел. Найти количество элементов этой последовательности, кратных ее первому элементу.
- Дана последовательность из n целых чисел. Найти количество элементов этой последовательности, кратных числу K1 и не кратных числу K2.
- Дана последовательность из n целых чисел. Определить, каких чисел в этой последовательности больше: положительных или отрицательных.
- Дана последовательность целых чисел, за которой следует 0. Найти среднее арифметическое этой последовательности.
- Дана последовательность целых чисел, за которой следует 0. Найти сумму четных элементов этой последовательности.
- Дана последовательность целых чисел, за которой следует 0. Найти сумму элементов с четными номерами из этой последовательности.
- Дана последовательность целых чисел, за которой следует 0. Найти сумму нечетных элементов этой последовательности.
- Дана последовательность целых чисел, за которой следует 0. Найти сумму элементов с нечетными номерами из этой последовательности.
- Дана последовательность целых чисел, за которой следует 0. Найти минимальный элемент в этой последовательности.
- Дана последовательность целых чисел, за которой следует 0. Найти номер максимального элемента в этой последовательности.
- Дана последовательность целых чисел, за которой следует 0. Найти номер минимального элемента в этой последовательности.
- Дана последовательность целых чисел, за которой следует 0. Найти максимальный элемент в этой последовательности.
- Дана последовательность целых чисел, за которой следует 0. Найти сумму минимального и максимального элементов в этой последовательности.
- Дана последовательность целых чисел, за которой следует 0. Найти разность минимального и максимального элементов в этой последовательности.
- Дана последовательность целых чисел, за которой следует 0. Найти количество нечетных элементов этой последовательности.
- Дана последовательность целых чисел, за которой следует 0. Найти количество четных элементов этой последовательности.
- Дана последовательность целых чисел, за которой следует 0. Найти количество элементов этой последовательности, кратных числу К.
- Дана последовательность целых чисел, за которой следует 0. Найти количество элементов этой последовательности, кратных ее первому элементу.
- Дана последовательность целых чисел, за которой следует 0. Найти количество элементов этой последовательности, кратных числу K1 и не кратных числу K2.
- Дана последовательность целых чисел, за которой следует 0. Определить, каких чисел в этой последовательности больше: положительных или отрицательных.
- , всего n слагаемых;
- S=1+3+5+7+ …, всего n слагаемых;
- S=1+2-3+4+5-6+7+8-9+…, всего n слагаемых;
- S=15+17-19+21+23-25+…, всего n слагаемых;
- Найти первое отрицательное число последовательности u=cos(ctg(n)), где n=1,2,3….
- Определить является ли число k степенью 3.
- Определить является ли число k простым.
- Дана последовательность из 100 чисел. Найти номер первого отрицательного числа.
- Найти количество цифр в десятичном числе k.
- Найти сумму цифр в десятичном числе k.
- Сформировать n чисел Фибоначчи (a1=1, a2=1,ai=ai-1+ai-2).
- Сформировать все числа Фибоначчи не превышающие заданное число Q.
- Дано число k. Определить, является ли оно числом Фибоначчи.
- .
- .
- .
- .
- .
- , где n>2.
Варианты
Вариант | Задача 1 | Задача 2 | Задача 3 |
Методические указания
1. Ввод данных в задачах №1и №2 осуществляется с клавиатуры.
2. Массивы при решении задач не используются.
3. При решении задачи №1 целесообразно использовать цикл с параметром, т. к. известно количество элементов последовательности.
4. При решении задачи №2 целесообразно использовать цикл с условием, т. к. известно, что признаком окончания последовательности является 0.
Содержание отчета
1. Постановка задач для конкретного варианта.
2. Алгоритм решения каждой задачи в виде блок-схемы.
3. Программы для решения задач на языке C++.
4. Результаты решения.
Лабораторная работа №4
Работа с одномерными массивами
1. Цель работы:
1) Получение практических навыков при работе с массивами.
2) Получение практических навыков при работе с указателями.