Está en la página 1de 25

Variables, Estructuras de Control, y Operaciones de

Entrada/Salida

Introducción a la Ingenierı́a

Ayudantes: Francisco Olivares, Camilo Pérez, Ignacio Tampe

Departamento de Informática, UTFSM

francisco.olivars.14@sansano.usm.cl
camilo.perez@alumnos.inf.utfsm.cl
ignacio.tampe@sansano.usm.cl

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 1 / 25


Introducción

I Ya sabemos hacer un programa básico.


I Logramos que compile y corra una instrucción simple.
I Ahora haremos cosas más entretenidas!

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 2 / 25


Variables

Definición de variables
I El compilador necesita saber cuánta memoria pedir para poder
generar las instrucciones de máquina.
I Por lo tanto, al declarar variables necesitamos decirle de qué tipo son.
I Ahora, además, debemos hacer distinción entre declaración, definición
e inicialización.
I Durante la Declaración le diremos al sistema que una variable de
cierto tipo existe.
I Durante la Definición le diremos al sistema dónde debe almacenar
dicha variable, y le pedimos la memoria para ello.
I Durante la Inicialización le diremos al sistema qué valor tendrá esa
variable.
Técnicamente, lo que sucede al declarar es que se le dice al compilador que genere la
entrada en la tabla de sı́mbolos. Se preocuparán de esto cuando lleguen a Lenguajes de
Programación.

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 3 / 25


Variables

I Declaración: Le decimos al sistema que una variable de tipo entero


llamada ”variable” existe.
int variable;

I Definición: Le pedimos al sistema que nos guarde espacio del tamaño


de un entero para ”variable”.
int variable;

I Inicialización: Ahora que tenemos el espacio asignado, le decimos al


sistema que ”variable” tendrá el valor 0.
variable = 0;

I Y podemos hacer todo de inmediato!


int otraVariable = 1;

I ...entonces, cuál es la diferencia entre definir y declarar?


IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 4 / 25
Variables

Comparación con Python

Python C

caracter = "D" char caracter = "D";


entero = 5 int entero = 5;
entero2 = 7 int entero2 = 7;
suma = entero + entero2 int suma = entero + entero2;

I Cada tipo distinto tiene una palabra clave distinta asociada, por el
momento es importante acordarse de int y char para enteros y
caracteres.
I Otras que podrı́an usar en el futuro son float, double, long, etc...

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 5 / 25


Variables

I La declaración importa al
momento de compilar, pues
puede ser necesario saber qué
variables ocupa el programa
durante el enlazamiento.
I Entonces, para qué sirve
declarar?
I Para variables, no mucho.
I Pero para funciones, pueden
decirle al compilador “esta
función existe, no te enojes si
no la encuentras por ahora”.
I Lo veremos en profundidad
más adelante. Recuerdan el espacio libre para declaraciones? Observen
cómo el compilador no reclama al encontrar declaraciones y
definiciones, el problema está en las lı́neas que siguen.

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 6 / 25


Variables

I Esencialmente, lo que sucede es una declaración si se realiza en el


espacio libre o una definición si lo hago dentro de una función (que
puede ser el main).
I Además se pueden definir, declarar e inicializar varias variables del
mismo tipo a la vez:

int var1, var2 = 5, var3, var4 = var2;

I Esta lı́nea no funciona en el espacio libre, por qué?


I Si sabemos que está dentro del main, entonces var1 y var3 quedan
definidas, var2 y var4 quedan inicializadas con el mismo valor.

int var1, var2 = 5, var3, var4 = 5;

I Asumamos que esta lı́nea se encuentra en el espacio libre.


I Entonces, var1 y var3 quedan declaradas, y var2 y var4 quedan
inicializadas con el mismo valor.
IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 7 / 25
Estructuras de control

Saltos condicionales

I Python provee las mismas formas de realizar saltos que C.


I Pero el elif se reemplaza por else if.
I Salvo las diferencias de sintaxis intrı́nsecas de C, son lo mismo.
I C además posee la palabra clave switch para seleccionar entre varios
casos.
I No lo veremos en profundidad, búsquenlo si les causa curiosidad!

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 8 / 25


Estructuras de control

Comparación con Python

Python C

