---
id: Fundamentos de la programación 2
aliases:
  - Fundamentos De la Programación
tags: []
date_created: Thursday, May 16th 2024, 10:03:49 am
date_modified: Sunday, May 19th 2024, 11:05:58 am
---

# Fundamentos De la Programación

---

## Código

notes:

- Lo que veremos es transversal para cualquier lenguaje de programación.
- dicho esto, cada lenguaje tiene sus leves diferencias.

---

## Flujo De Datos

+ Condicionales
+ Bucles
+ Funciones

---

## Condicionales

```mermaid
flowchart TD
	start([Inicio]) ---> entrada1[/ x = 1 /]
	entrada1 ---> if1{"¿x < 10?"}
	if1 --si--> salida1[/x es menor que 10/]
	if1 --no--> salida2[/x no es menor que 10/]
	salida1 ---> finish([Fin])
	salida2 ---> finish([Fin])
```

---

## Condicionales

## If/Else

| Sentencia        | Traducción literal     | Descripción                                                                                                                       |
| ---------------- | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `if`             | Si…                  | El siguiente bloque de código se ejecuta si la sentencia se evalúa como verdadera                                                 |
| `else`           | de lo contrario…     | El siguiente bloque se ejecuta si la última sentencia `if` se evalúa como falsa                                                   |
| `else if`/`elif` | de lo contrario, si… | El siguiente bloque se ejecuta si la ultima sentencia `if` se evalúa como falsa y la siguiente condición se evalúa como verdadera |

---

## Condicionales

## If/Else

```java
// JAVA
int x = 1;

if (x < 10) {
	System.out.println("x es menor a 10");
else if (x < 50) {
	System.out.println("x es menor a 50");
} else {
	System.out.println("x es un número muy grande");
}
```

```python
# PYTHON
x = 1;

if x < 10: 
	print("x es menor a 10");
elif x < 50:
	print("x es menor a 10");
else:
	print("x es un número muy grande");
```

```lua
-- LUA
x = 1;

if x < 10 then
	print("x es menor a 10");
elseif x < 50 then
	print("x es menor a 10");
else
	print("x es un número muy grande");
end
```

---

## Condicionales

### Ternary Operator

```java
// JAVA
String foo = 10 % 2 == 0 ? "10 es par" : "10 no es par";
```

```python
# PYTHON
foo = "10 es par" if 10 % 2 == 0 else "10 no es par";
```

---

## Condicionales

## Switch

```java
// JAVA
int dia = 4;

switch (dia) {
  case 6:
    System.out.println("Hoy es sábado");
    break;
  case 7:
    System.out.println("Hoy es domingo");
    break;
  default:
    System.out.println("Esperando el fin de semana :3");
}
```

---

## Ciclos/Bucles

```mermaid
flowchart TD
	start([Inicio]) --> entrada1[/ x = 1 /]
	entrada1 --> if1{"¿x < 10?"}
	if1 --no--> finish([Fin])
	if1 --si--> salida1[/x es menor que 10/]
	salida1 --> process1[x += 1]
	process1 --> if1
```

---

## Ciclos

### While

```java
// JAVA
int i = 1;

while (i < 10) {
  System.out.println(i);
  i += 1;
}

/* --- */

int j = 0;

do {
  System.out.println(j);
  j += 1;
}
while (j < 50);
```

```python
# PYTHON
i = 1  

while i < 10:  
  print(i)  
  i += 1
```

notes:

- El bloque del while se ejecuta mientras la condicional sea **Verdadera**
- Preguntar: _"¿cuál es el ultimo número que se va a imprimir?"_ -> 9
- El while se usa cuando no sabemos cuando la condición se vaya a cumplir.
- while: mientras verdadero, hacer
- do-while: hacer, mientras verdadero

---

## Bucles

### For

```java
// JAVA
for (int i = 0; i <= 5; i++) {
  System.out.println(i);
}

/* --- */

String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};

for (int i = 0; i < cars.length(); i++) {
  System.out.println(cars[i]);
}
```

```python
# PYTHON
for x in range(6):  
  print(x)
```

notes:

- python declara el for de esta manera por ser un lenguaje más declarativo.

---

## Bucles

### For Each

```java
// JAVA
String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};

for (String i : cars) {
  System.out.println(i);
}
```

```python
# PYTHON
fruits = ["apple", "banana", "cherry"]  

for x in fruits:  
  print(x)
```

---

## Bucles

| Sentencia  | Significado literal | Descripción                                                           |
| ---------- | ------------------- | --------------------------------------------------------------------- |
| `Continue` | Continuar           | Detiene la ejecución del código y continúa con la siguiente iteración |
| `break`    | Romper              | Sale del bucle, independiente si la condición sigue siendo verdadera  |

---

## Bucles

```java
// JAVA
while (true) {
	boolean error = Math.calculos_complicados()
		
	if (error) {
		break;
	}
}

/* --- */

String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};

for (String i : cars) {
	if (i == "BMW") {
		System.out.println("No trabajamos con BMW!");
		continue;
	}

	Fabrica.procesar(i);
}
```

---

## Funciones

Las funciones son bloques de código re-utilizables, ayuda a evitar la duplicidad del código siguiendo lógicas como _"don't repeat yourself"_.

Las funciones vendrían a representar un _"proceso"_.

notes:

- en java no existen las funciones fuera de una clase, por lo que sólo las veremos en OOP cómo métodos.
- entrada, proceso, salida.

---

## Funciones

+ Las funciones deben ser definidas antes de ser llamadas.
+ pueden recibir argumentos/parámetros.
+ En lenguajes tipeados, deben tener un tipo de retorno.

---

## Funciones

```python
# PYTHON
def saludar(nombre):
	print("hola " + nombre)

saludar("pedro")
saludar("juan")
saludar("diego")
```

```python
# PYTHON
def elevarCuadrado(num1):
	resultado = num1 * num1
	return resultado

foo = elevarCuadrado(2)
print(foo)
```

---

## Scope De Las Variables

```python
# PYTHON
def myFunction():
	numero = 5
	# calculos complicados
	return numero

myFunction()
print(numero) # Error
```

```python
# PYTHON
def myFunction():
	numero = 5
	# calculos complicados
	return numero

numero = myFunction()
print(numero) # funciona
```

---

## Scope De Las Variables

```python
# PYTHON

PI = 3.14

def areaCirculo(radio):
	area = PI * (radio * radio)
	return area

area = areaCirculo(3)
print(area)
```

---

## Fin :3
