No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Estructuras de control en Solidity

9/21
Recursos

Los lenguajes de programación Turing Completo poseen una serie de estructuras para controlar la lógica y el flujo de tu código fuente.

Estructuras de control en la programación

Las estructuras de control permiten declarar condiciones, agrupar instrucciones de código para ejecutarlas de forma sistemática y organizada las veces que necesitemos. Existen diferentes estructuras en la programación en general, y las que Solidity utiliza también existen en muchos otros lenguajes.

1. Condicionales if - else

Las condiciones if - else son la estructura más básica y simple dentro de la programación, le indican al código que si cierta expresión se cumple, se debe ejecutar el bloque de código que está relacionado con tal condición. Es una manera de bifurcar nuestro código para que ocurra una cosa u otra.

if (myCondicion) {
    // Hacemos algo
} else {
    // Hacemos otra cosa
}

2. Estructura While

Un While permite ejecutar código N cantidad de veces siempre y cuando una expresión se cumpla.

while (myCondicion) {
    // ...
}

El contenido de la estructura while se ejecutará mientras myCondicion sea verdadero.

3. Ciclo for de iteración

Estructura muy similar a while, con la diferencia de que con for se puede definir la cantidad de iteraciones que la estructura tendrá, o sea, la cantidad de veces que el código se ejecutará.

for (uint i = 0; i < 10; i++) {
    // ...
}

En este ejemplo, el ciclo for se ejecutará 10 veces, dado que hemos definido una variable que se autoincrementará en uno por cada iteración y, al cumplirse la condición, el for termina.

Conclusión

Estas son las estructuras básicas y con las que se construye la lógica en cualquier lenguaje de programación. Sin embargo, hay que considerar que entre más complejo sea un programa, esta lógica se puede tornar igual de compleja, con ciclos y condicionales anidados uno dentro de otro.

Es fácil perder el hilo de las instrucciones que se escriben conforme avanza un proyecto real, por lo que es recomendable mantener un orden y un código limpio.


Contribución creada por: Luis Enrique Herrera y Kevin Fiorentino (Platzi Contributors).

Aportes 14

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

que clase tan buena donde le doy like :v

Estructuras de control

  • If - Else (Se utiliza cuando se cumple una condición u otra)
if(aplicarBloqueador){
    meQuemo = fasle;
} else {
     meQuemo = true;
}
  • While (Permite ejecutar código cada vez que se cumpla una condición repetidamente)
uint veces =1;
while(!aplicarBloqueador && veces <=12){
    aplicarBloqueador = preguntar();
    veces = veces +1;
}
  • For (Permite ejecutar código mientras se usa una confidicón, pero a diferencia del while es que debes definir como quieres que se cumpla esta condición )
for(uint i =0; i < 6; i++){
    aplicarBloqueador = preguntar();
}

Recomiendo la extensión de Solidity para Visual Studio Code, les dejo el link de descarga

Demasiado básico para mi gusto, me gustaría que vaya directo al grano. Todos sabemos lo que es un If, un For, un While. Y si alguien no lo sabe, que vaya al Curso Gratis de Programación Básica. Solidity no será la mejor forma de aprender a programar para quién no sepa nada.

Que buena explicación, los ejemplos aplican muy bien incluso para gente no muy familiarizada con entornos de programación

Las estructuras de control sirven también para darle un flujo a la aplicación, vía estas estructuras podrás determinar qué caminos se siguen dentro del código según condiciones que vayas determinando.

Muy recomendable antes de entrar a cualquier lenguaje, practicar mucho con este tipo de estructuras (hay más) ya que el código se compone prácticamente de ellas.

Variables de estado

  • Tipo que son + nombreDeLaVariable
  • Tipos de variables
    • Booleans
      • bool
      • true - false
      • !(negación): !🌧
      • && (and): !🌧️ && 🔆
      • || (or): 🔆 || ☂️
      • == (igualdad): 1 == 1
      • ≠ (desigualdad): 2 ≠ 1
    • Integers
      • uint: 2 (Enteros sin signos o positivos)
      • int: -2 (Pueden ser enteros con signo, enteros negativos y positivos)
    • Address
      • 0x5B38…dC4
      • 0x617F…7f2
      • address payable
    • Strings
      • Cadena de texto
      • string message = “Hola mudo”;
  • Visibilidad
    • private
      • Prodrán ser usadas dentro del contrato
        • int private bigNumber = 1000000;
    • public
      • Podrán ser usadas dentro y fuera del contrato
        • int public bigNumber = 1000000;
    • default
      • Solo se pueden acceder dentro del contrato
        • int bigNumber = 1000000;

