Тема 1
Основы алгоритмизации и программирования
Лекция 1.4.
Программирование разветвляющихся процессов
Литература
Основная:
Подбельский В.В., Фомин С.С. Программирование на языке Си: Учеб. пособие. – М.: Финансы и статистика, 2004.
Дополнительная:
С/ C ++ Структурное программирование. Практикум. Программирование на языке высокого уровня. Питер, 2004.
Юркин А. Задачник по программированию. Гриф МО. Учебное пособие, Питер, 2002.
Шмидт Г. Самоучитель Си++. СПб.: БХВ – Петербург, 2004.
Вопросы:
1 . Логические значения и выражения.
2. Условный оператор.
3. Метки и оператор перехода.
4. Пример программирования разветвляющихся процессов.
1 . Логические значения и выражения
Логические значения: true – истина; false – ложь. В языке Си логический тип данных отсутствует, Обычно: true кодируется как 1 (любое целое число, отличное от нуля); false как 0 . Логические операции выполняются над арифметическими операндами (числами, переменными, выражениями) или отношениями, результат соответствует целочисленному значению 1 (истина) или 0 (ложь).
Больше или равно = " width="640"
Логические операции сравнения
Равно ==
Не равно !=
Меньше, чем
Меньше или равно
Больше, чем
Больше или равно =
0 A1 != b1 Операции = = и != имеют более низкий ранг, по сравнению с другими операциями сравнения, например, конструкция F DSC = ros эквивалентна записи ( F DSC = ros ) " width="640"
Примеры записи операций сравнения
Z = = 3.1416
X 0
A1 != b1
Операции = = и != имеют более низкий
ранг, по сравнению с другими операциями
сравнения, например, конструкция
F DSC = ros
эквивалентна записи
( F DSC = ros )
Логические операции && - конъюнкция , | | - дизъюнкция. Результаты выполнения логических операций
А
B
false
false
true
&&
false
false
false
| |
false
true
false
true
true
false
true
true
true
true
= 2)&&( ozenka ) ( ozenka = = 5 ) || ( ozenka == 4 ) ( y1 = 2) && (y1 (r 3.14) && (r 5 ) (value || (value != 0) " width="640"
Примеры записи логических операций:
( ozenka = 2)&&( ozenka )
( ozenka = = 5 ) || ( ozenka == 4 )
( y1 = 2) && (y1
(r 3.14) && (r 5 )
(value || (value != 0)
2. Условный оператор
Составной оператор
{
оператор1;
оператор2; …
}
Пример записи составного оператора
{
a=b+1.0;
c+=(a+b)/3.0;
x2=x1-x2;
}
0)&&( a b =1./ a ; else b *= a ; " width="640"
Условный оператор
Условный оператор имеет две формы записи – полную и сокращенную. Полная форма
if ( условие ) оператор 1 ; else оператор 2 ;
Условие записывается в круглых скобках, оно может представлять собой арифметическое или логическое выражение. Если условие истинно (значение выражения для условия не равно нулю) выполняется оператор 1. В случае ложности (нулевое значение выражения условия) – оператор 2. Оператор 1 и Оператор2 заканчиваются символом " ; ". Пример записи условного оператора
if (( a 0)&&( a b =1./ a ; else b *= a ;
Условный оператор сокращенный вариант записи
if ( условие ) оператор 1 ;
Оператор 1 выполняется только в случае истинности условия (не равенства нулю его значения). Если условие ложно, то условный оператор эквивалентен «пустому» оператору.
=0) {x1=–a+d; x2=–a–d;} else {x1=0; x2=0.0;}; Перед закрывающей операторной скобкой символ " ; " записывается обязательно . После операторных скобок перед else символ " ; " не ставится. Условные операторы можно вкладывать друг в друга. " width="640"
Оператор1 и оператор2 в полной и в сокращенной форме могут быть простыми или составными (несколько операторов можно объединить операторными скобками)
if (d=0) {x1=–a+d; x2=–a–d;}
else {x1=0; x2=0.0;};
Перед закрывающей операторной скобкой символ " ; " записывается обязательно . После операторных скобок перед else символ " ; " не ставится. Условные операторы можно вкладывать друг в друга.
3. Метки и оператор перехода
Метки
Метка представляет собой идентификатор, который отделяется от оператора двоеточием. Пометить можно и пустой оператор. Примеры записи
Met 1: a =1.0;
rur 1:;
Специально объявлять метки не нужно, они объявляются своим появлением в тексте программы.
Оператор перехода goto
Оператор перехода обеспечивает изменение порядка выполнения команд программы и имеет вид goto метка ; Все символы оператора перехода записываются без пробелов. Пример записи оператора перехода goto Met 1;
4. Пример программирования разветвляющихся процессов
//Программа вычисления корней
// квадратного уравнения
#include
#include //подключение библиотеки математ. ф-ций
void main()
{
double a,b,c,x1,x2,d;
printf("\nVychislenie korney kvadratnogo uravnenia ax*x+bx+c=0");
met1:printf ("\nVvedite koeffiz 'a', ne ravny nulu= ");
scanf("%lf",&a);
if (a==0) {printf("nelzya koeff 'a' zadavat', ravnym nulu"); goto met1;};
printf ("\nVvedite koeffiz 'b'= ");
scanf("%lf",&b);
printf ("\nVvedite koeffiz 'c'= ");
scanf("%lf",&c);
d=b*b-4*a*c;
if (d 0.0)
{
printf("\nDeystvitelnyh korney net\n");
goto met2;
};
x1=(-b+sqrt(d))/2.0/a;
x2=(-b-sqrt(d))/2.0/a;
printf("\nx1=%lf\nx2=%lf\n",x1,x2);
met2:;
}
Фрагмент текста без использования оператора безусловного перехода в обработке дискриминанта
d=b*b-4*a*c;
if (d printf("\nDeystvitelnyh korney net\n");
else
{
x1=(-b+sqrt(d))/2.0/a;
x2=(-b-sqrt(d))/2.0/a;
printf("\nx1=%lf\nx2=%lf\n",x1,x2);
}
}
Вычислить значение функции
0) && (x if ((x3) && (x if (x5) z=2; printf("\nz=%lf\n",z); } " width="640"
Фрагмент текста программы вычисления функции z
void main()
{
double x,z;
printf ("\nVvedite znachenie argumenta x= ");
scanf("%lf",&x);
if (x
if ((x0) && (x
if ((x3) && (x
if (x5) z=2;
printf("\nz=%lf\n",z);
}
Вопросы для самоподготовки
1. Логические значения.
2. Логические операции и выражения.
3. Порядок выполнения логических операций.
4. Назначение и структура условного оператора.
5. Назначение и форма записи оператора безусловной передачи управления.
Задания к практическому занятию.
1) заданы длины трех отрезков х 1 , х 2 и х 3 . Составить алгоритм и программу, которая по результатам анализа вводимых длин отрезков выводит на экран сообщение:
разносторонний треугольник ;
равнобедренный треугольник ;
равносторонний треугольник ;
построить треугольник нельзя .
2) Составить программу проверки соблюдения неравенства
для любых значений х 1 и х 2 для функции f ( x ) = x 2 . Значения х 1 и х 2 задаются вводом.
3) Составить алгоритм и программу, которая определяет, принадлежит ли точка с заданными пользователем координатами ( х, у ), к заштрихованной области рисунка. Ограничения: ( a – A ) R + r ), ( B – b ) r + R ),
Значения параметров
r =2,6; R =3,7 ; B = ; b = ; A = ; a =9,0;
Доработать программу так, чтобы параметры A , a , B , b , R , r задавались вводом.

Программирование разветвляющихся процессов (1.21 MB)

