русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Эти величины равны между собой


Дата добавления: 2013-12-23; просмотров: 672; Нарушение авторских прав


M -= n;

Return 0;

Kl=2;

Kl=1;

Kl=0;

Int c, y1, y2, kl, day, month, year;

Int main()

Else

X = 1;

Else оператор-2;

Оператор-1;

If (условие)

ТО цепочка-1

ЕСЛИ (условие)

Истина (да) ложь (нет)

ИНАЧЕ цепочка-2

ТО цепочка-1

ЕСЛИ (условие)

Альтернатива

Ветвления

Цепочка

Самой простой базовой структурой является цепочка – последовательность операторов присваивания.

Цепочку можно представить следующей схемой:

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

 

Алгоритм циклического обмена в этом случае будет выглядеть следующим образом:

 

Переменные a и b обмениваются своими значениями через переменную x.

По этому алгоритму можно написать последовательность операторов на Си:

x = a;

a = b;

b = x;

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

Выбор пути решения осуществляется в алгоритмических языках ветвлениями, которые могут быть представлены в двух формах:

· альтернатива,

· переключатель.

Альтернатива является простейшей формой ветвлений. Она предполагает выбор одного из двух путей решения задачи, причем этот выбор зависит от выполнения заданных условий:

истина (да)ложь (нет)

 

Альтернативу можно описать словесно:



В альтернативе может отсутствовать часть (ветвь) ИНАЧЕ, тогда она приобретает вид усеченной альтернативы:

 

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

 

Действие альтернативы:

1. проверяется выполнение условия,

2. если условие истинно, то выполняется следующая за ним цепочка-1, а цепочка-2, если она имеется, не выполняется,

3. если условие ложно, то выполняется цепочка-2, если она имеется.

В Си альтернатива реализуется условным оператором:

где условие – это любое логическое выражение (обязательно ставится в скобки).

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

Примеры:

1. определить значения переменной z после выполнения операторов:

z = 3;

if (x – z > 0) в данном случае условие ложно, поэтому

z = z – 1; будетвыполняться ветвь else, и, значит,

else z = z + 1; z = 4

2. определить наибольшую из двух переменных a и b, присвоив ее значение переменной с:

данет

 

 

Словесное описание алгоритма:

ЕСЛИ (a > b)

ТО c = a

ИНАЧЕ c = b;

Реализуем этот алгоритм на Си:

if (a > b)

c = a;

else c = b;

3. решить эту же задачу сокращенной альтернативой:

а)двумя сокращенными альтернативами:

if (a > b)

c = a;

if (b > a)

c = b;

 

б)одной сокращенной альтернативой:

c = b;

if (a > b)

c = a;

 

 

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

sin c,если c < 2,5

a =

cos c,если c ≥ 2,5

| c |,если c < 2,5

b = 1/c, если c ≥ 2,5

 

 

На Си:

if (c < 2.5) Внимание! Перед служебным словом

{ elseставится точка с запятой!

a=sin(c);

b=fabs(c);

}

{

a=cos(c);

b=1.0/c;

}

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

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

Примеры:

1. определить наибольшую из трех переменных x, y,z и присвоить ее значение переменной s:

а) с использованием полной альтернативы:

ЕСЛИ (x > y) if (x > y)

ТО ЕСЛИ (x > z) if (x > z)

ТО s = x s=x;

ИНАЧЕ s = z else s=z;

ИНАЧЕ ЕСЛИ (y > z) else if (y > z)

ТО s = y s=y;

ИНАЧЕ s = z; else s=z;

б) с использованием усеченной альтернативы: вариант 1

 

 

s = z; s = z;

ЕСЛИ (x > y) if (x > y)

ТО ЕСЛИ (x > z) if (x > z)

ТО s = x; s=x;

ЕСЛИ (y > x) if (y >x)

ТО ЕСЛИ (y > z) if (y > z)

ТО s = y; s=y;

вариант 2 – с использованием операции конъюнкции

s = z; s = z;

ЕСЛИ (x > y) & (x > z) if ((x > y) && (x > z))

ТО s = x; s=x;

ЕСЛИ (y > x) & (y > z) if ((y >x) && (y > z))

ТО s = y; s=y;

 

2. по заданной дате (день, месяц, год) определить день недели, приходящийся на нее:

#include <stdio.h>

#include <conio.h>

#include <math.h>

{

printf(“\nВведите день: ”);

scanf(“%d”, &day);

printf(“\nВведите месяц: ”);

scanf(“%d”, &month);

printf(“\nВведите год: ”);

scanf(“%d”, &year);

c=0;

y1=year/100;

y2=year-y1*100;

if ((y2==0) && (y1%4==0))

c=1;

if ((y2!=0) && (y2%4)==0))

c=1;

if ((c==1) && (month==1) ||(month==2))

if ((c==0) && (month==1) || month==2))

c=ceil(365.25*y2) + ceil(30.56*month) + day + kl;

c %= 7;

c += 3;

if (c==1)

printf(“\nЭто понедельник”);

if (c==2)

printf(“\nЭто вторник”);

if (c==3)

printf(“\nЭто среда”);

if (c==4)

printf(“\nЭто четверг”);

if (c==5)

printf(“\nЭто пятница”);

if (c==6)

printf(“\nЭто суббота”);

if (c==7)

printf(“\nЭто воскресенье”);

}

По принятому в Си соглашению, ветвь else всегда относится к ближайшему предшествующему ему незанятому if:

if (n>0)

if (m % n > 2)

else m += n;

else m %= n;

В данном случае ветвь else m += n относится к if (m % n > 2), а ветвь
else m %= n относится к if (n > 0).

При переходе с Паскаля на Си программисты часто допускают ошибки при формировании условия в операторе if, путая две операции:

= присваивания и

== сравнения:

if (a==b)

printf(“\nЭти величины равны между собой”);

else printf(“\nЭти величины не равны между собой”);

Это правильное сравнение значений двух переменных.

Перепишем это сравнение с ошибкой (компилятором не определяется):

if (a=b)

printf(“\nЭти величины равны между собой”);

else printf(“\nЭти величины не равны между собой”);

В этом случае сначала переменной a будет присвоено значение переменной b, а потом будет проверено, какое именно значение присвоено. Если это значение отлично от нуля (неложь), то выведется сообщение:

Если это значение равно нулю (ложь) – то сообщение:



<== предыдущая лекция | следующая лекция ==>
 | Переключатель


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.007 сек.