Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Вложенные условные операторы.

ОПЕРАТОРЫ ЯЗЫКА СИ

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

Оператор присваивания

Данный оператор выполняет присвоения переменной, указанной в левой части, значение выражения, расположенного в правой части оператора.
Формы записи оператора:

Оператор присваивания имеет три формы: простой, многоместный, совмещенный.

Простой:

v=a;

где: a-арифметическое выражение,

v-переменная,

= - знак присваивания

Пример:

void main() {

int present, entr;

present =exp(2,9);

entr = 20;

present = present + entr;

}

Многоместный - позволяет присваивать значение одного выражения сразу нескольким переменным.

k=m=i=1 v1=v2=…=124

Совмещенный - совмещает в себе две операции:

- изменение переменной на заданную величину;

- присвоение ей нового значения;

v+ =a; v=v+a

v - =a; v=v-a

v*=a; v=v*a

v/=a; v=v/a

v% =a; v=v% a

k+=1; k++ (k=k+1)

k-=1; k- - (k=k-1)

 

Пример

x+=0.5; z*=2.8;

t-=y*sin(0.2*x);

3.2. Составной оператор – образуется путем заключения в фигурные скобки двух или более операторов.

{оператор 1;

оператор n;

}

 

Пример 3.1

{ f = 1/2 *3*x; k* = f;}

 

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

{

{

оператор 1;

оператор 2;

}

 

{

оператор 3;

оператор 4;

}

 

}

3.3 Вывод данных на дисплей.

Для вывода информации на экран используется оператор printf(…), который выглядит следующим образом:

printf (“управляющая строка”,список вывода);

Управляющая строка определяет форму вывода информации и может включать в себя поясняющий текст, форматные спецификации и символ перевода строки.

Форматные спецификации содержат знак % и символ, соответствующий типу вводимой информации:

%d – целые десятичные

%u – беззнаковое десятичное

%c - символ

%s – строка

%f – вещественное с десятичными знаками.

%е – вещественное с порядком

%g – короткое вещественное

%0 – восьмиричное

%x – шестнадцатиричное

\n переход на новую строку

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

Пример 3.2

int n=200;

float a=17.25, b=21.47;

printf(“n=%d_ _ a=%f_ _ b = %e\n ”, n,a, b);

на экране n=200_ _ a=17.250000_ _ b=2.147000e-01

Управление в форматных спецификациях.

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

%[-][h]<тип>

где [-] - выравнивание записи по левому краю,

[h] - число, определяющее количество позиций под переменную:

%5d _ _ 200

%-5d 200

2. Для переменных вещественного типа:

%[-] [h][.t] <тип>

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

Пример 3.3

printf(“a=%5.2f_ _ b=%.3e”, a, b);

На экране: a = 17.25 b = 2.147e-01

Ввод данных с клавиатуры.

scanf(…) – структура оператора для ввода данных аналогична структуре оператора printf(…).

scanf(“управляющая строка”, список указателей);

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

Список ввода - список указателей, которые определяют, где будут располагаться введенные данные, поэтому перед именами переменных списка указателей ставится знак &.

Пример 3.4:

int k;

float y;

char t;

printf(“Введите значения k, y, t \ n “);

scanf(“%d%f%c”, &k, &y, & t);

Для осуществления ввода, вывода необходимо использовать файл стандартной библиотеки stdio.h.

#include<stdio.h>

Оператор перехода.

Оператор gotoпозволяет реализовать передачу программного управления из одной точки программы в другую.

Форма записи:

goto M;

где: М– метка оператора, обозначается обычным идентификатором, между меткой и помечаемым оператором размещается двоеточие:

lab1: y = 2*x + 1.5;

..........

goto lab1;

Пример 3.5:

#include <stdio.h>

void main()

{

int number =1;

label: printf(“Число: % 2d\n”, number);

number++;

if (number<=10) goto label;

}

 

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

Условный оператор предназначен для проверки заданного условия и выбора выполняемых действий (операторов) в зависимости от истинности (ложности) условия. Имеется 2 формы записи условного оператора:

1.Полная форма:

if(L) A1; else A2;

где:

L- некоторое логическое выражение;

A1, A2 простые или составные операторы.

Оператор работает таким образом, что если проверяемое условие истина, то выполняется оператор А1, оператор А2 пропускается и выполняется оператор, следующий за условным.

Если проверяемое условие ложь, то пропускается оператор А1, выполняется оператор А2,а затем выполняется оператор, следующий за условным, что можно проследить на блок-схеме

 


2.Сокращенная форма:

