Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lec03 1213 nav.doc
Скачиваний:
1
Добавлен:
17.11.2019
Размер:
64 Кб
Скачать
  1. Лекция №3

    Тема:

    Базовые конструкции программирования в С/С++

    ПЛАН

    3 Лекция №3

    3.1 Общие сведения

    3.2 Операторы ветвления

    3.3 Операторы цикла

    3.4 Операторы передачи управления

    Время:

    4 ч.

    Литература:

    [4] с.59-86.

    1. Общие сведения

Программу любой сложности можно составить, используя три базовые структуры программирования:

  1. следование;

  2. ветвление;

  3. цикл;

Следование – последовательное выполнение двух и более операторов.

Ветвление задает выполнение того или иного оператора в зависимости от условия.

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

Базовые конструкции программирования могут вкладываться друг в друга произвольным образом, например, внутри цикла может быть ветвление.

Цель использования базовых конструкций – получить программу с простой и понятной структурой. Такие программы легко читать, отлаживать и вносить в них изменения.

В языке C/C++ реализованы следующие конструкции программирования:

  1. Простые операторы.

  2. Оператор-выражение – любое выражение, завершающееся точкой с запятой. Действие такого оператора заключается в вычислении выражения.

Примеры

x++;

a*=b;

  1. Пустой оператор – оператор, состоящий только из символа точка с запятой. Используется там, где по синтаксису требуется оператор, но по логике программы он должен отсутствовать.

  2. Составной оператор – группа операторов, заключенных в фигурные скобки. Примечание – Каждый оператор завершается символом ; после закрывающей фигурной скобки точку с запятой не ставят.

  3. Блок – составной оператор, который содержит определения. Величины, определенные в блоке действуют только в пределах этого блока.

Далее рассмотрим операторы для организации нелинейных программ (разветвленных и циклических).

    1. Операторы ветвления

К операторам ветвления в C/C++ относятся: условный оператор if и переключатель switch.

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

Условный оператор if используется для разветвления вычислительного процесса на два направления.

Полная форма оператора:

if (условие) оператор1; else оператор2;

Действие: Вычисляется выражение условия, если оно истинно, то выполняется оператор1, в ином случае – оператор2;

Сокращенная форма оператора:

if (условие) оператор1;

Действие: Вычисляется выражение условия, если оно истинно, то выполняется оператор1, в ином случае управление передается следующему за if оператору.

В качестве условия можно использовать арифметическое выражение или указатель. Особенность условного выражения: условие считается истинным (true), если имеет ненулевое значение, ложным (false) – если равно нулю.

Примеры разветвленных программ:

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

#include <iostream.h>

void main()

{

int x;

cout << "Ввести x=";

cin >> x;

if (x%2!=0) cout << "Число нечетное\n";

else cout << "Число четное\n";

}

Примечание – Так как истинному значению соответствует ненулевой результат условия, а ложному – нулевой, то строку с оператором if можно записать так: if (x%2) cout << "Число нечетное\n";.

Пример 2. Программа для решения квадратного уравнения.

#include <iostream.h>

#include <math.h>

void main()

{

float a,b,c,d,x1,x2;

cout << "Коэффициенты=";

cin >> a >> b >> c;

d=b*b-4*a*c;

if (d<0)

{

cout << "Нет корней" << endl ;

}

else

{

x1=(-b+sqrt(d))/(2*a);

x2=(-b-sqrt(d))/(2*a);

cout << "x1=" << x1 << endl;

cout << "x2=" << x2 << endl;

}

}

Вариант программы решения квадратного уравнения (для ввода-вывода используются функции scanf и printf):

#include <stdio.h>

#include <math.h>

void main()

{

float a,b,c,d,x1,x2;

printf("Коэффициенты=");

scanf("%f%f%f",&a,&b,&c);

d=b*b-4*a*c;

if (d<0)

{

printf("Нет корней\n");

}

else

{

x1=(-b+sqrt(d))/(2*a);

x2=(-b-sqrt(d))/(2*a);

printf("x1=%f\n",x1);

printf("x2=%f\n",x2);

}

}

Если нужно проверить несколько условий, то их объединяют логическими операциями (&& – И, || – ИЛИ).

Примеры сложных условий:

(0<x && 12<x)– истинно, если x соответствует неравенству 0<x<12

(a=b || b=c) – истинно, если истинно или условие a=b или условие b=c

Оператор-переключатель switch

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

Формат оператора:

switch (выражение) {

case константа1: операторы1;

case константа2: операторы2;

. . .

case константаN: операторыN;

default: операторы

}

Действие: Вычисляется выражение, затем его значение последовательно сравнивается с константами, идущими за case. При первом же совпадении выполняются операторы, соответствующие данной константе. Далее выполняются операторы всех последующих вариантов, пока не появится оператор перехода или не закончится переключатель. Операторы в разделе default выполняются, если значение выражения не совпало ни с одной константой после case. Раздел default может отсутствовать, в этом случае при несовпадении значения выражения с константами, переключатель не выполняет никаких действий.

Таким образом, если значение выражение совпало с константой номер K, то выполняются: операторыK, операторыK+1, операторыK+2 … операторыN.

Примечания

1 Выражение и константы должны быть символьного или целочисленного типа.

2 В одном операторе switch не может быть двух одинаковых констант.

3 Чтобы оператор switch мог работать как альтернатива (аналогично оператору case в Паскале), необходимо, чтобы каждая группа операторов заканчивалась оператором break:

switch (выражение) {

case константа1: операторы1;break;

case константа2: операторы2;break;

. . .

case константаN: операторыN;break;

default: операторы

}

Пример:

Программа-калькулятор на 4 арифметических действия. С клавиатуры вводится первое число, через пробел – операция, затем через пробел – второе число. После нажатия на Enter выводится результат. Если введена недопустимая операция, то появится соответствующее сообщение.

#include <iostream.h>

#include <conio.h>

void main()

{

char op;

int a,b;

float x;

clrscr();

cout<<"Ввести 2 числа и операцию:";

cin >>a>>op>>b;

switch (op) {

case '+': x=a+b;break;

case '-': x=a-b;break;

case '*': x=a*b;break;

case '/': x=a/b;break;

default : cout<<"Недопустимая операция\n"; return;

}

cout <<"Результат="<<x;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]