Variables globales

  • block
    • Información sobre el bloque
  • msg
    • Información sobre la llamada
  • tx
    • Información de la transacción actual
  • Propiedades
    • block.gaslimit
      • Límite de GAS que nos permite ejecutar el bloque actual
    • msg.data
      • Toda la información enviada en la llamada del contrato
    • msg.sender
      • Nos da la dirección de quien realiza la llamada del contrato
    • msg.value
      • Valor de Ether enviado en la llamada del contrato
    • tx.gasprice
      • Costo en GAS de la transacción actual
// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

contract Identity {
	uint256 public idNumber;
	bool public isWorking;
	string public name;
	address public wallet;
	
	constructor(
	    uint256 _idNumber,
	    bool _isWorking,
	    string memory _name
	) {
	    idNumber = _idNumber;
	    isWorking = _isWorking;
	    name = _name;
	    wallet = msg.sender;
	}

}

Primero realice el curso de introducción a solidity (el profesor es bueno). Pero el orden y detalle que llevan en este curso es genial.

Son conceptos de programación básica, si ya programas verás lo genial de estas clases. Como siempre cambia la sintaxis.

La calidad del código podría mejorar, a mi parecer es poco legible. Los nombres que se eligieron para las variables y funciones son poco descriptivas 😕

  • Estructuras de control
    • if - else

      • Permite ejecutar instrucciones de código cuando se cumpla una condición
      if (aplicarBloqueador) {
      	meQuemo = false
      } else {
      	meQuemo = true
      }
      
    • While

      • Permite ejecutar código cada vez que se cumpla una condición repetidamente
      uint veces = 1;
      while(!aplicarBloqueador && veces <= 12){
      	aplicarBloqueador = preguntar();
      	veces = veces + 1;
      }
      
    • For

      • Es muy similar a la estructura While, ya que también permite ejecutar código mientras se cumple una condición.
      • Se debe definir a parte de la condición que se desea cumplir, como avanza la variable que se desea
      • Si es de uno en uno usamos i++
      for(unit i=0; i < 6; i++){
      	aplicarBloqueador = preguntar()
      }
      
      • Si es de dos en dos usamos i += 2
      for(unit i=0; i < 12; i += 2){
      	aplicarBloqueador = preguntar()
      }
      

RESUMEN CLASE 9:
ESTRUCTURAS DE CONTROL

I.- ESTRUCTURAS DE CONTROL

  • If - Else

  • While

  • For

II.- If / Else

III.- While

IV.- For

Estructuras de control

La función de las estructuras de control nos permiten agrupas intrusiones de código y ejecutarlas las veces que queramos algunas son:

if-else
Esta estructura te permitirá ejecutar intrusiones en función de una condición, generalmente la aplicas en base de un resultado obtenido ejemplo:

Imagina que vas ala playa y hay mucho sol

La condición seria el uso del bloqueador, si te lo aplicas no te recamaras de lo contrario te vas a quemar

En la sintaxis de solidity quedaría de la siguiente manera

If(aplicarBloqueador){
meQuemo = false;
} else{
meQuemo = true;
}
El if else solo puede tener como resultado un true o un false

While
Esta estructura nos permite ejecutar código cada vez que cumpla una condición repetidamente por ejemplo

Si me aplicado bloqueador 12 veces, estaré protegido en caso de que no, aplicarse bloqueador

El solidity esto quedaría así

uint veces = 1;
While(!aplicarBloqueador && veces <= 12){
aplicarBloqueador = preguntar ();
Veces =veces + 1;
}

FOR
Es muy parecida al ciclo while con la diferencia de que integra como la variable ira desarrollándose con cada interacción usaremos el mismo ejemplo que el anterior y quedaría así con solidity

for(uint i=0; i<6; i++){
aplicarBloqueadro = preguntar();
}

Uso de Ciclo for en el mundo real :


  function statsIntelligence() {
    let intelligence = heros.map((hero) => hero.powerstats[0].intelligence);
    let sumaInt = 0;
    for (var i = 0; i < intelligence.length; i++) {
      (sumaInt += parseInt(intelligence[i]) / intelligence.length);
    }
    return sumaInt;
  }