Similar presentations:
Осуществлять постановку цели и задачи и вырабатывать требования к программному обеспечению
1.
Высший IT колледж Восточно-Казахстанского техническогоуниверситета им. Д. Серикбаева
РО 6.1 Осуществлять постановку цели и задачи и
вырабатывать требования к программному
обеспечению.
2.
Высший IT колледж Восточно-Казахстанского техническогоуниверситета им. Д. Серикбаева
В результате изучения дисциплины студент должен:
иметь представление:
1. о конструировании алгоритмов;
2. методах структурного и модульного программирования в С++;
3. об абстракциях основных структур данных (списки, множества и т.п.) и методах их обработки и способах
реализации;
4. о методах и технологиях программирования в С++.
уметь:
1. разрабатывать и реализовывать алгоритмы с использованием управляющих структур языка
программирования С++;
2. описывать основные структуры данных на языке С++;
3. реализовывать методы обработки данных на С++;
4. работать в средах программирования, использующих в качестве языка программирования С++.
владеть, иметь опыт:
1. разработки алгоритмов на языке С++;
2. описания структур данных языка С++;
3. описания основных базовых конструкций языка С++;
4. программирования на языке высокого уровня С++;
5. работы в различных средах программирования с использованием С++.
3.
Шкала оценивания учебных достиженийИтоговая оценка вычисляется по формуле: 0,6 х (РО1+…+РОN)/N+ 0,4 х Э,
где N количество результатов обучения, РО – результат обучения,
Э – экзаменационная оценка
4.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Введение.
С — это язык программирования, созданный в 70-х годах XX века для разработки системы UNIX и программного
обеспечения для нее. В 80-х годах XX века на основе языка C был создан язык C++, являющийся объектноориентированным расширением языка C++. В настоящее время языки C и C++ являются наиболее
распространенными языками для профессиональной разработки программного обеспечения для всех
операционных систем. Синтаксис языка C и C++ не зависит от используемой системы и компилятора, однако
набор доступных библиотек (например, для разработки графических приложений) является системнозависимым и не стандартизирован.
Язык C++ является компилируемым языком. Для того, чтобы написать программу, вам необходимо в любом
текстовом редакторе набрать, например, следующий текст и сохранить его в файле, например, hello.cpp.
// первая программа на с++
#include <iostream>
//using namespace std;
int main()
{
std::cout<<"Hello, world!\n";
return 0;
}
// программный блок
// << - назыв. Операцией поместить в поток
5.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Введение.
Будьте внимательны: язык C++ является чувствительным к регистру букв, то есть заменить main на Main или
MAIN нельзя. Весь текст (за исключением текстовой строки "Hello, world!") нужно набирать в нижнем регистре.
В первой строчке мы подключаем к нашей программе файл с именем iostream, в котором содержится
описание стандартной библиотеки ввода-вывода языка C++. В этом файле находится, в частности, определение
объектов cout и endl, который мы будем использовать позднее. Вторая строка указывает компилятору на то, что
мы будем использовать все функции, входящие в пространство имен std, то есть все функции, относящиеся к
стандартной библиотеке C++. Третья строка содержит объявление функции main, не принимающей никаких
аргументов и возвращающей значение int. Эта функция должна быть в каждой программе, именно эта функция
получает управление при запуске программы. Четвертая строка содержит открывающуюся фигурную скобку, что
означает начало функции main. В пятой строке мы при помощи оператора << помещаем в
объект cout строку "Hello, world!", а потом специальный объект endl, означающий символ перевода строки. Это
приводит к печати на экране этой строки и последующему переводу каретки. В шестой строке мы даем
инструкцию return, завершающую выполнение функции main и возвращающую нулевое значение. Седьмая
строка содержит фигурную скобку, синтаксически закрывающую функцию main.
// - называется однострочным комментарием (много строк начинается с /* и заканчивается
символами */).
6.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Элементарные конструкции (лексемы) языка Си.
К элементарным конструкциям (лексемам) относятся следующие понятия: идентификаторы (имена), служебные
(ключевые) слова, символьные, строковые и числовые константы, знаки операций, комментарии, разделители
(знаки пунктуации).
Идентификатором (именем) называется последовательность цифр, букв и специальных символов. Первый
символ идентификатора должен быть строчной или прописной буквой латинского алфавита или символом «_».
Два идентификатора, для образования которых используются совпадающие строчные и прописные буквы,
считаются различными: abc и ABC, A128B и a128b. Идентификатор не должен совпадать с ключевыми
(зарезервированными) словами или именами функций библиотеки языка и может иметь практически любую
длину. Идентификатор создается на этапе объявления (описания) переменной, функции, структуры и т.д., затем
его можно использовать в последующих операторах программы.
Служебные (ключевые) слова – идентификаторы, зарезервированные в языке, которые не могут использоваться
программистом в качестве обычных идентификаторов. К служебным словам относятся следующие: auto, break,
case, char, const, continue, default, do, double, else, enum, extern, float, for, gotо, if, int, long, register, return, short,
signed, sizeof, static, struct, switch,typedef, union, unsigned, void, volatile, while.
Константа – именованный элемент программы, не меняющий свое значение.
7.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Элементарные конструкции (лексемы) языка Си.
Числовые константы обычно записываются в десятичной системе счисления (а также в шестнадцатеричной или
восьмеричной), могут быть целыми и вещественными (действительными); положительный знак числа, как
правило, опускается. Целые числа записываются в форме без десятичной точки: 217, -45, 8954, +483.
Вещественные числа записываются в форме с десятичной точкой: 28.6, 0.65, -0.018, 4.0 или в экспоненциальной
форме, с использованием десятичного порядка: 3.14e1 (3,14·101), 3.14e5 (3,14·105), 3.14e-3 (3,14·10-3), -1e6 (106),-1e-6 (-10-6), где е – основание десятичной системы счисления.
Символьная константа – лексема, состоящая из отображаемого символа (‘A’, ‘8’, ‘+’) или комбинации
нескольких неотображаемых символов, начинающихся с символа ‘\’ и заключенных в апострофы, которые
называются управляющими последовательностями: ‘\n’ (перевод на новую строку), ‘\t’ (табуляция), ‘\’’
(одиночная кавычка), ‘\”’ (двойная кавычка), ‘\\’ (обратная косая черта).
Строковая константа определяется как последовательность символов, заключенная в кавычки: “string”.
Знаки операций определяют действия над данными и могут представляться как одним символом (+, *, = и т.д.),
так и группой символов (++, +=, *=, == и т.д.).
8.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Элементарные конструкции (лексемы) языка Си.
Комментарий используется для соответствующего пояснения в тексте программы и формируется как
последовательность символов, ограниченная слева и справа знаками «/*» и «*/» соответственно или только
слева знаками «//»: /* my program */ или // my program.
Разделители (знаки пунктуации) используются для различных целей, от организации текста программы до
определения заданий, которые будут выполнены компилятором или откомпилированной программой: ( ) [ ] { } , ;
: … * = #.
9.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Концепция типа данных.
При компьютерной обработке данных существует такая же классификация переменных, как в математике:
целые, вещественные, логические; переменные, представляющие отдельные значения или множество
значений.
В любом алгоритмическом языке каждая константа, переменная, выражение или функция бывает
определенного типа.
Тип данных – это форма представления существующих и обрабатываемых в языке программирования данных
(целые, вещественные числа, символы, строки и т.д.).
Тип данных определяет:
• возможный диапазон значений констант, переменных, выражений, функций, принадлежащих к данному
типу;
• внутреннюю форму представления данных в компьютере (с фиксированной, плавающей точкой);
• объем памяти, занимаемый данными;
• операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу.
В программе на основе типов данных описываются (объявляются) переменные, обозначаемые
идентификаторами; каждой из них отводится память и ставится в соответствие форма представления данных.
Таким образом, переменная – это именованная область памяти программы, в которой размещены данные в
определенной форме представления (определенного типа); для использования переменной необходимо
выполнить ее описание (объявление).
10.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Типы данных.
Типы данных могут быть базовыми (системными) и пользовательскими.
Базовые типы данных – встроенные типы значений в языке программирования, соответствующие стандартным
формам представления данных в компьютере.
Пользовательские типы данных – это типы, которые определяет пользователь.
Целочисленные типы данных (числа с фиксированной точкой). Для представления целых чисел в языке Си
используются следующие целочисленные типы:
int i; /* целое число со знаком, занимает в памяти стандартное машинное слово (2 или 4 байта – в зависимости
от архитектуры компьютера), диапазон значений, соответственно, -32768 (215) ÷ 32767 или -2147483648 (231) ÷
2147483647*/
unsigned u; /* целое число без знака, слово, диапазон значений 0 ÷ 65535 (216) или 0 ÷ 232 */
long l; // целое число со знаком, двойное слово
unsigned long ul; // целое число без знака, двойное слово
short s; // целое число со знаком, короткое слово
char c; // целое число, байт, диапазон значений -128 ÷ 127
unsigned char uc; // целое число без знака, байт, диапазон значений 0 ÷ 255
11.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Типы данных.
Одной из форм представления целого является также перечислимый (перечисляемый) тип enum – тип данных,
множество значений которого представляет собой ограниченный список идентификаторов. Переменная такого
типа принимает ряд значений, которые перечислены в отдельном описании типа enum в виде идентификаторов
(имен). Каждому идентификатору соответствует явно заданное или неявно полученное при перечислении
значение:
еnum Bool {false, true}; // 0,1
enum digit {four=4,one=1,two,three };
// 4,1,2,3.
Bool x;
// x=false; – x=1
digit d; // d=three; – d=3
Вещественные типы данных (числа с плавающей точкой). Для представления действительных
(вещественных) чисел в языке Си используются вещественные типы: float – обычной точности, double – двойной,
long double – повышенной.
Тип float используется в основном при вводе-выводе, занимает в памяти 4 байта.
Тип double (8 байтов) обеспечивает стандартную точность вычислений в арифметических выражениях, поэтому
любая переменная типа float перед использованием в выражении автоматически преобразуется в double. Кроме
того, если в операции присутствует одна переменная типа double, а вторая является целым числом, то последняя
также преобразуется (приводится) к double.
Тип long double занимает в памяти 12 байтов.
12.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Типы данных.
Представление символьных данных. Представление и обработка символьной информации в языке Си
основаны на использовании базового целочисленного типа данных char, каждый байт которого хранит двоичное
число, являющееся кодом одного символа из соответствующей кодовой таблицы.
Символы в памяти компьютера хранятся в виде кодов. Соответствие между каждым символом и его кодом
задается специальными кодовыми таблицами. Одна из основных таблиц регламентирована стандартом ASCII
(American Standard Code for Information Interchange), поэтому коды символов (от 1 до 127) называются ASCIIкодами.
Различают видимые и управляющие символы. Видимые могут быть отображены на экране монитора или
отпечатаны на принтере, управляющие вызывают определенные действия процессора (например, звуковой
сигнал: код=710).
Такие управляющие символы имеют десятичные коды: 0 – 31. Каждый символ в памяти представляется одним
байтом, поэтому общее число символов равно 28=256. Таким образом, кодовая таблица имеет 256 строк вида
<код_символа_ в_ заданной_системе_счисления> - <символ>.
Тип void. Множество значений типа void – пусто, т.е. указывает на отсутствие типа; используется для определения
функций, которые не возвращают никакого значения, для указания пустого списка аргументов функции и в
операции приведения к типу void.
13.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Структура программы.
// 1. Подключение библиотек
#include <iostream>
// 2. Пространство имён
using namespace std;
1. #include <iostream>
Подключение стандартной библиотеки ввода/вывода. С её помощью можно
использовать cout, cin и другие потоки.
2. using namespace std;
// 3. Объявление функций (если есть)
void sayHello();
Позволяет не писать std:: перед cout, cin, endl и т.д.
Без этой строки пришлось бы писать: std::cout << "Hello";
// 4. Главная функция — точка входа в программу
int main() {
// 5. Тело программы
cout << "Привет, мир!" << endl;
sayHello(); // Вызов функции
return 0; // Завершение программы
}
3. Объявление функций (по желанию)
Если в программе есть пользовательские функции, их можно объявить заранее,
чтобы компилятор знал об их существовании до вызова.
4. int main()
Это главная функция, с которой начинается выполнение любой программы на C++.
5. Тело программы
// 6. Реализация функций (если не встроены в main)
void sayHello() {
cout << "Функция говорит: Привет!" << endl;
}
Здесь находятся все действия, которые вы хотите, чтобы программа выполнила:
вывод, ввод, расчёты, вызовы функций и т.д.
6. Определения функций
Если вы объявили функции заранее, нужно их реализовать либо сразу после main(),
либо до него.
14.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Операции и выражения.
Операции являются элементарными неделимыми действиями,
которые могут быть выполнены над данными. Данные, над
которыми производится операция, называются операндами.
Операция над одним операндом называется унарной, над двумя
–бинарной.
Операнды
представляются
переменными,
константами и выражениями – группами последовательно
выполняемых над операндами операций, порядок которых
определяется их приоритетами и может регулироваться
использованием скобок (результат одной операции может быть
операндом другой); определяют правила вычисления значений.
Операции
и
выражения
определяют
безусловную
последовательность действий.
15.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Операции и выражения.
Операции присваивания. К операциям присваивания относятся все операции, которые меняют значение одного
из операндов.
Группы операций присваивания:
• обычное присваивание (=);
• присваивание, соединенное с одной из бинарных операций (+=, -=, *=, /=, %=, <<=, >>=, &=, |=, ^=);
• операции инкремента (++) и декремента (--) – увеличение и уменьшение на единицу.
Например, если объявить переменные:
long a; char b; int c;
то можно использовать такие операторы присваивания:
a=b=c; // эквивалентно: b=c; a=b;
a +=b; // эквивалентно: a=a+b;
с++; // увеличить с на 1 после использования: с=с+1
++с; // увеличить с на 1 до использования: с=с+1
с--; // уменьшить с на 1 после использования: с=с-1
--c; // уменьшить c на 1 до использования: c=c-1
16.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Операции и выражения.
Арифметические операции. К арифметическим относятся операции * / % + Например:
int a,b,d;
a=(a+1)%16;
// a присвоить остаток от деления a+1 на 16
b=a++;
// b=a; a=a+1;
d=d*b/2;
Операции отношения и логические операции. В языке Си++ существует логический тип — он называется bool
bool — это встроенный логический тип данных в C++, который может хранить только два значения:
true (истина)
false (ложь)
Этот тип введён в C++ начиная с стандарта C++98. В более старом языке C (до C99) типа bool не было.
Операции отношения: < <= > >= == (равно) != (не равно)
Логические операции: && (конъюнкция) || (дизъюнкция)
Все операции отношения дают в качестве результата значения «1» или «0», поэтому их можно использовать
совместно с арифметическими и другими операциями:
Все операции отношения дают в качестве результата значения «1» или «0», поэтому их можно использовать
совместно с арифметическими и другими операциями:
int a,b,c;
a=b>c;
// запомнить в а результат сравнения – значение 0 или 1
17.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Операции и выражения.
Условная операция. Условная операция позволяет встроить в любое выражение некоторое условие.
Структура условной операции:
<условие> ? <выражение_1> : <выражение_2>;
Вычисляется <выражение_1>, если значение логического выражения <условие> истинно, иначе вычисляется
<выражение_2>.
Например:
int a, b, c, x;
c=x+a>b?a:b;
// с=а, если х+а>b, иначе с=b
Операция явного преобразования типа. Операция приведения (преобразования) типа позволяет
преобразовать значение операнда к заданному типу. В качестве операнда используется унарное выражение,
которое может быть переменной, константой или выражением.
Формат операции преобразования типа:
(<тип>)<операнд>;
Например:
int a;
float b;
b=(float)a/2;
18.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Алгоритм и операторы.
Алгоритм – набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за
конечное число шагов. Инструкция алгоритма представляется в программе оператором – наименьшей автономной
конструкцией языка программирования, которая является предписанием о выполнении конкретных действий. Таким образом,
оператор – это структурная единица программы; он может быть простым, не содержащим в себе других операторов, и
составным, представляющим собой группу операторов (операторный блок).
Операторы делятся на четыре группы основных управляющих конструкций:
• операторы следования – операторы простой последовательности действий;
• условные конструкции – операторы ветвления;
• циклические конструкции – операторы циклов;
• безусловные конструкции – операторы перехода.
Разработанный алгоритм можно записать несколькими способами:
• на естественном языке;
• в виде блок-схемы;
• в виде R-схемы.
Блок-схемой называется наглядное графическое изображение алгоритма, когда отдельные его этапы изображаются при
помощи различных геометрических фигур – блоков, а связи между этапами (последовательность выполнения этапов)
указываются при помощи стрелок, соединяющих эти фигуры. Блоки сопровождаются надписями. Типичные действия
алгоритма изображаются следующими геометрическими фигурами:
19.
Понятие алгоритма. Изображение алгоритма в виде блок–схемы. Алгоритмылинейной и разветвляющейся структуры.
20.
Понятие алгоритма. Изображение алгоритма в виде блок–схемы. Алгоритмылинейной и разветвляющейся структуры.
21.
Понятие алгоритма. Изображение алгоритма в виде блок–схемы. Алгоритмылинейной и разветвляющейся структуры.
В качестве примера рассмотрим блок-схему алгоритма решения уравнения (рис. 2.5), описанного в
предыдущем подразделе.
22.
Линейные алгоритмы и алгоритмы с ветвлениями.Алгоритмы линейной структуры
Линейный алгоритм – это такой, в котором все операции выполняются последовательно одна за
другой (рис. 3.1).
Рассмотрим несколько примеров
линейных алгоритмов.
ПРИМЕР 3.1. Зная длины трех сторон
треугольника, вычислить площадь и
периметр треугольника.
Пусть a, b, c – длины сторон
треугольника. Необходимо найти S –
площадь треугольника, P –
периметр. Для нахождения площади
можно воспользоваться формулой
Герона.
Входные данные: a, b, c. Выходные
данные: S, P. Блоксхема алгоритма представлена на
рис. 3.2.
23.
Алгоритмы разветвленной структуры.Алгоритмы разветвленной структуры применяются, когда в зависимости от некоторого условия
необходимо выполнить либо одно, либо другое действие. В блок-схемах разветвленные
алгоритмы изображаются так, как показано на рис. 4.1– 4.2.
24.
Алгоритмы разветвленной структуры.Рассмотрим несколько примеров построения алгоритмов разветвленной структуры.
ПРИМЕР 4.1. Известны коэффициенты а , b и с квадратного уравнения.
Вычислить корни квадратного уравнения. Входные данные: a, b, c. Выходные данные: х1, х2.
Блок-схема представлена на рис. 2.5.
25.
Контрольные вопросы.1. Что называется идентификатором? (6)
2. Как обычно записываются числа в языке программирования Си? Привести примеры.
3. Что означает и определяет тип данных?
4. Дать понятие переменной. Что необходимо выполнить для ее использования?
5. Что такое базовые типы данных?
6. Какие существуют целочисленные типы в языке Си?
7. Назвать вещественные типы языка Си.
8. Как представляются символьные данные в языке Си? (12)
9. Что означает тип void?
10. Какую структуру имеет программа?
11. Что такое операция и операнд? Какая операция называется унарной, а какая – бинарной? (14)
12. Что представляет собой выражение?
13. Какие арифметические операции используются в языке Си?
14. Существует ли логический тип в языке Си? Какие значения используются для представления логических значений?
(16)
15. Какие существуют операции отношения и логические операции? (16)
16. Какие операции относятся к операциям присваивания?
17. На какие группы делятся операции присваивания? Привести примеры.
18. Является ли оператор программной единицей?
19. Какие группы основных управляющих конструкций представляют собой операторы?
26.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
// Программа №2 - Использование переменной.
#include <iostream>
using namespace std;
int main()
{
int x;
//Здесь
объявляется
переменная.
x=1023;
//Здесь
переменной
х
присваивается
1023.
cout <<"Эта программа выводит значение переменной х: ";
cout << х; // Отображение числа
1023.
return 0;
}
число
27.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
//
Эта
программа
преобразует
#include <iostream>
using
namespace std;
int main()
{
int gallons, liters;
cout<<"Введите количество
галлонов:";
cin>>gallons;
//
Ввод
данных от
liters=gallons*4; //
Преобразование в
cout<< "Литров: "
<<
liters;
return 0;
}
галлоны в
пользователя.
литры.
литры.
28.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Практическая работа.
1. Дана сторона квадрата a. Найти его периметр P=4⋅a.
2. Даны стороны прямоугольника a и b. Найти его площадь S=a⋅b и периметр P=2⋅(a+b)
3. Дано расстояние L в сантиметрах. Используя операцию деления нацело, найти количество полных
метров в нем (1 метр = 100 см).
29.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Псевдокод. Управляющие структуры.
Псевдокод - это простой инструмент, который можно использовать для планирования работы алгоритмов.
Когда вам нужно будет написать сложный код, вы вряд ли сможете удержать всю программу в голове до начала
работы. Представьте, что псевдокод - это последовательное вербальное описание, которое вы позднее
превратите в язык программирования. Это сочетание человеческого языка и языка программирования:
псевдокод использует синтаксис компьютерного кода, но его основная задача - быть читаемым.
Псевдокод - это последовательное вербальное описание кода, которое можно постепенно перенести в язык
программирования. Многие программисты используют его для планирования функции алгоритма до начала
более технической работы над кодом. Псевдокод - это нестрогий план, инструмент для обдумывания проблем
программы и средство общения, которое позволяет передать ваши мысли другим людям.
30.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Управляющие структуры.
Обычно операторы программы выполняются друг за другом в той последовательности, в которой они
написаны. Это называется последовательным выполнением (sequential execution). Однако, как мы скоро
увидим, различные операторы С++ позволяют программисту указать, что следующим должен выполняться
не очередной оператор в тексте программы, а какой-то другой. Это называется передачей управления
(transfer of control).
31.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Структура выбора if (ЕСЛИ).
Структура выбора используется для выбора среди альтернативных путей обработки информации. Например,
предположим, что проходной балл на экзамене – 60.
Предложение на псевдокоде
ЕСЛИ оценка студента больше или равна 60
Напечатать «Зачет»
Определяет, истинно или ложно условие «оценка студента больше или равна 60».
Соответствующий приведенному псевдокоду оператор if может быть записан на языке С++ как
if (grade >=60)
cout << «Зачет»;
Данный код С++ очень близок псевдокоду.
32.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Структура выбора if/else (ЕСЛИ-ИНАЧЕ).
Структура выбора if выполняет указанное в ней действие только, если условие истинно, и пропускает его в
ином случае. Структура выбора if/else позволяет программисту определить различные действия, которые
должны выполняться в случаях, если условие истинно или ложно. Например, предложение псевдокода
ЕСЛИ оценка студента больше или равна 60
Напечатать «Зачет»
ИНАЧЕ
Напечатать «Незачет»
Рассмотрим псевдокод структуры if/else может быть
записан на С++ следующим образом:
if (grade >=60)
cout << «Зачет»;
else
cout << «Незачет»;
33.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Структура выбора if/else (ЕСЛИ-ИНАЧЕ).
С++ имеет еще условную операцию (?:), которая близка к структуре if/else. Условная операция – единственная
тернарная операция (Тернарная операция — это операция с тремя операндами) в С++, имеющая три операнда.
Эти операнды вместе с условной операцией формируют условное выражение (conditional expression). Первый
операнд является условием, второй операнд содержит значение условного выражения в случае, если условие
истинно, третий операнд равен значению условного выражения, если условие ложно. Например, оператор
вывода
cout (<< grade >=60 ? «Зачет» : «Незачет» );
содержит условное выражение, которое равно строке «Зачет», если условие grade >=60 истинно, и равно строке
«Незачет», если оно ложно. Таким образом, этот оператор с условной операцией выполняет фактически те же
функции, что и приведенный ранее оператор if/else. Условная операция имеет низкое старшинство и поэтому в
приведенном выражении потребовались скобки. Без них компилятор будет пытаться произвести вывод
величины оценки grade операцией cout << grade, что, естественно, не входит в намерения программиста. Затем
последует ряд синтаксических ошибок, включая попытку компилятора найти значения для «Незачет»<< endl.
Значения условного выражения могут быть также какими-то исполняемыми действиями. Например, условное
выражение
grade >= 60 ? Cout << «Зачет \n» : cout << «Незачет \n»;
Читается так: «Если оценка grade больше или равна 60, то cout <<«Зачет \n», иначе cout <<«Незачет \n». Это
также сравнимо с рассмотренной структурой if/else. Мы увидим в дальнейшем, что иногда условная операция
может использоваться в таких ситуациях, когда применение оператора if/else невозможно.
34.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Структура выбора if/else (ЕСЛИ-ИНАЧЕ).
35.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Структура выбора if/else (ЕСЛИ-ИНАЧЕ).
36.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Структура выбора if/else (ЕСЛИ-ИНАЧЕ).
37.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Структура выбора if/else (ЕСЛИ-ИНАЧЕ).
38.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Структура выбора if/else (ЕСЛИ-ИНАЧЕ).
39.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Структура повторения while (ПОКА)
40.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Структура повторения while (ПОКА)
41.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Структура повторения while (ПОКА)
42.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Разработка алгоритмов: практическое задание 1
43.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Разработка алгоритмов: учебный пример 1
44.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Практическая работа.
Задача 1
Постановка задачи: разработать алгоритм ввода с клавиатуры входных целых значений x, y, вычисления
значения a по формуле
и вывода на экран монитора полученного результата; написать
программу, реализующую разработанный алгоритм.
Математическая модель и описательный алгоритм решения. Формула вычисления функции a(x,y) дана в
постановке задачи. Значения x, y, a хранятся в переменных (поименованных областях основной памяти),
имеющих соответствующие идентификаторы. Так как функция a(x,y) определена для любых значений
аргументов, то структура алгоритма линейная.
1. Ввести с клавиатуры значения в переменные x, y.
2. Вычислить значение переменной a по заданной формуле.
3. Вывести на экран полученное значение переменной a.
45.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Таблица 1 — Управляющие символы С++
46.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Операции присваивания.
47.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Операции присваивания.
48.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Операции инкремента и декремента.
49.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Операции инкремента и декремента.
50.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Операции инкремента и декремента.
51.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Операции инкремента и декремента.
52.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Операции инкремента и декремента.
53.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Арифметические операторы.
Операторы сравнения.
54.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Логические операторы.
Составное присваивание.
55.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Основы повторения, управляемого счетчиком.
56.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Основы повторения, управляемого счетчиком.
57.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Практическое задание.
58.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Стандартные математические функции.
Стандартные математические функции существуют для
облегчения программирования математических вычислений;
функции работают со значениями, представленными в
форме с
фиксированной и плавающей точкой. Основные
математические
функции объявлены в include-файле <math.h>.
abs(x) – вычисляет абсолютное значение x (аргумент целого
типа),
acos(x) – вычисляет arccos x (результат в радианах),
asin(x) – вычисляет arcsin x (результат в радианах),
atan(x) – вычисляет arctg x (результат в радианах),
atan2(y,x) – вычисляет arctg(y/x) (результат в радианах),
ceil(x) – находит целую часть x,
cos(x) – вычисляет cos x (аргумент в радианах),
exp(x) – вычисляет экспоненциальную функцию,
fabs(x) – вычисляет абсолютное значение x (аргумент
вещественный),
floor(x) – находит наибольшее целое, которое меньше
или
равно x,
fmod(x,y) – находит остаток (с плавающей точкой) от
деления x на у,
log(x) – вычисляет натуральный логарифм х,
log10(x) – вычисляет десятичный логарифм х,
modf(x,&n) – разделяет х на целую (n), дробную
(возвращаемое
значение) части,
pow(x,y) – вычисляет х в степени y,
pow10(x) – вычисляет 10 в степени x,
sin(x) – вычисляет sin x (аргумент в радианах),
sqrt(x) – находит квадратный корень из х,
tan(x) – вычисляет tg x (аргумент в радианах).
59.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Стандартные математические функции.
Функции консольного ввода/вывода объявлены в includeфайле <conio.h>.
cgets() – читает строку с консоли,
cputs() – записывает строку на консоль,
getch() – читает символ с консоли,
putch() – записывает символ на консоль.
60.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Практическое задание.
Задача 3
Математическая модель и описательный алгоритм решения.
Чтобы вычислить сумму n степеней введенного x, каждый раз
к значению S, изначально равному нулю, прибавлять значение
очередной степени x (x1, x2, x3, …), которое формировать как
значение xs, изначально равное x, т.е. xs=xs·x, тогда S=S+xs. Для
суммирования n степеней введенного x необходимо повторять
действия n раз, поэтому структура алгоритма циклическая.
1. Ввести значение x.
2. Если 0<x≤4, то продолжить выполнение алгоритма, иначе,
вывести соответствующее сообщение и закончить алгоритм;
3. Для формирования суммы начальное значение S=0.
4. Для формирования степени x начальное значение xs=x,
которое в дальнейшем каждый раз умножать на значение x.
5. Можно использовать цикл c параметром i, изменяющимся
от 1 до n (1≤ i ≤n), в котором каждый раз S увеличивается на xs, т.е.
S=S+xs, а xs увеличивается в x раз, т.е. xs=xs·x.
6. После завершения цикла вывести значение S.
61.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Практическое задание.
Задача 1
Математическая модель и описательный алгоритм
решения.
Формулы вычисления значения y, в зависимости от введенного
значения x, даны в постановке задачи. Так как формула
вычисления y зависит от значения x, то структура алгоритма
альтернативная.
1. Ввести значение x.
2. Если x<0, то y=x3–1,5.
3. Иначе, если x≥ π/2, то y=x2+2x; иначе, если 0≤ x<π/2, т.е. во
всех других случаях y=cos x+0,2.
4. Вывести значение y.
62.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Практическое задание.
Задача 1
Постановка задачи:
разработать алгоритм ввода с клавиатуры входных целых значений x, y,
вычисления значения a по формуле
и вывода на экран монитора полученного результата; написать
программу, реализующую разработанный алгоритм.
Математическая модель и описательный алгоритм решения.
Формула вычисления функции a(x,y) дана в постановке задачи.
Значения x, y, a хранятся в переменных (поименованных областях
основной памяти), имеющих сооветствующие идентификаторы. Так как
функция a(x,y) определена для любых значений аргументов, то
структура алгоритма линейная.
1. Ввести с клавиатуры значения в переменные x, y.
2. Вычислить значение переменной a по заданной формуле.
3. Вывести на экран полученное значение переменной a.
63.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
УСЛОВНЫЕ КОНСТРУКЦИИ: ОПЕРАТОРЫ ВЕТВЛЕНИЯ. Условный оператор.
Условный оператор позволяет проверить некоторое условие и, в зависимости от результата проверки, выполнить
то или иное действие.
Структуры условного оператора:
неполная форма:
if (<условие>)
<оператор>;
<условие> – логическое выражение; если оно истинно (равно 1), то выполняется <оператор>, стоящий после него,
далее выполняется оператор, следующий за условным оператором (после ;); иначе также выполняется следующий
за условным оператором оператор.
полная форма:
if (<условие>)
<оператор_1>;
else
<оператор_2>;
Если <условие> истинно (равно 1), то выполняется <оператор_1> (стоящий после условия), иначе (<условие> ложно
–равно 0) выполняется <оператор_2>, стоящий после else; далее выполняется оператор, следующий за условным
оператором (после;). <оператор>, <оператор_1>, <оператор_2> могут представлять собой один оператор или
группу операторов, заключенных в фигурные скобки ({}).
64.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Примеры задач на использование условного оператора.
Задача 1
Постановка задачи: разработать алгоритм ввода с клавиатуры значения x, вычисления и вывода на экран
монитора значения функции
написать программу, реализующую разработанный алгоритм.
Математическая модель и описательный алгоритм решения.
Формулы вычисления значения функции y(x), в зависимости от введенного значения x, даны в постановке
задачи. Так как выбор формулы вычисления y зависит от значения x, то структура алгоритма альтернативная.
1. Ввести значение переменной x.
2. Если x≤0, то y=x3–1.
3. Иначе, если x>π, то y=x2+2.
4. Иначе, если 0<x≤π, т.е. во всех других случаях, y=cos x.
5. Вывести значение переменной y.
65.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Примеры задач на использование условного оператора.
Задача 2
Постановка задачи: разработать алгоритм вычисления функции по формуле
для введенных с клавиатуры значений x, y и вывода полученного значения b на экран; написать программу,
реализующую разработанный алгоритм.
Математическая модель и описательный алгоритм решения.
Формула вычисления значения функции b(x,y) дана в постановке задачи. Так как функция b(x,y) существует не
для всех значений x, y, то необходимо определить область допустимых значений (ОДЗ): x2 - 0,3 ≥ 0 и 1sin(2·x)≠0, но из-за невозможности достижения нулевого результата в форме с плавающей запятой при
вычислении выражения 1 - sin(2·x) следует сравнивать его модуль с некоторой бесконечно малой величиной ε
(например,ε = 0,000001). Объявить константу е = 0,000001.
1. Ввести значения в переменные x, y.
2. Если x2 - 0,3 ≥ 0 и |1-sin(2·x)|>e, то вычислить значение переменной b по формуле и вывести полученное
значение.
3. Иначе вывести сообщение о том, что входные значения не удовлетворяют ОДЗ, и выйти из алгоритма.
66.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Оператор множественного выбора (переключатель).
Оператор выбора (переключатель), сравнивая значение заданного выражения со списком констант (символов или целых
чисел), при обнаружении совпадения позволяет выбрать соответствующий вариант дальнейшего продолжения вычислительного
процесса.
Структура оператора выбора:
switch (<выражение>)
{
case <константа_1>: <оператор_1>; break;
case <константа_2>: <оператор_2>; break;
…
[default: <оператор_n>; break;]
}
<выражение> в операторе switch – значение целого типа; <выражением> и обязательно должны отличаться друг от друга. В
случае равенства <выражения> <константе_1>, выполняется <оператор_1>; иначе, в случае равенства <выражения>
<константе_2>, выполняется <оператор_2>; иначе… и так далее до последней <константы> (после case); иначе, если
<выражению> не соответствует ни одна константа, то управление передается <оператору_n>, стоящему после ключевого слова
default, которое является необязательным. Если отсутствует default, то выполняется оператор, следующий за оператором switch
(после }). Внутри switch оператор break приводит к передаче управления оператору, следующему за оператором switch, т.е.
используется для выхода из переключателя. Если break отсутствует, то после текущего раздела case будет выполняться следующий
раздел case или default.
67.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Пример задачи на использование оператора множественного выбора.
Постановка задачи: разработать алгоритм перевода значения длины из дюймов в сантиметры и обратно и
вывода полученного значения (в дюймах или в сантиметрах); предполагается, что во входном потоке значение
в сантиметрах завершается символом ’c’, а значение в дюймах (inch) – символом ’i’; написать программу,
реализующую разработанный алгоритм.
Математическая модель и описательный алгоритм решения.
Используемые соотношения для составления формул, переменные и формулы для вычислений приведены в
вышеупомянутой задаче.
1. Ввести значение переменной x и после него завершающий символ в переменную sim.
2. Если sim=’i’, то in=x, cm=x·k; если sim=’c’, то in= k/x , cm=x.
3. Иначе in=0, cm=0.
4. Вывести значения переменных in и cm.
68.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
ЦИКЛИЧЕСКИЕ КОНСТРУКЦИИ: ОПЕРАТОРЫ ЦИКЛОВ.
В циклических конструкциях используются операторы повторений, при помощи которых можно
запрограммировать многократно повторяющиеся действия. Существуют два типа циклов: с параметром
(счетчиком), который, в том числе, относится к циклам с предусловием, и итерационные, которые, в свою очередь,
могут быть с предусловием и постусловием.
В любом цикле можно выделить четыре части: инициализацию, условие, итерацию и тело цикла, которое может
включать в себя от одного до нескольких операторов, представляющих собой составной оператор (блок).
69.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Оператор цикла с параметром (счетчиком).
Оператор цикла с параметром (счетчиком) является циклом с предусловием, так как условие выполнения
цикла проверяется до исполнения операторов тела цикла (если условие истинно, цикл продолжается, иначе
завершается). Как правило, цикл с параметром используется, когда число повторений тела цикла заранее известно:
в условии выполнения цикла задаются начальное и конечное значения параметра и модификация (шаг изменения
параметра). В этом случае цикл выполняется, пока параметр цикла, начиная с начального значения, не достигнет
конечного.
Структура оператора цикла с параметром:
for (<инициализация>; <условие>; <итерация>)
<тело_цикла>;
<инициализация> – объявление и присваивание начальных значений параметрам, используемым в цикле;
<условие> – логическое выражение, которое определяет условие выполнения цикла; <итерация> – модификация,
которая выполняется после каждого прохода цикла, служит для изменения параметра цикла; <тело_цикла>
составляют операторы, выполняемые в цикле.
Можно опустить любую часть цикла for, тогда <инициализация>, <условие> или <итерация> будут пустыми
операторами (;) без оператора или выражения перед ним. При одновременном отсутствии этих частей цикл будет
бесконечным, завершить который можно, используя в теле цикла оператор прерывания break по какому-либо
условию:
70.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Оператор цикла с параметром (счетчиком).
int a;
for (; ;)
{
scanf(“%d”,&a);
if (a==0)
break;
}
Также одновременно могут отсутствовать все части цикла for (в том числе и <тело цикла>), тогда цикл будет
бесконечным и никогда не завершится.
Внутри части <инициализация> оператора for можно объявлять переменные, которые будут действовать в
пределах этого оператора:
int a;
for (int n=10;n>0;n--)
a=a+n;
В частях <инициализация> и <итерация> допускается несколько выражений, тогда применяется запятая (,) для их
разделения внутри круглых скобок оператора for:
int a, b;
for (a=1,b=4;a<b;a++,b--)
{…}
71.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Оператор цикла с параметром (счетчиком).
72.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Оператор цикла с параметром (счетчиком).
73.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Итерационные циклы.
Итерационные циклы используется, когда количество повторений тела цикла заранее неизвестно и определяется
условием(выполнения или завершения) цикла.
Оператор цикла с предусловием. В цикле с предусловием логическое выражение, определяющее условие
повторения цикла, вычисляется и проверяется до выполнения операторов тела цикла, и если значение
логического выражения истинно (равно 1), то цикл повторяется, иначе цикл завершается.
Структура оператора цикла с предусловием:
[<инициализация>; ]
while (<условие>)
{
<тело_цикла>;
[<итерация>;]
}
<условие> – логическое выражение, определяющее условие повторения тела цикла; <инициализация> и
<итерация> –необязательны.
Если начальные условия таковы, что при входе в цикл <условие> ложно, то <тело_цикла> и <итерация> не
выполнятся ни одного раза.
74.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Итерационные циклы.
Так как операторы циклов взаимозаменяемы, то цикл с параметром for можно заменить на цикл с предусловием
while, и наоборот:
int i=1,n;
float x,xs,S;
while (i<=n)
{
S=S+xs;
xs=xs*x; i++;
}
75.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Итерационные циклы.
Оператор цикла с постусловием. В цикле с постусловием логическое выражение, определяющее условие
повторения цикла (в языке Си), вычисляется и проверяется после выполнения операторов тела цикла, и если
значение логического выражения истинно (равно 1), то цикл повторяется, иначе цикл завершается.
Таким образом, в любом случае тело цикла с постусловием выполнится, по крайней мере, один раз.
Структура оператора цикла с постусловием:
[<инициализация>; ]
do
{
<тело_цикла>;
[<итерация>;]
}
while (<условие>);
<условие> – выражение, определяющее условие повторения тела цикла; <инициализация> и <итерация> –
необязательны.
Например:
int a,n=10;
do
a=a+n;
while (--n>0);
76.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Итерационные циклы.
77.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Итерационные циклы.
78.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Итерационные циклы.
79.
РО 6.1 Осуществлять постановку цели и задачи и вырабатывать требования к программномуобеспечению.
Итерационные циклы.
80.
РО 6.3 Выбирать методы и стратегии разработки программного обеспечения.Структура повторения do/while .
81.
РО 6.3 Выбирать методы и стратегии разработки программного обеспечения.Структура повторения do/while .
82.
РО 6.3 Выбирать методы и стратегии разработки программного обеспечения.Структура повторения do/while .
83.
РО 6.3 Выбирать методы и стратегии разработки программного обеспечения.БЕЗУСЛОВНЫЕ КОНСТРУКЦИИ: ОПЕРАТОРЫ ПЕРЕХОДА. Оператор прерывания break
Оператор прерывания break в операторе выбора switch и в операторах цикла подразумевает выход из текущего
блока и передает управление следующему оператору.
Необходимость в использовании оператора прерывания break в теле цикла возникает, когда условие
продолжения итерации требуется проверять не в начале цикла, как в циклах for и while, и не в конце, как в
цикле do … while, а в середине тела цикла.
84.
РО 6.3 Выбирать методы и стратегии разработки программного обеспечения.Операторы break и continue.
85.
РО 6.3 Выбирать методы и стратегии разработки программного обеспечения.Операторы break и continue.
86.
РО 6.3 Выбирать методы и стратегии разработки программного обеспечения.Операторы break и continue.
87.
РО 6.3 Выбирать методы и стратегии разработки программного обеспечения.Операторы break и continue.
88.
РО 6.3 Выбирать методы и стратегии разработки программного обеспечения.Практическое задания.
1. Даны два целых числа A и B (A < B). Вывести в порядке возрастания все целые числа, расположенные
между A и B (включая сами числа A и B), а также количество N этих чисел.
2. Даны целые числа K и N (N > 0). Вывести N раз число K.
3. Дано целое число в диапазоне 1–7. Вывести строку — название дня
недели, соответствующее данному числу (1 — «понедельник», 2 — «вторник» и т. д.).
4. Дан номер месяца — целое число в диапазоне 1–12 (1 — январь, 2 — февраль и т. д.). Вывести название
соответствующего времени года («зима»,
«весна», «лето», «осень»).
programming