[Plan de desarrollo C ++] Programa de control de flujo-juicio y circulación (Día 5)

Escriba al frente: ¡Hola a todos! Soy [AI Fungus], un programador al que le encanta tocar la guitarra. Yo 热爱AI、热爱分享、热爱开源! Este blog es un resumen y registro de mi aprendizaje. Si también está 深度学习、机器视觉、算法、Python、C++interesado, puede centrarse en mi dinámica, aprendemos juntos y avanzar juntos -
mi dirección de blog es: [AI] el blog de bacterias

Anterior: [Plan de desarrollo de C ++] Operador y prioridad del operador (Día 4)
Ayer, aprendimos los operadores de uso común y el orden de prioridad de los operadores en C ++, para que podamos procesar y transformar de manera flexible diversos datos. Hoy estudiamos principalmenteDos métodos para controlar el flujo del programa: juicio y circulación.



1. Juicio

(1) si ... otra declaración

En primer lugar, tenemos que pensar en lo que hay que juzgar. Piénselo en la vida real, lo haremos según diferentes situaciones,Después del juicioLuego ve a realizar diferentes operaciones. Luego, cuando usamos C ++ para resolver un problema, también nos encontraremos con esta situación. Para dar un ejemplo muy simple en matemáticas, hay una función por partes:
y = { 1 ( X > 0 0 ) 0 0 ( X 0 0 ) y = \ begin {cases} 1 & (x> 0) \\ 0 & (x \ le0) \ end {cases}
Este es un ejemplo típico de una oración que requiere juicio. Cuando queremos encontrar y, primero debemos determinar si x> 0 es verdadero. Cuando la condición es verdadera, dejamos y = 1; de lo contrario, dejamos y = 0. Luego use la declaración if ... else para lograr lo siguiente:

if(x>0)
	y=1;  //如果x大于0
else
	y=0;  //如果x小于或等于0

A partir de esto, tenemos una comprensión simple de si ... más oraciones de juicio. ¡Entonces, a continuación, comprendamos algunas habilidades necesarias en la programación real!

1.最基本的if...else结构
if(判断条件)
	执行1else
	执行22.当要执行多条语句时,需要用{}将多条语句包含视为一个语句块。
(注意:初学者很容易犯的一个错是,没有加{},这样编译器会默认只执行1if(判断条件)
{
	执行1;
	执行2}
else
	执行33.可以不加else。这种情况下,判断条件为真,则执行12,否则直接跳出判断语句
if(判断条件)
{
	执行1;
	执行2}

4.很重要也是很容易被忽略的一点:判断条件只要不为0(false),就视为真true

(2) Anidado si la declaración

Hablando de anidamiento, uno de los ejemplos más vívidos que me recuerda es:Matrioska(Es un juguete de muñeca de madera, cuando abres la muñeca afuera, encontrarás una muñeca más pequeña adentro, y luego la abres adentro, hay muñecas cada vez más pequeñas dentro ...)
si la declaración también se puede incrustar Establezca, dentro de la declaración if afuera, puede anidar una declaración if. Por supuesto, la declaración if dentro también se puede anidar nuevamente. En teoría, puede anidarse indefinidamente. Tomemos el anidamiento una vez como ejemplo:

if(判断条件1)
{
	执行1if(判断条件2)
		执行2else
		执行3}
else
	执行4

(3) Declaración if de múltiples sucursales

Las declaraciones if de varias ramas son similares a las declaraciones if ... else. Es solo que la declaración de varias ramas divide la condición más fina, por lo que tendráTres o másTome la siguiente función por partes como ejemplo:
y = { 1 ( X > 0 0 ) 0 0 ( X = 0 0 ) - 1 ( X < 0 0 ) y = \ begin {cases} 1 & (x> 0) \\ 0 & (x = 0) \\ -1 & (x <0) \ end {cases}
Usamos C ++ para implementarlo de la siguiente manera:

if(x>0)
	y=1;
else if (x==0)  //注意这个地方要用==,而不是赋值符号=
	y=0;
else
	y=-1;

(4) Procesamiento de condición de cambio de caja

En algunos problemas, aunque necesita hacer múltiples elecciones de juicio, pero cada vez juzga el valor de la misma expresión, por lo que no es necesario calcular el valor de la expresión en cada instrucción if anidada Se proporciona una declaración de cambio específicamente para resolver tales problemas. La sintaxis de la instrucción switch es la siguiente:

switch(表达式)
{
	case 常量表达式1:语句1;break;
	case 常量表达式2:语句2;break;
	...
	case 常量表达式n:语句n;break;
	default:语句n+1;break;
}

El orden de ejecución de la instrucción switch es: Primero calcule el valor de la expresión en la declaración del interruptor, luego encuentre la expresión constante con el mismo valor en la declaración del caso, y use esto como la entrada para ejecutar la declaración correspondiente. Si no se encuentra una expresión constante igual, la ejecución comienza por defecto.
Puntos a tener en cuenta al usar declaraciones de cambio

  • La expresión después de la instrucción switch puede ser un entero, un carácter o una enumeración.
  • El valor de cada expresión constante no puede ser el mismo, pero el orden no afecta el resultado de la ejecución.
  • Cada rama de caso puede tener múltiples declaraciones, pero no tiene que usar {}
  • Cada declaración de caso es solo una etiqueta de entrada y no puede determinar el punto de finalización de la ejecución, por lo que cada rama de caso debe ser la últimaAgregue una declaración de interrupción para finalizar toda la estructura del interruptor. De lo contrario, se ejecutará desde el extremo de entrada hasta el final de la estructura del interruptor.

Aquí hay un ejemplo que indica que el número ingresado (entre 1-7) corresponde al día de la semana:

#include<iostream>
using namespace std;
int main()
{
	enum DaysOfWeek  //枚举常量
	{
		Monday=1,
		Tuesday,
		Wednesday,
		Thursday,
		Friday,
		Saturday,
		Sunday
	};
	int day=0;
	cout<<"请输入今天星期几(1-7):";
	cin>>day;
	switch(day)
	{
		case Monday: cout<<"Today is Monday!"; break;
		case Tuesday: cout<<"Today is Tuesday!"; break;
		case Wednesday: cout<<"Today is Wednesday!"; break;
		case Thursday: cout<<"Today is Thursday!"; break;
		case Friday: cout<<"Today is Friday!"; break;
		case Saturday: cout<<"Today is Saturday!"; break;
		case Sunday: cout<<"Today is Sunday!"; break;
		default: cout<<"输入错误,请输入1-7之间的整数"; break; 
	}
	return 0;
}

Aquí ingreso 2 desde el teclado, y la salida del
Inserte la descripción de la imagen aquí
programa es la siguiente: las constantes de enumeración se utilizan en la definición de DaysOfWeek en el programa. Para los estudiantes que no saben mucho al respecto, puede consultar mi blog anterior: [Plan de desarrollo C ++] Explicación simple-alcance variable (Día 3)

(5) ¿Usar operadores? : Procesamiento condicional

C ++ proporciona un operador condicional de operador interesante y potente, que es equivalente a una estructura if-else compacta. El operador condicional también se llama operador trinocular, por lo que utiliza tres operandos.
Aquí hay un ejemplo simple, ¿usando el operador ?: Para obtener el mayor de dos números:

int Max = (num1>num2)? num1:num2;  //判断表达式num1>num2。如果为真,将num1传给Max,否则将num2传给Max

Equivalente a la siguiente declaración if ... else:

int Max=0;
if(num1>num2)
	Max=num1;
else
	Max=num2;

Si desea saber más acerca de los operadores, puede pinchar aquí: [Plan de desarrollo de C ++] Operador y prioridad del operador (Día 4)

2. ciclo

(1) mientras bucle

Forma de sintaxis del ciclo while:

while(表达式)
{
	循环体;
}

El orden de ejecución es: Determine el valor de la expresión primero, si es verdadero, luego continúe ejecutando la instrucción del cuerpo del bucle.
Aquí hay un ejemplo simple para encontrar la suma de los números naturales del 1 al 100.

#include<iostream>
using namespace std;
int main()
{
	int i=1,sum=0;
	while(i<=100)
	{
		sum+=i;
		i++;
	}
	cout<<"sum="<<sum<<endl;
	return 0;
}

Los resultados son los siguientes:
Inserte la descripción de la imagen aquí

(2) hacer ... mientras bucle

hacer ... mientras que la forma de sintaxis:

do{
	循环体;
}while(表达式);

El orden de ejecución es: Ejecute primero la instrucción del cuerpo del bucle y luego juzgue el valor de la expresión de condición del bucle. Cuando la expresión es verdadera, el cuerpo del bucle continúa ejecutándose; de ​​lo contrario, el bucle termina.
Del mismo modo, si se requiere la suma de los números naturales del 1 al 100, la estructura do ... while también se puede usar, como se muestra a continuación:

#include<iostream>
using namespace std;
int main()
{
	int i=1,sum=0;
	do{
		sum+=i;
		i++;
	}while(i<=100);
	cout<<"sum="<<sum<<endl;
	return 0;
}

Los resultados son los siguientes:
Inserte la descripción de la imagen aquí

(3) para bucle

El uso de la declaración for es el más flexible, se puede usar tanto cuando se determina el número de ciclos como cuando se desconoce el número de ciclos. La sintaxis es la siguiente:

for(初始语句;表达式1;表达式2)
{
	循环体;
}

El flujo de ejecución de la instrucción for es: Primero ejecute la declaración inicial, y luego juzgue la Expresión 1 (condición de control del bucle); si es verdadera, ejecute el cuerpo del bucle una vez, de lo contrario salga del bucle. Después de cada ejecución del cuerpo del bucle, el valor de la expresión 2 debe calcularse primero, y luego debe juzgarse la expresión 1 para decidir si continúa la ejecución del cuerpo del bucle.
Aquí hay un ejemplo simple, usamos para () o para lograr la suma de los números naturales del 1 al 100.

#include<iostream>
using namespace std;
int main()
{
	int sum=0;
	for(int i=1;i<=100;i++)
	{
		sum+=i;
	}
	cout<<"sum="<<sum<<endl;
	return 0;
}

Los resultados son los siguientes: el
Inserte la descripción de la imagen aquí
uso de la declaración for () necesitaTenga en cuenta lo siguiente

  • La declaración inicial, expresión 1, expresión 2 se puede omitir, peroNo se puede omitir el punto y coma.. Por ejemplo:
for(;;) //相当于while(true)语句,表示将无终止地执行循环体(死循环) 
  • La expresión 1 es la condición de control del bucle. Si se omite, el bucle continuará sin terminación.
  • Cuando la declaración de expresión inicial es una declaración de declaración, puede contener múltiples declaraciones de variables, separadas por comas. Por ejemplo:
for(int i=0,j=10; i<=j; i++,j--) k=i+j;

(4) El uso de continuar y romper

  1. declaración de ruptura. Aparece en la instrucción swtch o en la estructura del cuerpo del bucle, de modo que el programa salta de todo el cuerpo del bucle y la instrucción switch, y continúa ejecutando la siguiente declaración lógica. La declaración de ruptura no es adecuada para otras ocasiones.
  2. Seguir. Puede aparecer en el cuerpo circulatorio, su papel esTermina este ciclo(Es decir, omita el siguiente código en el bloque de bucle); luego vuelva a juzgar la condición del bucle y decida si continuará ejecutando el siguiente bucle.

(5) Goto inmaduro

La forma de la sintaxis goto es la siguiente:

JumpToPoint:
	循环体;
	goto JumpToPoint; //转跳回JumpToPoint处,重新执行循环体

Lo que debe explicarse aquí es: debido a que la declaración goto no es estructural, su uso frecuente hará que el programa sea confuso, por lo queNo se recomienda usarlo

61 artículos originales publicados · Me gusta 776 · Visitantes más de 20,000

Supongo que te gusta

Origin blog.csdn.net/wjinjie/article/details/105646675
Recomendado
Clasificación