Contidos
No proceso de aprender a programar, moitas veces Ć© necesario crear programas que non sexan tan fĆ”ciles de aplicar na vida real. Despois de todo, de cando en vez ten que seguir as instruciĆ³ns sĆ³ baixo certas condiciĆ³ns. Para poder implementar isto no programa, todos os idiomas teƱen instruciĆ³ns de control. Coa sĆŗa axuda, pode controlar o fluxo de execuciĆ³n de cĆ³digo, creando bucles ou realizando determinadas acciĆ³ns sĆ³ cando unha determinada condiciĆ³n Ć© verdade.
Hoxe falaremos da declaraciĆ³n if, que verifica a situaciĆ³n actual para unha determinada condiciĆ³n e, en funciĆ³n desta informaciĆ³n, toma decisiĆ³ns sobre outras acciĆ³ns.
Tipos de declaraciĆ³ns de control
En xeral, if non Ć© a Ćŗnica instruciĆ³n que controla o fluxo dun programa. AsĆ como el mesmo pode ser un compoƱente dunha cadea mĆ”is grande de operadores.
TamĆ©n hai bucles e instruciĆ³ns que controlan o proceso da sĆŗa execuciĆ³n. Hoxe sĆ³ falaremos do operador condicional e das cadeas nas que pode participar.
Na programaciĆ³n, hai algo como a ramificaciĆ³n. Ć precisamente isto o que significa unha secuencia de comandos que sĆ³ se executa se unha determinada condiciĆ³n Ć© certa. Os propios criterios poden ser diferentes:
- Igualdade dunha variable a un determinado valor.
- RealizaciĆ³n dunha acciĆ³n concreta.
- Estado da aplicaciĆ³n (contraĆdo ou non).
O espectro pode ser moito maior. As declaraciĆ³ns condicionais teƱen varios tipos:
- Cunha rama. Ć dicir, realĆzase unha Ćŗnica comprobaciĆ³n, como resultado da cal se realizan determinadas acciĆ³ns.
- Con dĆŗas ou mĆ”is ramas. Se o criterio 1 Ć© certo, comprobe o criterio 2. Se Ć© certo, comproba o 3. E asĆ, realiza tantas comprobaciĆ³ns como sexa necesario.
- Con varias condiciĆ³ns. AquĆ todo Ć© sinxelo. O intĆ©rprete verifica varias condiciĆ³ns ou unha delas.
declaraciĆ³n se
A estrutura da instruciĆ³n if Ć© semellante en todas as linguas. Non obstante, en Python, a sĆŗa sintaxe Ć© algo diferente de todas as demais:
condiciĆ³n se:
<Š²Ń Š¾Š“ŃŃŠµŠµ Š²ŃŃŠ°Š¶ŠµŠ½ŠøŠµ 1>
<Š²Ń Š¾Š“ŃŃŠµŠµ Š²ŃŃŠ°Š¶ŠµŠ½ŠøŠµ 2>
<Š½Šµ Š²Ń Š¾Š“ŃŃŠµŠµ Š²ŃŃŠ°Š¶ŠµŠ½ŠøŠµ>
En primeiro lugar, declĆ”rase o propio operador, despois de que se escribe a condiciĆ³n baixo a que comeza a funcionar. A condiciĆ³n pode ser verdadeira ou falsa.
Isto Ć© seguido dun bloque con comandos. Se segue inmediatamente un criterio a cumprir, entĆ³n a secuencia de comandos correspondente chĆ”mase bloque if. Podes usar calquera nĆŗmero de comandos nel.
AtenciĆ³n! A sangrĆa dentro de todos os comandos de bloque if debe ser do mesmo tamaƱo. Os lĆmites do bloque vense determinados polas sangrĆas.
Segundo a documentaciĆ³n lingĆ¼Ćstica, a sangrĆa Ć© de 4 espazos.
Como funciona este operador? Cando o intĆ©rprete ve a palabra if, inmediatamente comproba a expresiĆ³n contra os criterios especificados polo usuario. Se este Ć© o caso, entĆ³n comeza a buscar instruciĆ³ns e seguilas. En caso contrario, saltaranse todos os comandos deste bloque.
Se unha instruciĆ³n despois da condiciĆ³n non estĆ” sangrĆa, non se trata como un bloque if. Na nosa situaciĆ³n, esta liƱa Ć©
AquĆ tes un fragmento de cĆ³digo para ver un exemplo de como funciona este operador.
nĆŗmero = int(entrada ("Introduce un nĆŗmero: "))
se o nĆŗmero > 10:
print("O nĆŗmero Ć© maior que 10")
Este programa solicita ao usuario un nĆŗmero e comproba se Ć© maior que 10. Se Ć© asĆ, devolve a informaciĆ³n adecuada. Por exemplo, se o usuario introduce o nĆŗmero 5, o programa simplemente rematarĆ” e xa estĆ”.
Pero se especifica o nĆŗmero 100, entĆ³n o intĆ©rprete entenderĆ” que Ć© mĆ”is de dez e informarao.
AtenciĆ³n! No noso caso, se a condiciĆ³n Ć© falsa, o programa detense, porque non se dan ordes despois da instruciĆ³n.
SĆ³ hai un comando no cĆ³digo anterior. Pero hai moitos mĆ”is. O Ćŗnico requisito Ć© sangrar.
Agora imos analizar esta secuencia de comandos.
nĆŗmero = int(entrada ("Escribe un nĆŗmero: "))
se o nĆŗmero > 10:
imprimir ("primeira liƱa")
imprimir ("segunda liƱa")
imprimir ("terceira liƱa")
print("A liƱa que se executa, independentemente do nĆŗmero introducido")
print ("Finalizar aplicaciĆ³n")
Tenta adiviƱar cal serĆ” a saĆda se introduces os valores 2, 5, 10, 15, 50.
Como podes ver, se o nĆŗmero introducido polo usuario Ć© superior a dez, saen tres liƱas + unha co texto "Executar cada vez..." e outra "Finalizar", e se Ć© inferior a dez, sĆ³ unha, con un texto diferente. SĆ³ se executarĆ”n as liƱas 3,4,5 se Ć© verdadeira. Non obstante, as dĆŗas Ćŗltimas liƱas escribiranse sen importar o nĆŗmero que especifique o usuario.
Se usas as instruciĆ³ns directamente na consola, o resultado serĆ” diferente. O intĆ©rprete activa inmediatamente o modo multiliƱa se, despois de especificar o criterio de verificaciĆ³n, preme Intro.
SupoƱamos que escribimos a seguinte secuencia de comandos.
>>>
>>> n = 100
>>> se n > 10:
...
Despois diso, veremos que >>> foi substituĆdo por puntos suspensivos. Isto significa que o modo de entrada multiliƱa estĆ” activado. En palabras sinxelas, se preme Intro, serĆ” transferido Ć” entrada da segunda etapa da instruciĆ³n.
E para saĆr deste bloque, cĆ³mpre engadir unha construciĆ³n mĆ”is ao bloque if.
>>>
>>> n = 100
>>> se n > 10:
ā¦ imprimir(Ā«nv 10Ā»)
...
Se a condiciĆ³n non Ć© certa, o programa remata. Este Ć© un problema, xa que o usuario pode percibir que un programa deste tipo se pechou debido a un fallo. Polo tanto, Ć© necesario darlle feedback ao usuario. Para iso utilĆzase unha ligazĆ³n se-senĆ³n.
operador de expresiĆ³n se-senĆ³n
Este operador permĆtelle implementar unha ligazĆ³n: se a expresiĆ³n coincide cunha determinada regra, realice estas acciĆ³ns e, se non, outras. Ć dicir, permite dividir o fluxo do programa en dĆŗas estradas. A sintaxe Ć© intuitiva:
condiciĆ³n se:
# se bloquea
declaraciĆ³n 1
declaraciĆ³n 2
e asĆ por diante
senĆ³n:
# bloqueo mƔis
declaraciĆ³n 3
declaraciĆ³n 4
etcƩtera:
Imos explicar como funciona este operador. En primeiro lugar, a instruciĆ³n estĆ”ndar execĆŗtase no fĆo teixo, comprobando se coincide condiciĆ³n "verdadeiro ou falso". Outras acciĆ³ns dependen dos resultados da comprobaciĆ³n. Se Ć© verdadeiro, a instruciĆ³n que estĆ” na secuencia de instruciĆ³ns que segue a condiciĆ³n execĆŗtase directamente. teixo, se Ć© falso, entĆ³n outro.
Deste xeito pode xestionar os erros. Por exemplo, o usuario precisa introducir un raio. Obviamente, sĆ³ pode ser un nĆŗmero cun signo mĆ”is, ou Ć© un valor nulo. Se Ć© inferior a 0, debes enviar unha mensaxe solicitando que introduzas un nĆŗmero positivo.
AquĆ estĆ” o cĆ³digo que implementa esta tarefa. Pero aquĆ hai un erro. Tenta adiviƱar cal.
raio = int(entrada ("Introduza o raio: "))
se raio >= 0:
print("Circunferencia = ", 2 * 3.14 * raio)
print("Ćrea = ", 3.14 * raio ** 2)
senĆ³n:
print("Introduce un nĆŗmero positivo")
Erro de falta de coincidencia de sangrĆa. Se Ć© outra cousa deben situarse sen elas ou co mesmo nĆŗmero delas (segundo estĆ”n aniƱadas ou non).
Imos dar outro caso de uso (onde todo serĆ” correcto co aliƱamento do operador): un elemento de aplicaciĆ³n que verifica un contrasinal.
contrasinal = input ("Introduza o contrasinal: ")
se contrasinal == Ā«sshhĀ»:
imprimir ("Benvido")
senĆ³n:
print("Acceso denegado")
Esta instruciĆ³n omite mĆ”is a persoa se o contrasinal Ć© sshh. Se hai outra combinaciĆ³n de letras e nĆŗmeros, mostra a mensaxe "Acceso denegado".
declaraciĆ³n-expresiĆ³n if-elif-else
SĆ³ se non son certas varias condiciĆ³ns, execĆŗtase a instruciĆ³n que estĆ” no bloque. outro. Esta expresiĆ³n funciona asĆ.
se condiciĆ³n_1:
# se bloquea
afirmaciĆ³n
afirmaciĆ³n
mĆ”is declaraciĆ³n
condiciĆ³n elif_2:
# primeiro bloque elif
afirmaciĆ³n
afirmaciĆ³n
mĆ”is declaraciĆ³n
condiciĆ³n elif_3:
# segundo bloque elif
afirmaciĆ³n
afirmaciĆ³n
mĆ”is declaraciĆ³n
...
outro
afirmaciĆ³n
afirmaciĆ³n
mĆ”is declaraciĆ³n
Podes especificar calquera nĆŗmero de condiciĆ³ns adicionais.
Enunciados anidados
Outra forma de implementar varias condiciĆ³ns Ć© inserir comprobaciĆ³ns de condiciĆ³ns adicionais no bloque if.
Operador if dentro doutro bloque de condiciĆ³ns
gre_score = int(input("Introduce o teu lĆmite de crĆ©dito actual"))
per_grad = int(input("Introduza a sĆŗa clasificaciĆ³n de crĆ©dito: "))
se por_grado > 70:
# bloque se externo
se gre_score > 150:
# bloque se interno
print("ParabƩns, recibiches un prƩstamo")
senĆ³n:
print("SentĆmolo, non es apto para un prĆ©stamo")
Este programa realiza unha comprobaciĆ³n da cualificaciĆ³n de crĆ©dito. Se Ć© inferior a 70, o programa informa de que o usuario non ten dereito a crĆ©dito. Se Ć© maior, realĆzase unha segunda comprobaciĆ³n para ver se o lĆmite de crĆ©dito actual Ć© superior a 150. En caso afirmativo, mĆ³strase unha mensaxe de que se emitiu o prĆ©stamo.
Se ambos os valores son falsos, mĆ³strase unha mensaxe de que o usuario non ten a posibilidade de obter un prĆ©stamo.
Agora imos reelaborar un pouco ese programa.
gre_score = int(input("Introduce lĆmite actual: "))
per_grad = int(input("Introduza puntuaciĆ³n de crĆ©dito: "))
se por_grado > 70:
se gre_score > 150:
print("ParabƩns, recibiches un prƩstamo")
senĆ³n:
print("O teu lĆmite de crĆ©dito Ć© baixo")
senĆ³n:
print("SentĆmolo, non es apto para recibir crĆ©dito")
O cĆ³digo en si Ć© moi semellante, pero aniƱado if tamĆ©n proporciona un algoritmo no caso de que a condiciĆ³n resulte ser falsa. Ć dicir, o lĆmite da tarxeta Ć© insuficiente, pero o historial de crĆ©dito Ć© bo, mĆ³strase a mensaxe "Tes unha clasificaciĆ³n de crĆ©dito baixa".
declaraciĆ³n if-else dentro dunha condiciĆ³n outro
Imos facer outro programa que determine a nota dun alumno en funciĆ³n das puntuaciĆ³ns das probas.
puntuaciĆ³n = int(entrada ("Introduza a sĆŗa puntuaciĆ³n: "))
se puntuaciĆ³n >= 90:
print("Xenial! A tĆŗa nota Ć© A")
senĆ³n:
se puntuaciĆ³n >= 80:
print("Xenial! A tĆŗa nota Ć© B")
senĆ³n:
se puntuaciĆ³n >= 70:
print("Ben! A tĆŗa nota Ć© C")
senĆ³n:
se puntuaciĆ³n >= 60:
print("A tĆŗa nota Ć© D. Paga a pena repetir o material.")
senĆ³n:
print("Non suspendeu o exame")
A aplicaciĆ³n comproba primeiro se a puntuaciĆ³n Ć© maior ou igual a 90. En caso afirmativo, devolve unha nota A. Se esta condiciĆ³n Ć© falsa, realĆzanse as comprobaciĆ³ns posteriores. Vemos que o algoritmo Ć© case o mesmo a primeira vista. EntĆ³n, en vez de comprobar dentro outro mellor usar unha combinaciĆ³n se-elif-outra.
EntĆ³n, o operador if realiza unha funciĆ³n moi importante: asegĆŗrase de que determinadas pezas de cĆ³digo se executen sĆ³ se Ć© necesario. Ć imposible imaxinar a programaciĆ³n sen el, porque incluso os algoritmos mĆ”is simples requiren bifurcaciĆ³ns como "se vas Ć” esquerda, atoparao, e se vas Ć” dereita, entĆ³n tes que facer isto e aquilo".