var1, var2 = 4, 5 int var1 = 4, var2 = 5;


mayor = False int mayor = 0;
iguales = False int iguales = 0;
menor = False int menor = 0;
if var1 > var2: if (var1 > var2){
mayor = True mayor = 1;
elif var1 == var2: }
iguales = True else if (var1 == var2){
else: iguales = 1;
menor = True }
else{
menor = 1;
}
IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 9 / 25
Estructuras de control

I Notaron los paréntesis en el ejemplo en C? Aquı́ son obligatorios.


I Las condiciones pueden ser compuestas al igual que en Python,
abusen de los paréntesis si es necesario para no confundirse!

if (((var3 == var4) && (var1 <= var2)) || ((var 1 < var2)


&& (var 2 < var4) && (var1 == var3)) || (var2 == var1)){...
Ejemplo: una condición sensata e inteligentemente escrita.

I &&? ||?
I Corresponden al AND lógico y al OR lógico, respectivamente, como el
and y el or de Python.

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 10 / 25


Estructuras de control

Ciclos while

I Funcionan de la misma forma en ambos lenguajes: se establece una


condición y el ciclo continúa hasta que dicha condición ya no se
cumpla.
I break y continue también son palabras compartidas, y su
funcionamiento es el mismo.
I Pero eviten hacer que un ciclo termine mediante un break! Se
considera mala práctica.

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 11 / 25


Estructuras de control

Comparación con Python

Python C

haLlegado = False int haLlegado = 0;


contador = 10 int contador = 10;
iteraciones = 0 int iteraciones = 0;
while contador > 0: while (contador > 0){
contador -= 2 contador -= 2;
iteraciones += 1 iteraciones++;
haLlegado = True }
haLlegado = 1;

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 12 / 25


Estructuras de control

Ciclos for

I Aquı́ la cosa se pone (más) complicada.


I En Python, el for funciona sobre cualquier estructura iterable,
tomando todos los elementos uno por uno.
I Si uno querı́a que un for iterase n cantidad de veces, entonces uno
creaba una lista que iba desde 0 hasta n-1 mediante la función range.
I En C, uno no puede hacer esto, todos los for funcionan con una
variable definida de antemano, la cual se irá modificando en cada
iteración.
I Un for se compone de 3 partes: una inicialización, una condición, y
una actualización.
I En cada iteración el ciclo actualizará según lo que se le haya
especificado, y cuando la condición no se cumpla, terminará.
I Es como un while!

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 13 / 25


Estructuras de control

Ejemplo

int i;
for(i = 0; i < 15; i++){...

I Noten los paréntesis entre las instrucciones, al igual que con el if.
I La primera instrucción es la inicialización.
I La segunda es la condición, el ciclo terminará cuando i llegue a 15.
I La tercera es la actualización... un segundo, i++?
I i++ actualiza la variable i sumándole 1. i-- es el análogo que resta 1.
I Y si les dijese que existe un ++i, qué creerı́an que hace?
I Se pueden hacer cosas entretenidas con i++ y ++i, no nos meteremos
mucho en ese tema, pero búsquenlo si les interesa!

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 14 / 25


Estructuras de control

Comparación con Python

Python C

contador = 0 int contador = 0, i;


for i in range(10): for (i = 0; i < 10; i++){
contador += 1 contador += 1;
}

I En ambos casos i tomará los valores 0, 1, 2, ..., 8, 9.


I Noten que podrı́a haber usado perfectamente contador++ en vez de
contador += 1, pero es para demostrar que el operador existe
igualmente.
I Al final contador valdrá 10.

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 15 / 25


Estructuras de control

Python C

contador = 0 int contador = 0, i;


for i in range(5, 10): for (i = 5; i < 10; i++){
contador += 1 contador += 1;
}

I En ambos casos i tomará los valores 5, 6, 7, 8, 9.


I Al final contador valdrá 5.
I No hay demasiada diferencia con el caso anterior, vamos al siguiente
ejemplo.

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 16 / 25


Estructuras de control

Python C

contador = 0 int contador = 0, i;


for i in range(2, 30, 2): for (i = 2; i < 30; i += 2){
contador += 1 contador += 1;
}

I En ambos casos i tomará los valores 2, 4, 6, ..., 24, 26, 28.


I Al final contador valdrá 14.
I Y del mismo modo en que podemos hacerlo iterar de 2 en 2, podemos
contar...

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 17 / 25


Estructuras de control

I Hacia atrás.
Python C

contador = 0 int contador = 0, i;


for i in range(40, 0, -1): for (i = 40; i > 0; i--){
contador += 1 contador += 1;
}

I En ambos casos i tomará los valores 40, 39, 38, ..., 2, 1.


I Al final contador valdrá 40.
I Pueden poner cualquier cosa que se les ocurra en tanto sigan siendo
condiciones y actualizaciones!
I C es muy flexible, tanto que a veces llega a frustrar que no considere
alguna estupidez como un error.

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 18 / 25


Entrada y salida

Importación de módulos adicionales

I Para poder utilizar las funciones de entrada y salida, necesitamos usar


la librerı́a de entrada y salida estándar (stdio.h).
I Ya aprendimos a importarla, pero generalicemos el asunto para
cualquier librerı́a.
I La versión ”vainilla” de C soporta muchas menos cosas que las que
Python trae por defecto.
I Esto se puede ver de inmediato al notar que necesitamos una librerı́a
para leer desde e imprimir hacia la consola.
I La ventaja? Hay mucho menos código que compilar para un
programa sencillo.

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 19 / 25


Entrada y salida

Comparación con Python


I Python posee varias formas de importar funciones adicionales de otros
módulos.
I C posee sólo una: la directiva include.

Python C

import re #include <stdio.h>


from math import pi #include <math.h>
from urllib2 import * #include <stdlib.h>

#código código código //código dentro del main

re.compile(pattern) scanf("%s", entrada);


area = pi * (radio ** 2) int valor = atoi(entrada);
response = urlopen(url) int b = sinh(valor);

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 20 / 25


Entrada y salida

Funciones de entrada y salida

I Existen varias, pueden encontrar listas muy detalladas con lo que


reciben y lo que hacen.
I Por el momento nos concentraremos en scanf (scan formatted) y
printf (print formatted).
I Son los análogos de input y print, para leer desde y escribir hacia la
consola.
I Pero las sintaxis son completamente distintas.
I En ambos casos se debe usar un string con el formato de lo que se
desee leer o escribir, usando % para definir donde haya variables y una
letra para definir de qué tipo son.
I Y printf no inserta saltos de lı́nea por su cuenta, deben hacerlo
ustedes.

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 21 / 25


Entrada y salida

Ejemplo y comparación con Python

I Python:

numero = int(raw_input("Ingrese un numero: "))


letra = raw_input("Ingrese una letra: ")
print "El numero ingresado fue", numero
print "La letra ingresada fue", letra

I Consola:

Ingrese un numero: 4
Ingrese una letra: f
El numero ingresado fue 4
La letra ingresada fue f

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 22 / 25


Entrada y salida

I C:

#include <stdio.h>

int main(){
int numero;
char letra;
printf("Ingrese un numero y una letra: ");
scanf("%d %c", &numero, &letra);
printf("\nEl numero fue %d y la letra fue %c",
numero, letra);
return 0;
}

I Consola:

Ingrese un numero y una letra: 4 f


El numero fue 4 y la letra fue f
IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 23 / 25
Entrada y salida

I Cada tipo tiene su propio caracter especial para que las funciones lo
reconozcan.
I Los enteros se marcan con d.
I Los caracteres se marcan con c.
I Los strings se marcan con s, los reales con f...
I Otra cosa a la que deben estar atentos es que al usar scanf deben
usar un & para las variables.
I Tiene que ver con memoria... En las últimas ayudantı́as lo entenderán
completamente.

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 24 / 25


Entrada y salida

Variables, Estructuras de Control, y Operaciones de


Entrada/Salida

Introducción a la Ingenierı́a

Ayudantes: Francisco Olivares, Camilo Pérez, Ignacio Tampe

Departamento de Informática, UTFSM

francisco.olivars.14@sansano.usm.cl
camilo.perez@alumnos.inf.utfsm.cl
ignacio.tampe@sansano.usm.cl

IWG-101 (FO/CP/IT) Variables, control e I/O (29-31/08,02/09)/2016 25 / 25

También podría gustarte