if(L) A;

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

Если проверяемое условие ложь, то пропускается оператор А, и сразу выполняется оператор, следующий за условным, что можно проследить на блок-схеме

 

Обычно, операторы А1, А2, А являются составными и общая структура оператора будет выглядеть следующим образом

if(выражение)

{оператор1;

оператор n; }

else

{оператор1;

оператор n;

}

Логические выражения

В условном операторе (а также в операторах цикла) можно записывать два вида условий:

1 - логические отношения;

2 - логические выражения.

Отношение - два арифметических выражения, связанных знаком отношения. Знаки логических отношений приведены в таблице 3.1.

Таблица 3.1 Знаки логических отношений

Знаки отношений Описание
> больше чем
>= больше или равно
< меньше чем
<= меньше или равно
== равно
!= не равно

Пример 3.6:if(x1<=x2) t=y*sin(x1)+1.5;

Логические выражения –два или больше логических отношений объединенных соответствующими операциями:

1. &&- логическое умножение and (и)

2. || - логическое сложение or(или)

3.! – логическое отрицание not (не).

Пример 3.7.

1.Проверить принадлежность числа х отрезку[-2;2]

if(x>=-2 && x<=2)…

 

2.Проверить лежит ли число у за пределами отрезка [0;5]

if(y<0 || y>5)

 

Логические выражения вычисляются слева направо и, если на каком-то этапе выясняется истинность (ложность) данного выражения, то вычисления прекращаются.

Пример 3.8.

x=2; y=5;

if(x>3&&y<6)… ложь

ложь не выч-ся

if(x<=4||y>=5)… истина

истина не выч-ся

Вложенные условные операторы.

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

if (выражение_1) if (выражение_2) оператор_1;

else оператор_2;

 

В сложных условных операторах else относится к ближайшему if. Если возникает необходимость в изменении такого порядка, то используют фигурные скобки, чтобы указать, к какому if принадлежит else.

if(выражение_1) {if(выражение_2) оператор_1;}

else оператор_2;

Пример 3.9. Задано три числа a, b, c. Найти значение максимального среди них.

Текст программы.

#include<stdio.h>

#include<conio.h>

int main ()

{

float a,b,c,max;

printf("задайте значения a,b,c");

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

if (a>b)max=a; else max=b;

if (c>max) max=c;

printf("\n max=%5.1f",max);

return 0;

}

Пример 3.10 Выполнить вычисления y по одной из формул, в зависимости от введенных значений чисел a, b, x.

 

sin(a/x), если x≤a

y = cos(a+b*x), если x≥b

a+(b+x)2+√|a|, если a<x<b

 

Текст программы

#include<stdio.h>

#include<conio.h>

#include<math.h>

int main ()

{

float a,b,x,y;

printf("Задайте значения a,b,x");

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

if (x<=a) y=sin(a/x);

if (x>=b) y=cos(a+b*x);

if (x>a&&x<b) y=a+(b+x)*(b+x)+sqrt(fabs(a));

printf("\n a=%5.1f b=%5.1f x=%5.1f y=%5.1f",a,b,x,y);

}

 

Пример 3.11 Выполнить вычисления y по одной из формул при различных значения х, используя оператор перехода и метку.

√ x -x2, если х>0

y=

x+√|x|, если х≤0

где х изменяется от –2 до +2 с шагом dx=0,1.

Определить:

k-количество положительных у(y>0) и их сумму S.

 

#include<stdio.h>

#include<math.h>

int main()

{

int k=0;

float x=-2, y, s=0;

metka: if (x>0) y=sqrt(x)-x*x;

else y= x+sqrt(fabs(x));

printf(“\n %6.2f %6.2f ”, x, y);

if (y>0){

k++;

S+=y;

}

x+=0.1;

if(x<=2) goto metka;

printf (“\n количество Y>0 k=%d\n”,k);

printf(“сумма Y>0 s=%6.2f”,s);

return 0;

}

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

1. Какие действия выполняет оператор присваивания?

2. Как выглядят простой, многоместный и совмещенный оператор присваивания?

3. Для чего используется вложенный условный оператор?

4. Как осуществляется вывод результатов на экран?

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

6. Какие существуют управляющие символы?

7. Как записывается формат вывода?

8. Как осуществляется ввод данных с клавиатуры?

9. Какую директиву препроцессору надо записать в начале программы, чтобы можно было использовать функции printf (...), или scanf (...)?

10. Когда используется оператор перехода goto?

11. Запишите полную форму записи условного оператора.

12. Запишите сокращенную форму записи условного оператора.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...