programaci´on · arreglos y punteros librer´ıas esta´ndares ma´s alla´ de lo ba´sico...

376
Computadoras y programaci´ on Variables y tipos de datos Operaciones Estructuras de control Arreglos y punteros Librer´ ıas est´ andares as all´ a de lo b´ asico Programaci´on Dra. Elisa Schaeffer [email protected] Facultad de Ingenier´ ıa Mec´ anica y El´ ectrica (FIME) Universidad Aut´ onoma de Nuevo Le´ on (UANL) Verano 2008 Dra. Elisa Schaeffer FIME, UANL

Upload: others

Post on 26-May-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Programacion

Dra. Elisa [email protected]

Facultad de Ingenierıa Mecanica y Electrica (FIME)Universidad Autonoma de Nuevo Leon (UANL)

Verano 2008

Dra. Elisa Schaeffer FIME, UANL

Page 2: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Computadoras y programacion

Variables y tipos de datos

Informacion digital

Operaciones

Estructuras de control

Arreglos y punteros

Librerıas estandares

Entrada y salida

Archivos

Numeros pseudoaleatorios

Mas alla de lo basico

Subrutinas

Tipos propios

Dra. Elisa Schaeffer FIME, UANL

Page 3: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Componentes de una computadora

Dra. Elisa Schaeffer FIME, UANL

Page 4: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Modelos de computacion

Un modelo ideal de computacion es lo de maquinas de accesoaleatorio (ingles: random access machines, Ram).

Un Ram es capaz de manejar numeros enteros de tamanoarbitrario. La estructura de datos de un Ram es un arreglo deregistros R0,R1,R2, . . ., cada uno con capacidad de un enterocualquiera, posiblemente negativo.

Dra. Elisa Schaeffer FIME, UANL

Page 5: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Programa Ram

Un programa Ram es una sucesion finita de instrucciones de tipoassembler, Π = (π1, π2, . . . , πm).

La entrada al programa esta guardada en un arreglo finito deregistros de entrada I1, I2, . . . , In.

El primer registro r0 sirve como una acumuladora.

Dra. Elisa Schaeffer FIME, UANL

Page 6: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Programa Ram

Un programa Ram es una sucesion finita de instrucciones de tipoassembler, Π = (π1, π2, . . . , πm).

La entrada al programa esta guardada en un arreglo finito deregistros de entrada I1, I2, . . . , In.

El primer registro r0 sirve como una acumuladora.

Dra. Elisa Schaeffer FIME, UANL

Page 7: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Programa Ram

Un programa Ram es una sucesion finita de instrucciones de tipoassembler, Π = (π1, π2, . . . , πm).

La entrada al programa esta guardada en un arreglo finito deregistros de entrada I1, I2, . . . , In.

El primer registro r0 sirve como una acumuladora.

Dra. Elisa Schaeffer FIME, UANL

Page 8: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Notacion

◮ j es un numero entero

◮ rj es el contenido actual del registro Rj

◮ ij es el contenido del registro de entrada Ij

◮ x puede ser reemplazado por cualquier de los tres operadoresj , ↑ j o = j

◮ x ′ es el resultado de tal reemplazo

◮ κ es el contador del programa que determina cual instruccionde Π se esta ejecutando

Dra. Elisa Schaeffer FIME, UANL

Page 9: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Instruccion Operando Semantica

READ j r0 := ijREAD ↑ j r0 := irjSTORE j rj := r0STORE ↑ j rrj := r0LOAD x r0 := x ′

ADD x r0 := r0 + x ′

SUB x r0 := r0 − x ′

HALF r0 := ⌊ r02 ⌋

JUMP j κ := j

JPOS j si r0 > 0, κ := j

JZERO j si r0 = 0, κ := j

JNEG j si r0 < 0, κ := j

HALT κ := 0

Dra. Elisa Schaeffer FIME, UANL

Page 10: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Instruccion Operando Semantica

READ j r0 := ijREAD ↑ j r0 := irjSTORE j rj := r0STORE ↑ j rrj := r0LOAD x r0 := x ′

ADD x r0 := r0 + x ′

SUB x r0 := r0 − x ′

HALF r0 := ⌊ r02 ⌋

JUMP j κ := j

JPOS j si r0 > 0, κ := j

JZERO j si r0 = 0, κ := j

JNEG j si r0 < 0, κ := j

HALT κ := 0

Dra. Elisa Schaeffer FIME, UANL

Page 11: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Instruccion Operando Semantica

READ j r0 := ijREAD ↑ j r0 := irjSTORE j rj := r0STORE ↑ j rrj := r0LOAD x r0 := x ′

ADD x r0 := r0 + x ′

SUB x r0 := r0 − x ′

HALF r0 := ⌊ r02 ⌋

JUMP j κ := j

JPOS j si r0 > 0, κ := j

JZERO j si r0 = 0, κ := j

JNEG j si r0 < 0, κ := j

HALT κ := 0

Dra. Elisa Schaeffer FIME, UANL

Page 12: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Instruccion Operando Semantica

READ j r0 := ijREAD ↑ j r0 := irjSTORE j rj := r0STORE ↑ j rrj := r0LOAD x r0 := x ′

ADD x r0 := r0 + x ′

SUB x r0 := r0 − x ′

HALF r0 := ⌊ r02 ⌋

JUMP j κ := j

JPOS j si r0 > 0, κ := j

JZERO j si r0 = 0, κ := j

JNEG j si r0 < 0, κ := j

HALT κ := 0

Dra. Elisa Schaeffer FIME, UANL

Page 13: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Instruccion Operando Semantica

READ j r0 := ijREAD ↑ j r0 := irjSTORE j rj := r0STORE ↑ j rrj := r0LOAD x r0 := x ′

ADD x r0 := r0 + x ′

SUB x r0 := r0 − x ′

HALF r0 := ⌊ r02 ⌋

JUMP j κ := j

JPOS j si r0 > 0, κ := j

JZERO j si r0 = 0, κ := j

JNEG j si r0 < 0, κ := j

HALT κ := 0

Dra. Elisa Schaeffer FIME, UANL

Page 14: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Instruccion Operando Semantica

READ j r0 := ijREAD ↑ j r0 := irjSTORE j rj := r0STORE ↑ j rrj := r0LOAD x r0 := x ′

ADD x r0 := r0 + x ′

SUB x r0 := r0 − x ′

HALF r0 := ⌊ r02 ⌋

JUMP j κ := j

JPOS j si r0 > 0, κ := j

JZERO j si r0 = 0, κ := j

JNEG j si r0 < 0, κ := j

HALT κ := 0

Dra. Elisa Schaeffer FIME, UANL

Page 15: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Configuracion de una Ram

Una configuracion es un par C = (κ,R)

◮ κ es el contador del programa que determina cual instruccionde Π se esta ejecutando

◮ R = {(j1, rj1), (j2, rj2), . . . , (jk , rjk )} es un conjunto finito depares registro-valor

Dra. Elisa Schaeffer FIME, UANL

Page 16: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Pasos de computacion

La configuracion inicial es (1, ∅). Se define una relacion de un paso

(κ,R) → Π, I (κ′,R′) (1)

entre las configuraciones para un programa Ram Π y una entradaI de n instrucciones.

◮ κ′ es el valor nuevo de κ despues de haber ejecutado la instruccionen posicion κ (ojo: no necesariamente κ′ = κ + 1)

◮ R′ es una version posiblemente modificada de R donde algun par(j , x) puede haber sido removido y algun par (j ′, x ′) anadido segunla instruccion en posicion κ del programa Π.

Dra. Elisa Schaeffer FIME, UANL

Page 17: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Computacion

Si D es una sucesion finita de enteros, se dice que una maquina deacceso aleatorio compute una funcion φ : D → Z si y solo si paratoda I ∈ D aplica que

(1, ∅) → Π, I ∗(0,R) (2)

ası que (0, φ(I )) ∈ R.

Dra. Elisa Schaeffer FIME, UANL

Page 18: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Una Ram que computa la funcion φ(x , y) = |x − y |

La entrada es I = (6, 10); el resultado es φ(I ) = 4.

Programa ConfiguracionREAD 2 (1, ∅)STORE 2 (2, {(0, 10)})READ 1 (3, {(0, 10), (2, 10)})STORE 1 (4, {(0, 6), (2, 10)})SUB 2 (5, {(0, 6), (2, 10), (1, 6)})JNEG 8 (6, {(0,−4), (2, 10), (1, 6)})HALT (8, {(0,−4), (2, 10), (1, 6)})LOAD 2 (9, {(0, 10), (2, 10), (1, 6)})SUB 1 (10, {(0, 4), (2, 10), (1, 6)})HALT (0, {(0, 4), (2, 10), (1, 6)})

Dra. Elisa Schaeffer FIME, UANL

Page 19: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Tiempo de ejecucion

La ejecucion de cada instruccion cuenta como un paso decomputacion.

La abstraccion normalmente considera la sumacion de enterosgrandes como es algo que no se puede hacer rapidamente.

Tambien hay que tomar en cuenta que multiplicacion noesta incluida como instruccion y que se implementa por sumacionrepetida.

Dra. Elisa Schaeffer FIME, UANL

Page 20: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Tiempo de ejecucion

La ejecucion de cada instruccion cuenta como un paso decomputacion.

La abstraccion normalmente considera la sumacion de enterosgrandes como es algo que no se puede hacer rapidamente.

Tambien hay que tomar en cuenta que multiplicacion noesta incluida como instruccion y que se implementa por sumacionrepetida.

Dra. Elisa Schaeffer FIME, UANL

Page 21: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Tiempo de ejecucion

La ejecucion de cada instruccion cuenta como un paso decomputacion.

La abstraccion normalmente considera la sumacion de enterosgrandes como es algo que no se puede hacer rapidamente.

Tambien hay que tomar en cuenta que multiplicacion noesta incluida como instruccion y que se implementa por sumacionrepetida.

Dra. Elisa Schaeffer FIME, UANL

Page 22: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Tamano de entrada

El tamano de la entrada se considera en logaritmos.

Sea bi una representacion binaria del valor absoluto un entero i sinceros no significativos al comienzo.

Para valores negativos, pensamos que hay un bit “gratuito” para elsigno.

El largo del entero en el contexto Ram es el numero de bits en bi .

El largo de la entrada entera L(I ) es la suma de los largos de losenteros en estos terminos.

Dra. Elisa Schaeffer FIME, UANL

Page 23: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Tamano de entrada

El tamano de la entrada se considera en logaritmos.

Sea bi una representacion binaria del valor absoluto un entero i sinceros no significativos al comienzo.

Para valores negativos, pensamos que hay un bit “gratuito” para elsigno.

El largo del entero en el contexto Ram es el numero de bits en bi .

El largo de la entrada entera L(I ) es la suma de los largos de losenteros en estos terminos.

Dra. Elisa Schaeffer FIME, UANL

Page 24: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Tamano de entrada

El tamano de la entrada se considera en logaritmos.

Sea bi una representacion binaria del valor absoluto un entero i sinceros no significativos al comienzo.

Para valores negativos, pensamos que hay un bit “gratuito” para elsigno.

El largo del entero en el contexto Ram es el numero de bits en bi .

El largo de la entrada entera L(I ) es la suma de los largos de losenteros en estos terminos.

Dra. Elisa Schaeffer FIME, UANL

Page 25: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Tamano de entrada

El tamano de la entrada se considera en logaritmos.

Sea bi una representacion binaria del valor absoluto un entero i sinceros no significativos al comienzo.

Para valores negativos, pensamos que hay un bit “gratuito” para elsigno.

El largo del entero en el contexto Ram es el numero de bits en bi .

El largo de la entrada entera L(I ) es la suma de los largos de losenteros en estos terminos.

Dra. Elisa Schaeffer FIME, UANL

Page 26: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Tamano de entrada

El tamano de la entrada se considera en logaritmos.

Sea bi una representacion binaria del valor absoluto un entero i sinceros no significativos al comienzo.

Para valores negativos, pensamos que hay un bit “gratuito” para elsigno.

El largo del entero en el contexto Ram es el numero de bits en bi .

El largo de la entrada entera L(I ) es la suma de los largos de losenteros en estos terminos.

Dra. Elisa Schaeffer FIME, UANL

Page 27: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Programa eficiente

Se dice que un programa Ram Π computa una funcion φ : D → Z

en tiempo f (n) donde f : N+ → N

+ si y solo si para toda I ∈ D

aplica que(1, ∅) → Π, I k(0,R) (3)

ası que k ≤ f (L(I )).

El programa es eficiente si f (n) es un polinomio.

Dra. Elisa Schaeffer FIME, UANL

Page 28: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Programa eficiente

Se dice que un programa Ram Π computa una funcion φ : D → Z

en tiempo f (n) donde f : N+ → N

+ si y solo si para toda I ∈ D

aplica que(1, ∅) → Π, I k(0,R) (3)

ası que k ≤ f (L(I )).

El programa es eficiente si f (n) es un polinomio.

Dra. Elisa Schaeffer FIME, UANL

Page 29: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Programa — terminos generales

Un programa de computadora es una sucesion de operacionalescomputacionales.

El lenguaje de la computadora en el nivel de ejecutar un programase llama lenguaje de maquina y es un conjunto de operaciones muysimples que operan en los contenidos de registros de memoria.

Dra. Elisa Schaeffer FIME, UANL

Page 30: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Programa — terminos generales

Un programa de computadora es una sucesion de operacionalescomputacionales.

El lenguaje de la computadora en el nivel de ejecutar un programase llama lenguaje de maquina y es un conjunto de operaciones muysimples que operan en los contenidos de registros de memoria.

Dra. Elisa Schaeffer FIME, UANL

Page 31: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Programa — terminos generales

Un programa de computadora es una sucesion de operacionalescomputacionales.

El lenguaje de la computadora en el nivel de ejecutar un programase llama lenguaje de maquina y es un conjunto de operaciones muysimples que operan en los contenidos de registros de memoria.

Dra. Elisa Schaeffer FIME, UANL

Page 32: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Programacion

Para facilitar el proceso de construir programas, se ha desarrolladonumerosos lenguajes de programacion de alto nivel para podercomunicar la sucesion deseada de operaciones a la computadora enun nivel mas manejable para los seres humanos.

Un programa escrito en un lenguaje de programacion necesita sercompilado antes de su ejecucion o alternativamente interpretado alejecutar.

El compilador y el interprete son programas (comunmente algocomplejos) que se distribuye como herramientas a losprogramadores.

Dra. Elisa Schaeffer FIME, UANL

Page 33: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Programacion

Para facilitar el proceso de construir programas, se ha desarrolladonumerosos lenguajes de programacion de alto nivel para podercomunicar la sucesion deseada de operaciones a la computadora enun nivel mas manejable para los seres humanos.

Un programa escrito en un lenguaje de programacion necesita sercompilado antes de su ejecucion o alternativamente interpretado alejecutar.

El compilador y el interprete son programas (comunmente algocomplejos) que se distribuye como herramientas a losprogramadores.

Dra. Elisa Schaeffer FIME, UANL

Page 34: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Programacion

Para facilitar el proceso de construir programas, se ha desarrolladonumerosos lenguajes de programacion de alto nivel para podercomunicar la sucesion deseada de operaciones a la computadora enun nivel mas manejable para los seres humanos.

Un programa escrito en un lenguaje de programacion necesita sercompilado antes de su ejecucion o alternativamente interpretado alejecutar.

El compilador y el interprete son programas (comunmente algocomplejos) que se distribuye como herramientas a losprogramadores.

Dra. Elisa Schaeffer FIME, UANL

Page 35: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Programacion

Para facilitar el proceso de construir programas, se ha desarrolladonumerosos lenguajes de programacion de alto nivel para podercomunicar la sucesion deseada de operaciones a la computadora enun nivel mas manejable para los seres humanos.

Un programa escrito en un lenguaje de programacion necesita sercompilado antes de su ejecucion o alternativamente interpretado alejecutar.

El compilador y el interprete son programas (comunmente algocomplejos) que se distribuye como herramientas a losprogramadores.

Dra. Elisa Schaeffer FIME, UANL

Page 36: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Sintaxis y semantica

Los lenguajes de programacion se parecen a idiomas naturales,pero su gramatica, o sea la sintaxis, es muy estricta, el vocabularioes limitado y el significado, o sea la semantica de las expresiones esmuy especıfica.

Dra. Elisa Schaeffer FIME, UANL

Page 37: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Sintaxis y semantica

Los lenguajes de programacion se parecen a idiomas naturales,pero su gramatica, o sea la sintaxis, es muy estricta, el vocabularioes limitado y el significado, o sea la semantica de las expresiones esmuy especıfica.

Dra. Elisa Schaeffer FIME, UANL

Page 38: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Paradigmas de programacion

◮ Imperativa de procedimientos: Fortran, Cobol, C, ...

◮ Orientada a objetos: Ada, Smalltalk, C++, Java

◮ Funcional: LISP, Scheme, Common LISP, ML

◮ Logica: PROLOG

Dra. Elisa Schaeffer FIME, UANL

Page 39: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Paradigmas de programacion

◮ Imperativa de procedimientos: Fortran, Cobol, C, ...

◮ Orientada a objetos: Ada, Smalltalk, C++, Java

◮ Funcional: LISP, Scheme, Common LISP, ML

◮ Logica: PROLOG

Dra. Elisa Schaeffer FIME, UANL

Page 40: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Paradigmas de programacion

◮ Imperativa de procedimientos: Fortran, Cobol, C, ...

◮ Orientada a objetos: Ada, Smalltalk, C++, Java

◮ Funcional: LISP, Scheme, Common LISP, ML

◮ Logica: PROLOG

Dra. Elisa Schaeffer FIME, UANL

Page 41: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Paradigmas de programacion

◮ Imperativa de procedimientos: Fortran, Cobol, C, ...

◮ Orientada a objetos: Ada, Smalltalk, C++, Java

◮ Funcional: LISP, Scheme, Common LISP, ML

◮ Logica: PROLOG

Dra. Elisa Schaeffer FIME, UANL

Page 42: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Paradigmas de programacion

◮ Imperativa de procedimientos: Fortran, Cobol, C, ...

◮ Orientada a objetos: Ada, Smalltalk, C++, Java

◮ Funcional: LISP, Scheme, Common LISP, ML

◮ Logica: PROLOG

Dra. Elisa Schaeffer FIME, UANL

Page 43: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Paradigmas de programacion

◮ Imperativa de procedimientos: Fortran, Cobol, C, ...

◮ Orientada a objetos: Ada, Smalltalk, C++, Java

◮ Funcional: LISP, Scheme, Common LISP, ML

◮ Logica: PROLOG

Dra. Elisa Schaeffer FIME, UANL

Page 44: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Paradigmas de programacion

◮ Imperativa de procedimientos: Fortran, Cobol, C, ...

◮ Orientada a objetos: Ada, Smalltalk, C++, Java

◮ Funcional: LISP, Scheme, Common LISP, ML

◮ Logica: PROLOG

Dra. Elisa Schaeffer FIME, UANL

Page 45: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Paradigmas de programacion

◮ Imperativa de procedimientos: Fortran, Cobol, C, ...

◮ Orientada a objetos: Ada, Smalltalk, C++, Java

◮ Funcional: LISP, Scheme, Common LISP, ML

◮ Logica: PROLOG

Dra. Elisa Schaeffer FIME, UANL

Page 46: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Vocabulario de ANSI-C

auto double int struct

break else long switch

case enum register typedef

char extern return union

const float short unsigned

continue for signed void

default goto sizeof volatile

do if static while

Las mayusculas y las minusculas son letras distintas en C.

Dra. Elisa Schaeffer FIME, UANL

Page 47: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Vocabulario de ANSI-C

auto double int struct

break else long switch

case enum register typedef

char extern return union

const float short unsigned

continue for signed void

default goto sizeof volatile

do if static while

Las mayusculas y las minusculas son letras distintas en C.

Dra. Elisa Schaeffer FIME, UANL

Page 48: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

¿Programar?

◮ definir

◮ planificar

◮ disenar

◮ implementar

◮ experimentar

◮ validar

◮ documentar

◮ mantener

Dra. Elisa Schaeffer FIME, UANL

Page 49: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

¿Programar?

◮ definir

◮ planificar

◮ disenar

◮ implementar

◮ experimentar

◮ validar

◮ documentar

◮ mantener

Dra. Elisa Schaeffer FIME, UANL

Page 50: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

¿Programar?

◮ definir

◮ planificar

◮ disenar

◮ implementar

◮ experimentar

◮ validar

◮ documentar

◮ mantener

Dra. Elisa Schaeffer FIME, UANL

Page 51: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

¿Programar?

◮ definir

◮ planificar

◮ disenar

◮ implementar

◮ experimentar

◮ validar

◮ documentar

◮ mantener

Dra. Elisa Schaeffer FIME, UANL

Page 52: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

¿Programar?

◮ definir

◮ planificar

◮ disenar

◮ implementar

◮ experimentar

◮ validar

◮ documentar

◮ mantener

Dra. Elisa Schaeffer FIME, UANL

Page 53: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

¿Programar?

◮ definir

◮ planificar

◮ disenar

◮ implementar

◮ experimentar

◮ validar

◮ documentar

◮ mantener

Dra. Elisa Schaeffer FIME, UANL

Page 54: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

¿Programar?

◮ definir

◮ planificar

◮ disenar

◮ implementar

◮ experimentar

◮ validar

◮ documentar

◮ mantener

Dra. Elisa Schaeffer FIME, UANL

Page 55: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

¿Programar?

◮ definir

◮ planificar

◮ disenar

◮ implementar

◮ experimentar

◮ validar

◮ documentar

◮ mantener

Dra. Elisa Schaeffer FIME, UANL

Page 56: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Algoritmos y estructuras de datos

Algoritmo = un metodo de solucion sistematica que da unresultado para un problema especıfico dada una instancia delproblema.

Estructura de datos = una manera de manejar los datos tal que segarantiza operaciones de acceso o modificacion sistematica de losdatos contenidos.

Dra. Elisa Schaeffer FIME, UANL

Page 57: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Algoritmos y estructuras de datos

Algoritmo = un metodo de solucion sistematica que da unresultado para un problema especıfico dada una instancia delproblema.

Estructura de datos = una manera de manejar los datos tal que segarantiza operaciones de acceso o modificacion sistematica de losdatos contenidos.

Dra. Elisa Schaeffer FIME, UANL

Page 58: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Algoritmos y estructuras de datos

Algoritmo = un metodo de solucion sistematica que da unresultado para un problema especıfico dada una instancia delproblema.

Estructura de datos = una manera de manejar los datos tal que segarantiza operaciones de acceso o modificacion sistematica de losdatos contenidos.

Dra. Elisa Schaeffer FIME, UANL

Page 59: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

¿Buen algoritmo?

◮ rapido

◮ resultado correcto

◮ uso bajo de memoria

◮ la ejecucion xtermina

Dra. Elisa Schaeffer FIME, UANL

Page 60: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

¿Buen algoritmo?

◮ rapido

◮ resultado correcto

◮ uso bajo de memoria

◮ la ejecucion xtermina

Dra. Elisa Schaeffer FIME, UANL

Page 61: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

¿Buen algoritmo?

◮ rapido

◮ resultado correcto

◮ uso bajo de memoria

◮ la ejecucion xtermina

Dra. Elisa Schaeffer FIME, UANL

Page 62: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

¿Buen algoritmo?

◮ rapido

◮ resultado correcto

◮ uso bajo de memoria

◮ la ejecucion xtermina

Dra. Elisa Schaeffer FIME, UANL

Page 63: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

int main(int c, char ∗ ∗ a)

El metodo main es el punto de entrada al programa desde la lıneade instrucciones del sistema operativo.

main toma dos parametros: el numero de parametros de lınea deinstrucciones y un arreglo (en forma de puntero) de cadenas desımbolos que contienen aquellos parametros.

El primer parametro (a[0]) en C siempre es el nombre delejecutable mismo.

Dra. Elisa Schaeffer FIME, UANL

Page 64: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

int main(int c, char ∗ ∗ a)

El metodo main es el punto de entrada al programa desde la lıneade instrucciones del sistema operativo.

main toma dos parametros: el numero de parametros de lınea deinstrucciones y un arreglo (en forma de puntero) de cadenas desımbolos que contienen aquellos parametros.

El primer parametro (a[0]) en C siempre es el nombre delejecutable mismo.

Dra. Elisa Schaeffer FIME, UANL

Page 65: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

int main(int c, char ∗ ∗ a)

El metodo main es el punto de entrada al programa desde la lıneade instrucciones del sistema operativo.

main toma dos parametros: el numero de parametros de lınea deinstrucciones y un arreglo (en forma de puntero) de cadenas desımbolos que contienen aquellos parametros.

El primer parametro (a[0]) en C siempre es el nombre delejecutable mismo.

Dra. Elisa Schaeffer FIME, UANL

Page 66: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

int main(int c, char ∗ ∗ a)

El metodo main es el punto de entrada al programa desde la lıneade instrucciones del sistema operativo.

main toma dos parametros: el numero de parametros de lınea deinstrucciones y un arreglo (en forma de puntero) de cadenas desımbolos que contienen aquellos parametros.

El primer parametro (a[0]) en C siempre es el nombre delejecutable mismo.

Dra. Elisa Schaeffer FIME, UANL

Page 67: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Herramientas

Para escribir el codigo, en este curso utilizamos todos el editor

Emacs. Se abre en el terminal con la instruccion emacs odirectamente a un archivo con emacs prog.c.

Compilamos en la lınea de instrucciones (no a traves de Emacs,aunque se podrıa) usando el compilador de C de Gnu, gcc.

A gcc pasamos como argumentos los nombres de los archivos decodigo que queremos compilar.

Dra. Elisa Schaeffer FIME, UANL

Page 68: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Herramientas

Para escribir el codigo, en este curso utilizamos todos el editor

Emacs. Se abre en el terminal con la instruccion emacs odirectamente a un archivo con emacs prog.c.

Compilamos en la lınea de instrucciones (no a traves de Emacs,aunque se podrıa) usando el compilador de C de Gnu, gcc.

A gcc pasamos como argumentos los nombres de los archivos decodigo que queremos compilar.

Dra. Elisa Schaeffer FIME, UANL

Page 69: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Herramientas

Para escribir el codigo, en este curso utilizamos todos el editor

Emacs. Se abre en el terminal con la instruccion emacs odirectamente a un archivo con emacs prog.c.

Compilamos en la lınea de instrucciones (no a traves de Emacs,aunque se podrıa) usando el compilador de C de Gnu, gcc.

A gcc pasamos como argumentos los nombres de los archivos decodigo que queremos compilar.

Dra. Elisa Schaeffer FIME, UANL

Page 70: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Variable

Una variable es efectivamente un espacio en la memoria de lacomputadora al cual se puede asignar un valor.

La asignacion puede tomar el valor de un constante o el valor deotra variable.

Dra. Elisa Schaeffer FIME, UANL

Page 71: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Variable

Una variable es efectivamente un espacio en la memoria de lacomputadora al cual se puede asignar un valor.

La asignacion puede tomar el valor de un constante o el valor deotra variable.

Dra. Elisa Schaeffer FIME, UANL

Page 72: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Asignacion

En pseudocodigo, tıpicamente se denota por :=.

a := 0,34

Las asignaciones se realiza de la derecha hacia la izquierda y laasignacion en sı se evalua al valor asignado.

a := b := c

Dra. Elisa Schaeffer FIME, UANL

Page 73: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Asignacion

En pseudocodigo, tıpicamente se denota por :=.

a := 0,34

Las asignaciones se realiza de la derecha hacia la izquierda y laasignacion en sı se evalua al valor asignado.

a := b := c

Dra. Elisa Schaeffer FIME, UANL

Page 74: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Asignacion

En pseudocodigo, tıpicamente se denota por :=.

a := 0,34

Las asignaciones se realiza de la derecha hacia la izquierda y laasignacion en sı se evalua al valor asignado.

a := b := c

Dra. Elisa Schaeffer FIME, UANL

Page 75: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Tipos de datos

Los contenidos posibles de una variable dependen de la cantidad deespacio que tiene reservado en la memoria.

Este espacio tıpicamente se determina por definir el tipo de datode la variable.

Dra. Elisa Schaeffer FIME, UANL

Page 76: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Tipos de datos

Los contenidos posibles de una variable dependen de la cantidad deespacio que tiene reservado en la memoria.

Este espacio tıpicamente se determina por definir el tipo de datode la variable.

Dra. Elisa Schaeffer FIME, UANL

Page 77: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Bit

El bit es la unidad basica de informacion digital. Un bit es unavariable binaria: tiene dos valores posibles que se interpreta comolos valores logicos “verdad” (1) y “falso” (0).

En la memoria de una computadora, se expresa los numerosenteros con sumas de potencias de dos, empezando con la potenciamas grande que quepa en el numero e iterando hasta llegar a lasuma correcta.

Dra. Elisa Schaeffer FIME, UANL

Page 78: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Potencias de dos

0

20

40

60

80

100

120

140

0 1 2 3 4 5 6 7 1

100

10000

1e+06

1e+08

1e+10

1e+12

1e+14

1e+16

1e+18

1e+20

0 10 20 30 40 50 60

Figura: Graficas de las potencias de dos: a la izquierda, con ejes linealeshasta x = 7, y a la derecha, con ejes de escala logarıtmica hasta x = 64.

Dra. Elisa Schaeffer FIME, UANL

Page 79: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Representacion binaria

Representamos la presencia de una cierta potencia con un bit devalor 1 y su ausencia por un bit de valor 0, empezando con lapotencia mas grande presente:

61 = 32 + 29 = 32 + 16 + 13 = 32 + 16 + 8 + 5= 32 + 16 + 8 + 4 + 1= 25 + 24 + 23 + 22 + 20⇒ 111101.

Entonces se necesita seis bits para representar el valor 61.

Dra. Elisa Schaeffer FIME, UANL

Page 80: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Representacion binaria

Representamos la presencia de una cierta potencia con un bit devalor 1 y su ausencia por un bit de valor 0, empezando con lapotencia mas grande presente:

61 = 32 + 29 = 32 + 16 + 13 = 32 + 16 + 8 + 5= 32 + 16 + 8 + 4 + 1= 25 + 24 + 23 + 22 + 20⇒ 111101.

Entonces se necesita seis bits para representar el valor 61.

Dra. Elisa Schaeffer FIME, UANL

Page 81: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Cantidad de bits necesaria

Por lo general, la cantidad b de bits requeridos para representar unvalor x ∈ Z

+ esta el exponente de la mınima potencia de dosmayor a x ,

b = mınk∈Z

{

k | 2k > x}

. (4)

Para incluir los enteros negativos, se usa un bit auxiliar de signo.

Dra. Elisa Schaeffer FIME, UANL

Page 82: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Cantidad de bits necesaria

Por lo general, la cantidad b de bits requeridos para representar unvalor x ∈ Z

+ esta el exponente de la mınima potencia de dosmayor a x ,

b = mınk∈Z

{

k | 2k > x}

. (4)

Para incluir los enteros negativos, se usa un bit auxiliar de signo.

Dra. Elisa Schaeffer FIME, UANL

Page 83: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

21 = 2 220 = 1048 576 240 = 1099 511 627 77622 = 4 221 = 2097 152 241 = 2199 023 255 55223 = 8 222 = 4194 304 242 = 4398 046 511 10424 = 16 223 = 8388 608 243 = 8796 093 022 20825 = 32 224 = 16 777 216 244 = 17 592 186 044 41626 = 64 225 = 33 554 432 245 = 35 184 372 088 83227 = 128 226 = 67 108 864 246 = 70 368 744 177 66428 = 256 227 = 134 217 728 247 = 140 737 488 355 32829 = 512 228 = 268 435 456 248 = 281 474 976 710 656210 = 1024 229 = 536 870 912 249 = 562 949 953 421 312211 = 2048 230 = 1073 741 824 250 = 1125 899 906 842 624212 = 4096 231 = 2147 483 648 251 = 2251 799 813 685 248213 = 8192 232 = 4294 967 296 252 = 4503 599 627 370 496214 = 16 384 233 = 8589 934 592 253 = 9007 199 254 740 992215 = 32 768 234 = 17 179 869 184 254 = 18 014 398 509 481 984216 = 65 536 235 = 34 359 738 368 255 = 36 028 797 018 963 968217 = 131 072 236 = 68 719 476 736 256 = 72 057 594 037 927 936218 = 262 144 237 = 137 438 953 472 257 = 144 115 188 075 855 872219 = 524 288 238 = 274 877 906 944 258 = 288 230 376 151 711 744

239 = 549 755 813 888 259 = 576 460 752 303 423 488

Dra. Elisa Schaeffer FIME, UANL

Page 84: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Byte

El byte es la unidad basica de capacidad de memoria digital. Unbyte (se pronuncia “bait”) es una sucesion de ocho bits. El numeroentero mas grande que se puede guardar en un solo byte es

27 + 26 + 25 + 24 + 23 + 22 + 21 + 20 = 28 − 1 = 255

y entonces, contando cero, son 256 valores posibles por un byte.

Nota que aplica en general la igualdad

2k+1 − 1 =

k∑

i=0

2i . (5)

Dra. Elisa Schaeffer FIME, UANL

Page 85: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Byte

El byte es la unidad basica de capacidad de memoria digital. Unbyte (se pronuncia “bait”) es una sucesion de ocho bits. El numeroentero mas grande que se puede guardar en un solo byte es

27 + 26 + 25 + 24 + 23 + 22 + 21 + 20 = 28 − 1 = 255

y entonces, contando cero, son 256 valores posibles por un byte.

Nota que aplica en general la igualdad

2k+1 − 1 =

k∑

i=0

2i . (5)

Dra. Elisa Schaeffer FIME, UANL

Page 86: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Kilo, mega, giga, tera, peta...

Un kilobyte es 1,024 bytes, un megabyte es 1,024 kilobytes(1,048,576 bytes) y un gigabyte es 1,024 megabytes(1,073,741,824 bytes).

Normalmente el prefix kilo implica un mil, pero como mil no esningun potencia de dos, eligieron la potencia mas cercana, 210 =1,024, para corresponder a los prefixes.

Dra. Elisa Schaeffer FIME, UANL

Page 87: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Kilo, mega, giga, tera, peta...

Un kilobyte es 1,024 bytes, un megabyte es 1,024 kilobytes(1,048,576 bytes) y un gigabyte es 1,024 megabytes(1,073,741,824 bytes).

Normalmente el prefix kilo implica un mil, pero como mil no esningun potencia de dos, eligieron la potencia mas cercana, 210 =1,024, para corresponder a los prefixes.

Dra. Elisa Schaeffer FIME, UANL

Page 88: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Enteros: short, int y long

Depende de la maquina que rango tiene cada tipo.

Por definir una variable unsigned, uno ahorra el bit de signo yaumenta el rango maximo al doble de lo que era.

En ANSI-C, el archivo de las definiciones de los rangos de enteroses limits.h.

Dra. Elisa Schaeffer FIME, UANL

Page 89: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Enteros: short, int y long

Depende de la maquina que rango tiene cada tipo.

Por definir una variable unsigned, uno ahorra el bit de signo yaumenta el rango maximo al doble de lo que era.

En ANSI-C, el archivo de las definiciones de los rangos de enteroses limits.h.

Dra. Elisa Schaeffer FIME, UANL

Page 90: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Enteros: short, int y long

Depende de la maquina que rango tiene cada tipo.

Por definir una variable unsigned, uno ahorra el bit de signo yaumenta el rango maximo al doble de lo que era.

En ANSI-C, el archivo de las definiciones de los rangos de enteroses limits.h.

Dra. Elisa Schaeffer FIME, UANL

Page 91: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Rangos de enteros

Tipo Por defecto En el Solaris de PISIS

short [−32,768, 32,767] lo mismounsigned short: ≤ 65,535 lo mismoint [−32,767, 32,767] [−2,147,483,648, ...]unsigned int 65,535 ≤ 4294967295long [−2,147,483,647, ...] lo mismounsigned long ≤ 4,294,967,295 lo mismo

Dra. Elisa Schaeffer FIME, UANL

Page 92: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Variables binarias

Algunos lenguajes traen su propio tipo de datos para variablesbinarias (o booleanas). Tıpicamente este tipo se llama boolean obool.

En ANSI-C, cada entero positivo se puede interpretar como“verdad” o “falso”:

no cero = verdad (true en Java)cero = falso (false en Java)

Estos dos valores de llaman valores de verdad.

Dra. Elisa Schaeffer FIME, UANL

Page 93: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Variables binarias

Algunos lenguajes traen su propio tipo de datos para variablesbinarias (o booleanas). Tıpicamente este tipo se llama boolean obool.

En ANSI-C, cada entero positivo se puede interpretar como“verdad” o “falso”:

no cero = verdad (true en Java)cero = falso (false en Java)

Estos dos valores de llaman valores de verdad.

Dra. Elisa Schaeffer FIME, UANL

Page 94: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Variables binarias

Algunos lenguajes traen su propio tipo de datos para variablesbinarias (o booleanas). Tıpicamente este tipo se llama boolean obool.

En ANSI-C, cada entero positivo se puede interpretar como“verdad” o “falso”:

no cero = verdad (true en Java)cero = falso (false en Java)

Estos dos valores de llaman valores de verdad.

Dra. Elisa Schaeffer FIME, UANL

Page 95: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Variables binarias

Algunos lenguajes traen su propio tipo de datos para variablesbinarias (o booleanas). Tıpicamente este tipo se llama boolean obool.

En ANSI-C, cada entero positivo se puede interpretar como“verdad” o “falso”:

no cero = verdad (true en Java)cero = falso (false en Java)

Estos dos valores de llaman valores de verdad.

Dra. Elisa Schaeffer FIME, UANL

Page 96: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Variables binarias

Algunos lenguajes traen su propio tipo de datos para variablesbinarias (o booleanas). Tıpicamente este tipo se llama boolean obool.

En ANSI-C, cada entero positivo se puede interpretar como“verdad” o “falso”:

no cero = verdad (true en Java)cero = falso (false en Java)

Estos dos valores de llaman valores de verdad.

Dra. Elisa Schaeffer FIME, UANL

Page 97: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Punto flotante

Para representar numeros reales por computadora, hay que definirhasta que exactitud se guarda los decimales del numero, como elespacio para guardar un numero entero esta limitada a un tamanoconstante que depende unicamente en el tipo de dato elegido.

El metodo comun de lograr tal representacion es lo de punto

flotante (tambien conocido como coma flotante) donde larepresentacion se adapta al orden magnitud del valor x ∈ R.

Dra. Elisa Schaeffer FIME, UANL

Page 98: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Punto flotante

Para representar numeros reales por computadora, hay que definirhasta que exactitud se guarda los decimales del numero, como elespacio para guardar un numero entero esta limitada a un tamanoconstante que depende unicamente en el tipo de dato elegido.

El metodo comun de lograr tal representacion es lo de punto

flotante (tambien conocido como coma flotante) donde larepresentacion se adapta al orden magnitud del valor x ∈ R.

Dra. Elisa Schaeffer FIME, UANL

Page 99: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Traslado de la coma

La idea es trasladar la coma decimal hacia la posicion de la primeracifra significativa de x mediante un exponente γ:

x = m · bγ ,

m se llama la mantisa y contiene los dıgitos significativos de x .

Es comun normalizar la mantisa tal que su parte entera consta desolamente la primera cifra significativa de x . La mantisatıpicamente tiene un tamano maximo limitado a una ciertacantidad fija de bytes.

Dra. Elisa Schaeffer FIME, UANL

Page 100: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Traslado de la coma

La idea es trasladar la coma decimal hacia la posicion de la primeracifra significativa de x mediante un exponente γ:

x = m · bγ ,

m se llama la mantisa y contiene los dıgitos significativos de x .

Es comun normalizar la mantisa tal que su parte entera consta desolamente la primera cifra significativa de x . La mantisatıpicamente tiene un tamano maximo limitado a una ciertacantidad fija de bytes.

Dra. Elisa Schaeffer FIME, UANL

Page 101: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Traslado de la coma

La idea es trasladar la coma decimal hacia la posicion de la primeracifra significativa de x mediante un exponente γ:

x = m · bγ ,

m se llama la mantisa y contiene los dıgitos significativos de x .

Es comun normalizar la mantisa tal que su parte entera consta desolamente la primera cifra significativa de x . La mantisatıpicamente tiene un tamano maximo limitado a una ciertacantidad fija de bytes.

Dra. Elisa Schaeffer FIME, UANL

Page 102: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Traslado de la coma

La idea es trasladar la coma decimal hacia la posicion de la primeracifra significativa de x mediante un exponente γ:

x = m · bγ ,

m se llama la mantisa y contiene los dıgitos significativos de x .

Es comun normalizar la mantisa tal que su parte entera consta desolamente la primera cifra significativa de x . La mantisatıpicamente tiene un tamano maximo limitado a una ciertacantidad fija de bytes.

Dra. Elisa Schaeffer FIME, UANL

Page 103: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Exponente y base

Lo que determina el rango de valores posibles que se puederepresentar en punto flotante es la cantidad de memoria reservadapara el exponente γ ∈ Z.

El parametro b es la base del sistema de representacion. Losnumeros binarios tienen base b = 2 y comunmente en calculoutilizamos b = 10.

Tambien existen sistemas en base b = 8 (el sistema octal) yb = 16 (el sistema hexadecimal).

Dra. Elisa Schaeffer FIME, UANL

Page 104: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Exponente y base

Lo que determina el rango de valores posibles que se puederepresentar en punto flotante es la cantidad de memoria reservadapara el exponente γ ∈ Z.

El parametro b es la base del sistema de representacion. Losnumeros binarios tienen base b = 2 y comunmente en calculoutilizamos b = 10.

Tambien existen sistemas en base b = 8 (el sistema octal) yb = 16 (el sistema hexadecimal).

Dra. Elisa Schaeffer FIME, UANL

Page 105: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Exponente y base

Lo que determina el rango de valores posibles que se puederepresentar en punto flotante es la cantidad de memoria reservadapara el exponente γ ∈ Z.

El parametro b es la base del sistema de representacion. Losnumeros binarios tienen base b = 2 y comunmente en calculoutilizamos b = 10.

Tambien existen sistemas en base b = 8 (el sistema octal) yb = 16 (el sistema hexadecimal).

Dra. Elisa Schaeffer FIME, UANL

Page 106: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Punto fijo

La otra opcion serıa simplemente reservar una cierta cantidad debytespara la representacion y fijar a posicion en la cual se suponeque este la coma decimal.

La representacion de punto fijo es mucho mas restrictiva conrespeto al rango de valores posibles de guardar.

En comparacion, el metodo de punto flotante causa variaciones enla exactitud de la representacion, mientras permite guardar valoresde un rango mucho mas amplio.

En ANSI-C, el archivo con los datos que refinen los rangos estanen el archivo float.h.

Dra. Elisa Schaeffer FIME, UANL

Page 107: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Punto fijo

La otra opcion serıa simplemente reservar una cierta cantidad debytespara la representacion y fijar a posicion en la cual se suponeque este la coma decimal.

La representacion de punto fijo es mucho mas restrictiva conrespeto al rango de valores posibles de guardar.

En comparacion, el metodo de punto flotante causa variaciones enla exactitud de la representacion, mientras permite guardar valoresde un rango mucho mas amplio.

En ANSI-C, el archivo con los datos que refinen los rangos estanen el archivo float.h.

Dra. Elisa Schaeffer FIME, UANL

Page 108: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Punto fijo

La otra opcion serıa simplemente reservar una cierta cantidad debytespara la representacion y fijar a posicion en la cual se suponeque este la coma decimal.

La representacion de punto fijo es mucho mas restrictiva conrespeto al rango de valores posibles de guardar.

En comparacion, el metodo de punto flotante causa variaciones enla exactitud de la representacion, mientras permite guardar valoresde un rango mucho mas amplio.

En ANSI-C, el archivo con los datos que refinen los rangos estanen el archivo float.h.

Dra. Elisa Schaeffer FIME, UANL

Page 109: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Punto fijo

La otra opcion serıa simplemente reservar una cierta cantidad debytespara la representacion y fijar a posicion en la cual se suponeque este la coma decimal.

La representacion de punto fijo es mucho mas restrictiva conrespeto al rango de valores posibles de guardar.

En comparacion, el metodo de punto flotante causa variaciones enla exactitud de la representacion, mientras permite guardar valoresde un rango mucho mas amplio.

En ANSI-C, el archivo con los datos que refinen los rangos estanen el archivo float.h.

Dra. Elisa Schaeffer FIME, UANL

Page 110: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Tipos: float, double, long y double

◮ Tıpicamente se usa la base 2.

◮ La mantisa tiene 24, 53 o 64 dıgitos.

◮ En base 10: [1E-37, 1E+37] en el estandar.

Dra. Elisa Schaeffer FIME, UANL

Page 111: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Tipos: float, double, long y double

◮ Tıpicamente se usa la base 2.

◮ La mantisa tiene 24, 53 o 64 dıgitos.

◮ En base 10: [1E-37, 1E+37] en el estandar.

Dra. Elisa Schaeffer FIME, UANL

Page 112: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Tipos: float, double, long y double

◮ Tıpicamente se usa la base 2.

◮ La mantisa tiene 24, 53 o 64 dıgitos.

◮ En base 10: [1E-37, 1E+37] en el estandar.

Dra. Elisa Schaeffer FIME, UANL

Page 113: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Informacion digital

Tipos: float, double, long y double

◮ Tıpicamente se usa la base 2.

◮ La mantisa tiene 24, 53 o 64 dıgitos.

◮ En base 10: [1E-37, 1E+37] en el estandar.

Dra. Elisa Schaeffer FIME, UANL

Page 114: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Aritmetica (ANSI-C etc.)

a = b asignara + b sumara - b restara ∗ b multiplicara / b dividira % b resto de la division

Dra. Elisa Schaeffer FIME, UANL

Page 115: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Aritmetica (ANSI-C etc.)

a = b asignara + b sumara - b restara ∗ b multiplicara / b dividira % b resto de la division

Dra. Elisa Schaeffer FIME, UANL

Page 116: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Aritmetica (ANSI-C etc.)

a = b asignara + b sumara - b restara ∗ b multiplicara / b dividira % b resto de la division

Dra. Elisa Schaeffer FIME, UANL

Page 117: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Aritmetica (ANSI-C etc.)

a = b asignara + b sumara - b restara ∗ b multiplicara / b dividira % b resto de la division

Dra. Elisa Schaeffer FIME, UANL

Page 118: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Aritmetica (ANSI-C etc.)

a = b asignara + b sumara - b restara ∗ b multiplicara / b dividira % b resto de la division

Dra. Elisa Schaeffer FIME, UANL

Page 119: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Aritmetica (ANSI-C etc.)

a = b asignara + b sumara - b restara ∗ b multiplicara / b dividira % b resto de la division

Dra. Elisa Schaeffer FIME, UANL

Page 120: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Parentesis

Se puede (y recomienda) utilizar las parentesis para agruparexpresiones. Cada expresion debe terminar en un punto-coma.

Ejemplo:

a = (b - c) % ((d - 2) ∗ 6);

Dra. Elisa Schaeffer FIME, UANL

Page 121: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Parentesis

Se puede (y recomienda) utilizar las parentesis para agruparexpresiones. Cada expresion debe terminar en un punto-coma.

Ejemplo:

a = (b - c) % ((d - 2) ∗ 6);

Dra. Elisa Schaeffer FIME, UANL

Page 122: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Parentesis

Se puede (y recomienda) utilizar las parentesis para agruparexpresiones. Cada expresion debe terminar en un punto-coma.

Ejemplo:

a = (b - c) % ((d - 2) ∗ 6);

Dra. Elisa Schaeffer FIME, UANL

Page 123: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Comparaciones

== igual!= no igual< menor que> mayor que<= menor o igual que>= mayor o igual que

Dra. Elisa Schaeffer FIME, UANL

Page 124: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Comparaciones

== igual!= no igual< menor que> mayor que<= menor o igual que>= mayor o igual que

Dra. Elisa Schaeffer FIME, UANL

Page 125: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Comparaciones

== igual!= no igual< menor que> mayor que<= menor o igual que>= mayor o igual que

Dra. Elisa Schaeffer FIME, UANL

Page 126: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Comparaciones

== igual!= no igual< menor que> mayor que<= menor o igual que>= mayor o igual que

Dra. Elisa Schaeffer FIME, UANL

Page 127: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Comparaciones

== igual!= no igual< menor que> mayor que<= menor o igual que>= mayor o igual que

Dra. Elisa Schaeffer FIME, UANL

Page 128: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Comparaciones

== igual!= no igual< menor que> mayor que<= menor o igual que>= mayor o igual que

Dra. Elisa Schaeffer FIME, UANL

Page 129: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entero versus punto flotante

Al combinar diferentes tipos de variables o comparar valores devariables de tipos distintos, hay que tener cuidado.

A veces la funcionalidad definida en el lenguaje no corresponde a laintuicion humana...

Dra. Elisa Schaeffer FIME, UANL

Page 130: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Tipos de constantes

3.0 es double

3.0f es float

12 es int

12l es long

Dra. Elisa Schaeffer FIME, UANL

Page 131: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Tipos de constantes

3.0 es double

3.0f es float

12 es int

12l es long

Dra. Elisa Schaeffer FIME, UANL

Page 132: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Tipos de constantes

3.0 es double

3.0f es float

12 es int

12l es long

Dra. Elisa Schaeffer FIME, UANL

Page 133: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Tipos de constantes

3.0 es double

3.0f es float

12 es int

12l es long

Dra. Elisa Schaeffer FIME, UANL

Page 134: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Tipos de constantes

3.0 es double

3.0f es float

12 es int

12l es long

Dra. Elisa Schaeffer FIME, UANL

Page 135: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Funciones de piso y techo

La funcion piso ⌊x⌋ : R → Z define el numero entero maximo

menor a x ∈ R:⌊x⌋ = max

y∈Z

{y | x ≤ y} . (6)

La funcion techo ⌈x⌉ : R → Z define el numero entero mınimo

mayor a x ∈ R:⌈x⌉ = mın

y∈Z

{y | x ≤ y} . (7)

Dra. Elisa Schaeffer FIME, UANL

Page 136: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Funciones de piso y techo

La funcion piso ⌊x⌋ : R → Z define el numero entero maximo

menor a x ∈ R:⌊x⌋ = max

y∈Z

{y | x ≤ y} . (6)

La funcion techo ⌈x⌉ : R → Z define el numero entero mınimo

mayor a x ∈ R:⌈x⌉ = mın

y∈Z

{y | x ≤ y} . (7)

Dra. Elisa Schaeffer FIME, UANL

Page 137: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Funcion parte entera

Varios lenguajes de programacion incorporan una manera deconvertir un numero en formato punto flotante a un valor entero.

La funcion que captura esta comportamiento es la funcion parte

entera

[x ] : R → Z. (8)

Dra. Elisa Schaeffer FIME, UANL

Page 138: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

En ANSI-C

float a = 3.76;

int b = (int)a;

donde la regla de asignar un valor a la variable b es una mezcla dela funciones piso y techo: denota el valor de la variable a por a. Sia ≥ 0, se asigna a b el valor ⌊a⌋, y cuando a < 0, se asigna a b elvalor ⌈a⌉.

Dra. Elisa Schaeffer FIME, UANL

Page 139: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

En ANSI-C

float a = 3.76;

int b = (int)a;

donde la regla de asignar un valor a la variable b es una mezcla dela funciones piso y techo: denota el valor de la variable a por a. Sia ≥ 0, se asigna a b el valor ⌊a⌋, y cuando a < 0, se asigna a b elvalor ⌈a⌉.

Dra. Elisa Schaeffer FIME, UANL

Page 140: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Redondeo

El redondeo tıpico de x ∈ R al entero mas proximo es equivalentea [x + 0,5].

Hay que tener mucho cuidado con la operacion de parte entera enprogramacion, como implica perdida de datos.

Acumulando uno despues de otro, los errores de redondeo sepueden amplificar y causar comportamiento no deseado en elprograma.

Dra. Elisa Schaeffer FIME, UANL

Page 141: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Redondeo

El redondeo tıpico de x ∈ R al entero mas proximo es equivalentea [x + 0,5].

Hay que tener mucho cuidado con la operacion de parte entera enprogramacion, como implica perdida de datos.

Acumulando uno despues de otro, los errores de redondeo sepueden amplificar y causar comportamiento no deseado en elprograma.

Dra. Elisa Schaeffer FIME, UANL

Page 142: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Redondeo

El redondeo tıpico de x ∈ R al entero mas proximo es equivalentea [x + 0,5].

Hay que tener mucho cuidado con la operacion de parte entera enprogramacion, como implica perdida de datos.

Acumulando uno despues de otro, los errores de redondeo sepueden amplificar y causar comportamiento no deseado en elprograma.

Dra. Elisa Schaeffer FIME, UANL

Page 143: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Ejemplo

En algunas implementaciones una sucesion instrucciones como

float a = 0.6/0.2;

int b = (int)a;

puede resultar en b asignada al valor 2, porque por larepresentacion binaria de punto flotante de los valores 0,6 y 0,2, sudivision resulta en el valor punto flotante2,999999999999999555910790149937.

Entonces, aplicar la funcion parte entera al valor de la variable a

resulta en el valor 2, aunque la respuesta correcta es 3.

Dra. Elisa Schaeffer FIME, UANL

Page 144: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Operaciones logicas

Notacion Interpretacion Sımbolo

&& “y” (conjuncion, los dos ambos) ∧|| “o” (disyunccion, uno de los dos) ∨! “no” (negacion) ¬

Tambien con estos es recomendable usar parentesis para agruparlas expresiones bien.

a = (c && (d >= 4)) || (e && !(f != h));

Dra. Elisa Schaeffer FIME, UANL

Page 145: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Operaciones logicas

Notacion Interpretacion Sımbolo

&& “y” (conjuncion, los dos ambos) ∧|| “o” (disyunccion, uno de los dos) ∨! “no” (negacion) ¬

Tambien con estos es recomendable usar parentesis para agruparlas expresiones bien.

a = (c && (d >= 4)) || (e && !(f != h));

Dra. Elisa Schaeffer FIME, UANL

Page 146: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Operaciones logicas

Notacion Interpretacion Sımbolo

&& “y” (conjuncion, los dos ambos) ∧|| “o” (disyunccion, uno de los dos) ∨! “no” (negacion) ¬

Tambien con estos es recomendable usar parentesis para agruparlas expresiones bien.

a = (c && (d >= 4)) || (e && !(f != h));

Dra. Elisa Schaeffer FIME, UANL

Page 147: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Precedencia

Para los que quieren arriesgarse y no usar parentesis, el orden deprecendencia de los operadores ya mencionados del mas fuerte almas debil:

()

∗ / %

+ -

< <= > >=

== !=

=

Dra. Elisa Schaeffer FIME, UANL

Page 148: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Precedencia

Para los que quieren arriesgarse y no usar parentesis, el orden deprecendencia de los operadores ya mencionados del mas fuerte almas debil:

()

∗ / %

+ -

< <= > >=

== !=

=

Dra. Elisa Schaeffer FIME, UANL

Page 149: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Precedencia

Para los que quieren arriesgarse y no usar parentesis, el orden deprecendencia de los operadores ya mencionados del mas fuerte almas debil:

()

∗ / %

+ -

< <= > >=

== !=

=

Dra. Elisa Schaeffer FIME, UANL

Page 150: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Precedencia

Para los que quieren arriesgarse y no usar parentesis, el orden deprecendencia de los operadores ya mencionados del mas fuerte almas debil:

()

∗ / %

+ -

< <= > >=

== !=

=

Dra. Elisa Schaeffer FIME, UANL

Page 151: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Precedencia

Para los que quieren arriesgarse y no usar parentesis, el orden deprecendencia de los operadores ya mencionados del mas fuerte almas debil:

()

∗ / %

+ -

< <= > >=

== !=

=

Dra. Elisa Schaeffer FIME, UANL

Page 152: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Precedencia

Para los que quieren arriesgarse y no usar parentesis, el orden deprecendencia de los operadores ya mencionados del mas fuerte almas debil:

()

∗ / %

+ -

< <= > >=

== !=

=

Dra. Elisa Schaeffer FIME, UANL

Page 153: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Precedencia

Para los que quieren arriesgarse y no usar parentesis, el orden deprecendencia de los operadores ya mencionados del mas fuerte almas debil:

()

∗ / %

+ -

< <= > >=

== !=

=

Dra. Elisa Schaeffer FIME, UANL

Page 154: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Abreviaciones

Notacion Interpretacion

a += b a = a + b

a -= b a = a - b

a ∗= b a = a ∗ b

a /= b a = a / b

a %= b a = a % b

a++ a = a+1 (al final)a-- a = a-1 (al final)++a a = a+1 (primero)--a a = a-1 (primero)

Dra. Elisa Schaeffer FIME, UANL

Page 155: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Abreviaciones

Notacion Interpretacion

a += b a = a + b

a -= b a = a - b

a ∗= b a = a ∗ b

a /= b a = a / b

a %= b a = a % b

a++ a = a+1 (al final)a-- a = a-1 (al final)++a a = a+1 (primero)--a a = a-1 (primero)

Dra. Elisa Schaeffer FIME, UANL

Page 156: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Abreviaciones

Notacion Interpretacion

a += b a = a + b

a -= b a = a - b

a ∗= b a = a ∗ b

a /= b a = a / b

a %= b a = a % b

a++ a = a+1 (al final)a-- a = a-1 (al final)++a a = a+1 (primero)--a a = a-1 (primero)

Dra. Elisa Schaeffer FIME, UANL

Page 157: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Abreviaciones

Notacion Interpretacion

a += b a = a + b

a -= b a = a - b

a ∗= b a = a ∗ b

a /= b a = a / b

a %= b a = a % b

a++ a = a+1 (al final)a-- a = a-1 (al final)++a a = a+1 (primero)--a a = a-1 (primero)

Dra. Elisa Schaeffer FIME, UANL

Page 158: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Abreviaciones

Notacion Interpretacion

a += b a = a + b

a -= b a = a - b

a ∗= b a = a ∗ b

a /= b a = a / b

a %= b a = a % b

a++ a = a+1 (al final)a-- a = a-1 (al final)++a a = a+1 (primero)--a a = a-1 (primero)

Dra. Elisa Schaeffer FIME, UANL

Page 159: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Abreviaciones

Notacion Interpretacion

a += b a = a + b

a -= b a = a - b

a ∗= b a = a ∗ b

a /= b a = a / b

a %= b a = a % b

a++ a = a+1 (al final)a-- a = a-1 (al final)++a a = a+1 (primero)--a a = a-1 (primero)

Dra. Elisa Schaeffer FIME, UANL

Page 160: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Abreviaciones

Notacion Interpretacion

a += b a = a + b

a -= b a = a - b

a ∗= b a = a ∗ b

a /= b a = a / b

a %= b a = a % b

a++ a = a+1 (al final)a-- a = a-1 (al final)++a a = a+1 (primero)--a a = a-1 (primero)

Dra. Elisa Schaeffer FIME, UANL

Page 161: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Abreviaciones

Notacion Interpretacion

a += b a = a + b

a -= b a = a - b

a ∗= b a = a ∗ b

a /= b a = a / b

a %= b a = a % b

a++ a = a+1 (al final)a-- a = a-1 (al final)++a a = a+1 (primero)--a a = a-1 (primero)

Dra. Elisa Schaeffer FIME, UANL

Page 162: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Abreviaciones

Notacion Interpretacion

a += b a = a + b

a -= b a = a - b

a ∗= b a = a ∗ b

a /= b a = a / b

a %= b a = a % b

a++ a = a+1 (al final)a-- a = a-1 (al final)++a a = a+1 (primero)--a a = a-1 (primero)

Dra. Elisa Schaeffer FIME, UANL

Page 163: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Letras (char)

Como todo contenido, las letras se guarda como numeros. Elsistema de codificacion basica se llama ASCII y tiene rango [0, 127]— no contiene letras con acentos.(http://www.asciitable.com/)

Tienen su propio tipo de dato char, que es casi un sinonimo deshort.

Muchos lenguajes de programacion inclyuen soporte para otrascodificaciones para poder manerar sımbolos internacionales (comoel Latin-1 o el UTF-8).

Dra. Elisa Schaeffer FIME, UANL

Page 164: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Letras (char)

Como todo contenido, las letras se guarda como numeros. Elsistema de codificacion basica se llama ASCII y tiene rango [0, 127]— no contiene letras con acentos.(http://www.asciitable.com/)

Tienen su propio tipo de dato char, que es casi un sinonimo deshort.

Muchos lenguajes de programacion inclyuen soporte para otrascodificaciones para poder manerar sımbolos internacionales (comoel Latin-1 o el UTF-8).

Dra. Elisa Schaeffer FIME, UANL

Page 165: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Letras (char)

Como todo contenido, las letras se guarda como numeros. Elsistema de codificacion basica se llama ASCII y tiene rango [0, 127]— no contiene letras con acentos.(http://www.asciitable.com/)

Tienen su propio tipo de dato char, que es casi un sinonimo deshort.

Muchos lenguajes de programacion inclyuen soporte para otrascodificaciones para poder manerar sımbolos internacionales (comoel Latin-1 o el UTF-8).

Dra. Elisa Schaeffer FIME, UANL

Page 166: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

ctype.h: rutinas de deteccion

int isalpha(int c) si es una letraint isdigit(int c) si es un dıgitoint islower(int c) si es minusculaint ispunct(int c) si es puntuacionint isspace(int c) si es espacio blandoint isupper(int c) si es mayusculaint tolower(int c) a minusculaint toupper(int c) a mayuscula

Dra. Elisa Schaeffer FIME, UANL

Page 167: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

ctype.h: rutinas de deteccion

int isalpha(int c) si es una letraint isdigit(int c) si es un dıgitoint islower(int c) si es minusculaint ispunct(int c) si es puntuacionint isspace(int c) si es espacio blandoint isupper(int c) si es mayusculaint tolower(int c) a minusculaint toupper(int c) a mayuscula

Dra. Elisa Schaeffer FIME, UANL

Page 168: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

ctype.h: rutinas de deteccion

int isalpha(int c) si es una letraint isdigit(int c) si es un dıgitoint islower(int c) si es minusculaint ispunct(int c) si es puntuacionint isspace(int c) si es espacio blandoint isupper(int c) si es mayusculaint tolower(int c) a minusculaint toupper(int c) a mayuscula

Dra. Elisa Schaeffer FIME, UANL

Page 169: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

ctype.h: rutinas de deteccion

int isalpha(int c) si es una letraint isdigit(int c) si es un dıgitoint islower(int c) si es minusculaint ispunct(int c) si es puntuacionint isspace(int c) si es espacio blandoint isupper(int c) si es mayusculaint tolower(int c) a minusculaint toupper(int c) a mayuscula

Dra. Elisa Schaeffer FIME, UANL

Page 170: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

ctype.h: rutinas de deteccion

int isalpha(int c) si es una letraint isdigit(int c) si es un dıgitoint islower(int c) si es minusculaint ispunct(int c) si es puntuacionint isspace(int c) si es espacio blandoint isupper(int c) si es mayusculaint tolower(int c) a minusculaint toupper(int c) a mayuscula

Dra. Elisa Schaeffer FIME, UANL

Page 171: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

ctype.h: rutinas de deteccion

int isalpha(int c) si es una letraint isdigit(int c) si es un dıgitoint islower(int c) si es minusculaint ispunct(int c) si es puntuacionint isspace(int c) si es espacio blandoint isupper(int c) si es mayusculaint tolower(int c) a minusculaint toupper(int c) a mayuscula

Dra. Elisa Schaeffer FIME, UANL

Page 172: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

ctype.h: rutinas de deteccion

int isalpha(int c) si es una letraint isdigit(int c) si es un dıgitoint islower(int c) si es minusculaint ispunct(int c) si es puntuacionint isspace(int c) si es espacio blandoint isupper(int c) si es mayusculaint tolower(int c) a minusculaint toupper(int c) a mayuscula

Dra. Elisa Schaeffer FIME, UANL

Page 173: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

ctype.h: rutinas de deteccion

int isalpha(int c) si es una letraint isdigit(int c) si es un dıgitoint islower(int c) si es minusculaint ispunct(int c) si es puntuacionint isspace(int c) si es espacio blandoint isupper(int c) si es mayusculaint tolower(int c) a minusculaint toupper(int c) a mayuscula

Dra. Elisa Schaeffer FIME, UANL

Page 174: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Operaciones de bits

En ANSI-C, tenemos acceso a los bits de un byte a traves deoperadores especiales:

◮ mover los bits a la izquierda

◮ mover los bits a la derecha

◮ operaciones logicas: y, o, no

Dra. Elisa Schaeffer FIME, UANL

Page 175: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Operaciones de bits

En ANSI-C, tenemos acceso a los bits de un byte a traves deoperadores especiales:

◮ mover los bits a la izquierda

◮ mover los bits a la derecha

◮ operaciones logicas: y, o, no

Dra. Elisa Schaeffer FIME, UANL

Page 176: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Multiplicar por dos

Para multiplicar por dos k veces, o sea, multiplicar por 2k , tenemosel operador “empujar a la izquierda k posiciones”:

int i = 5;

i = i << 4;

Salida: 80

Dra. Elisa Schaeffer FIME, UANL

Page 177: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Multiplicar por dos

Para multiplicar por dos k veces, o sea, multiplicar por 2k , tenemosel operador “empujar a la izquierda k posiciones”:

int i = 5;

i = i << 4;

Salida: 80

Dra. Elisa Schaeffer FIME, UANL

Page 178: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Multiplicar por dos

Para multiplicar por dos k veces, o sea, multiplicar por 2k , tenemosel operador “empujar a la izquierda k posiciones”:

int i = 5;

i = i << 4;

Salida: 80

Dra. Elisa Schaeffer FIME, UANL

Page 179: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

“Dividir” por dos

Para “dividir” por dos k veces, o sea, “dividir” por 2k , tenemos eloperador “empujar a la derecha k posiciones”:

int i = 35;

i = i >> 4;

Salida: 2 — ¡el efecto no es exactamente division por dos!

Dra. Elisa Schaeffer FIME, UANL

Page 180: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

“Dividir” por dos

Para “dividir” por dos k veces, o sea, “dividir” por 2k , tenemos eloperador “empujar a la derecha k posiciones”:

int i = 35;

i = i >> 4;

Salida: 2 — ¡el efecto no es exactamente division por dos!

Dra. Elisa Schaeffer FIME, UANL

Page 181: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

“Dividir” por dos

Para “dividir” por dos k veces, o sea, “dividir” por 2k , tenemos eloperador “empujar a la derecha k posiciones”:

int i = 35;

i = i >> 4;

Salida: 2 — ¡el efecto no es exactamente division por dos!

Dra. Elisa Schaeffer FIME, UANL

Page 182: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Mascaras

Creamos una mascara que tiene el bit que nos interesa en uno y losotros bits en cero:

int i = (1 << k);

donde k el ındice del bit que queremos en uno (el “primer” bit esel menos significante).

Dra. Elisa Schaeffer FIME, UANL

Page 183: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Mascaras

Creamos una mascara que tiene el bit que nos interesa en uno y losotros bits en cero:

int i = (1 << k);

donde k el ındice del bit que queremos en uno (el “primer” bit esel menos significante).

Dra. Elisa Schaeffer FIME, UANL

Page 184: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Mascaras

Creamos una mascara que tiene el bit que nos interesa en uno y losotros bits en cero:

int i = (1 << k);

donde k el ındice del bit que queremos en uno (el “primer” bit esel menos significante).

Dra. Elisa Schaeffer FIME, UANL

Page 185: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Operaciones logicas binarias

Entrada: dos bits para “y” y “o”, un bit para “no”

Salida: un bit

Espanol Ingles C Efectoy and & (1, 1) 7→ 1, en otro caso 0o or | (0, 0) 7→ 0, en otro caso 1no not ~ 1 7→ 0, 0 7→ 1

Dra. Elisa Schaeffer FIME, UANL

Page 186: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Operaciones logicas binarias

Entrada: dos bits para “y” y “o”, un bit para “no”

Salida: un bit

Espanol Ingles C Efectoy and & (1, 1) 7→ 1, en otro caso 0o or | (0, 0) 7→ 0, en otro caso 1no not ~ 1 7→ 0, 0 7→ 1

Dra. Elisa Schaeffer FIME, UANL

Page 187: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Operaciones logicas binarias

Entrada: dos bits para “y” y “o”, un bit para “no”

Salida: un bit

Espanol Ingles C Efectoy and & (1, 1) 7→ 1, en otro caso 0o or | (0, 0) 7→ 0, en otro caso 1no not ~ 1 7→ 0, 0 7→ 1

Dra. Elisa Schaeffer FIME, UANL

Page 188: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Operaciones logicas binarias

Entrada: dos bits para “y” y “o”, un bit para “no”

Salida: un bit

Espanol Ingles C Efectoy and & (1, 1) 7→ 1, en otro caso 0o or | (0, 0) 7→ 0, en otro caso 1no not ~ 1 7→ 0, 0 7→ 1

Dra. Elisa Schaeffer FIME, UANL

Page 189: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

“Forzar” un bit de una variable

Si tenemos una variable y queremos forzar un bit a uno, creamos lamascara para el bit que nos interesa y realizamos una “o”:

mask = (1 << k);

var = (var | mask);

Tambien se puede escribir:

var |= (1 << k);

Dra. Elisa Schaeffer FIME, UANL

Page 190: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

“Forzar” un bit de una variable

Si tenemos una variable y queremos forzar un bit a uno, creamos lamascara para el bit que nos interesa y realizamos una “o”:

mask = (1 << k);

var = (var | mask);

Tambien se puede escribir:

var |= (1 << k);

Dra. Elisa Schaeffer FIME, UANL

Page 191: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

“Forzar” un bit de una variable

Si tenemos una variable y queremos forzar un bit a uno, creamos lamascara para el bit que nos interesa y realizamos una “o”:

mask = (1 << k);

var = (var | mask);

Tambien se puede escribir:

var |= (1 << k);

Dra. Elisa Schaeffer FIME, UANL

Page 192: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

“Aclarar” un bit

Si queremos forzar un bit a cero, necesitamos la operacion “y” yuna mascara complementada donde todos los otros bits son uno yel bit que nos interesa es cero:

int mask = (1 << k);

int compmask = ~mask;

var = var & compmask;

Lo mismo en breve:

var &= ~(1 << k);

Dra. Elisa Schaeffer FIME, UANL

Page 193: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

“Aclarar” un bit

Si queremos forzar un bit a cero, necesitamos la operacion “y” yuna mascara complementada donde todos los otros bits son uno yel bit que nos interesa es cero:

int mask = (1 << k);

int compmask = ~mask;

var = var & compmask;

Lo mismo en breve:

var &= ~(1 << k);

Dra. Elisa Schaeffer FIME, UANL

Page 194: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

“Aclarar” un bit

Si queremos forzar un bit a cero, necesitamos la operacion “y” yuna mascara complementada donde todos los otros bits son uno yel bit que nos interesa es cero:

int mask = (1 << k);

int compmask = ~mask;

var = var & compmask;

Lo mismo en breve:

var &= ~(1 << k);

Dra. Elisa Schaeffer FIME, UANL

Page 195: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Condiciones: if else

if (condicion) {codigo para ejecutar si cumple la condicion

} else if (otra condicion) {codigo para ejecutar si cumple esta condicion

} else {codigo para ejecutar si no cumplio ninguna

}

Elegir una de las opciones a ejecutar. La elegida sera la primera lacondicion de cual cumple. La parte “else if” es opcional y puederepertir varias veces. Tambien la parte “else” es opcional, pero nose puede repetir.

Dra. Elisa Schaeffer FIME, UANL

Page 196: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Condiciones: if else

if (condicion) {codigo para ejecutar si cumple la condicion

} else if (otra condicion) {codigo para ejecutar si cumple esta condicion

} else {codigo para ejecutar si no cumplio ninguna

}

Elegir una de las opciones a ejecutar. La elegida sera la primera lacondicion de cual cumple. La parte “else if” es opcional y puederepertir varias veces. Tambien la parte “else” es opcional, pero nose puede repetir.

Dra. Elisa Schaeffer FIME, UANL

Page 197: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

“Mini-if”

Para asignar a una variable un valor u otro, dependiendo de unacondicion, se usa el “if chiquito”:

a = (b) ? c : d

Si la condicion b es verdad, se asigna el valor de la expresion c a lavariable a, y si es falso, el valor de la expresion d.

Dra. Elisa Schaeffer FIME, UANL

Page 198: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

“Mini-if”

Para asignar a una variable un valor u otro, dependiendo de unacondicion, se usa el “if chiquito”:

a = (b) ? c : d

Si la condicion b es verdad, se asigna el valor de la expresion c a lavariable a, y si es falso, el valor de la expresion d.

Dra. Elisa Schaeffer FIME, UANL

Page 199: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

“Mini-if”

Para asignar a una variable un valor u otro, dependiendo de unacondicion, se usa el “if chiquito”:

a = (b) ? c : d

Si la condicion b es verdad, se asigna el valor de la expresion c a lavariable a, y si es falso, el valor de la expresion d.

Dra. Elisa Schaeffer FIME, UANL

Page 200: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

“Mini-if”

Para asignar a una variable un valor u otro, dependiendo de unacondicion, se usa el “if chiquito”:

a = (b) ? c : d

Si la condicion b es verdad, se asigna el valor de la expresion c a lavariable a, y si es falso, el valor de la expresion d.

Dra. Elisa Schaeffer FIME, UANL

Page 201: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

continue y break

En las estructuras que permiten repeticion, la instruccioncontinue permite saltar al final de la iteracion actual (omitiendo laejecucion de algun codigo) y continuar ejecutando la iteracionsiguiente (si todavıa quedan iteraciones pendientes).

La instruccion break termina la ejecucion de la repeticioninstantamente sin finalizar la iteracion actual.

Dra. Elisa Schaeffer FIME, UANL

Page 202: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

continue y break

En las estructuras que permiten repeticion, la instruccioncontinue permite saltar al final de la iteracion actual (omitiendo laejecucion de algun codigo) y continuar ejecutando la iteracionsiguiente (si todavıa quedan iteraciones pendientes).

La instruccion break termina la ejecucion de la repeticioninstantamente sin finalizar la iteracion actual.

Dra. Elisa Schaeffer FIME, UANL

Page 203: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

continue y break

En las estructuras que permiten repeticion, la instruccioncontinue permite saltar al final de la iteracion actual (omitiendo laejecucion de algun codigo) y continuar ejecutando la iteracionsiguiente (si todavıa quedan iteraciones pendientes).

La instruccion break termina la ejecucion de la repeticioninstantamente sin finalizar la iteracion actual.

Dra. Elisa Schaeffer FIME, UANL

Page 204: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

continue y break

En las estructuras que permiten repeticion, la instruccioncontinue permite saltar al final de la iteracion actual (omitiendo laejecucion de algun codigo) y continuar ejecutando la iteracionsiguiente (si todavıa quedan iteraciones pendientes).

La instruccion break termina la ejecucion de la repeticioninstantamente sin finalizar la iteracion actual.

Dra. Elisa Schaeffer FIME, UANL

Page 205: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

switch case

switch (expresion que evalua a un entero) {case constante:

codigo para ejecutar la expresion evaluo a este constante...case constante:

codigo para ejecutar la expresion evaluo a este constante

default:codigo para ejecutar evaluo a un valor no mencionado

}

En esta instruccion, todos los constantes deben ser enteros.

Dra. Elisa Schaeffer FIME, UANL

Page 206: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

switch case

switch (expresion que evalua a un entero) {case constante:

codigo para ejecutar la expresion evaluo a este constante...case constante:

codigo para ejecutar la expresion evaluo a este constante

default:codigo para ejecutar evaluo a un valor no mencionado

}

En esta instruccion, todos los constantes deben ser enteros.

Dra. Elisa Schaeffer FIME, UANL

Page 207: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

¿Como funciona?

Efectivamente es un if else para situaciones con muchasalternativas donde la condicion se puede “convertir” a un entero.

El case simplemente indica el punto desde donde ejecutar, nohasta donde.

Es muy importante poner un break antes del case siguiente si noquieren que se ejecute todo lo que queda.

Dra. Elisa Schaeffer FIME, UANL

Page 208: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

¿Como funciona?

Efectivamente es un if else para situaciones con muchasalternativas donde la condicion se puede “convertir” a un entero.

El case simplemente indica el punto desde donde ejecutar, nohasta donde.

Es muy importante poner un break antes del case siguiente si noquieren que se ejecute todo lo que queda.

Dra. Elisa Schaeffer FIME, UANL

Page 209: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

¿Como funciona?

Efectivamente es un if else para situaciones con muchasalternativas donde la condicion se puede “convertir” a un entero.

El case simplemente indica el punto desde donde ejecutar, nohasta donde.

Es muy importante poner un break antes del case siguiente si noquieren que se ejecute todo lo que queda.

Dra. Elisa Schaeffer FIME, UANL

Page 210: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

¿Como funciona?

Efectivamente es un if else para situaciones con muchasalternativas donde la condicion se puede “convertir” a un entero.

El case simplemente indica el punto desde donde ejecutar, nohasta donde.

Es muy importante poner un break antes del case siguiente si noquieren que se ejecute todo lo que queda.

Dra. Elisa Schaeffer FIME, UANL

Page 211: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Iteracion por for

for (asignaciones; condicion; operaciones) {codigo para ejecutar

}

Todas las cuatro partes son opcionales - hasta for(;;); compilabien (aunque repite por siempre y el programa no termina).

Dra. Elisa Schaeffer FIME, UANL

Page 212: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Iteracion por for

for (asignaciones; condicion; operaciones) {codigo para ejecutar

}

Todas las cuatro partes son opcionales - hasta for(;;); compilabien (aunque repite por siempre y el programa no termina).

Dra. Elisa Schaeffer FIME, UANL

Page 213: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Iteracion por while y do while

while (condicion) {codigo para ejecutar

}

do {codigo para ejecutar

} while (condicion);

La segunda version siempre ejecuta una vez antes de evaluar lacondicion, mientras la primera comienza por evaluarla.

Dra. Elisa Schaeffer FIME, UANL

Page 214: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Iteracion por while y do while

while (condicion) {codigo para ejecutar

}

do {codigo para ejecutar

} while (condicion);

La segunda version siempre ejecuta una vez antes de evaluar lacondicion, mientras la primera comienza por evaluarla.

Dra. Elisa Schaeffer FIME, UANL

Page 215: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Iteracion por while y do while

while (condicion) {codigo para ejecutar

}

do {codigo para ejecutar

} while (condicion);

La segunda version siempre ejecuta una vez antes de evaluar lacondicion, mientras la primera comienza por evaluarla.

Dra. Elisa Schaeffer FIME, UANL

Page 216: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Arreglo

Un arreglo es un conjunto de una cantidad fija de variables delmismo tipo que se maneja por el mismo nombre a traves de ındices:

int elementos[5]; /∗ ANSI-C ∗/int i = 3;

int[] elementos = new int[i]; /∗ Java ∗/elementos[i] = 4;

Los ındices comienzan de cero y terminan en n − 1 donde n es elnumero total de elementos.

Dra. Elisa Schaeffer FIME, UANL

Page 217: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Arreglo

Un arreglo es un conjunto de una cantidad fija de variables delmismo tipo que se maneja por el mismo nombre a traves de ındices:

int elementos[5]; /∗ ANSI-C ∗/int i = 3;

int[] elementos = new int[i]; /∗ Java ∗/elementos[i] = 4;

Los ındices comienzan de cero y terminan en n − 1 donde n es elnumero total de elementos.

Dra. Elisa Schaeffer FIME, UANL

Page 218: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Arreglo

Un arreglo es un conjunto de una cantidad fija de variables delmismo tipo que se maneja por el mismo nombre a traves de ındices:

int elementos[5]; /∗ ANSI-C ∗/int i = 3;

int[] elementos = new int[i]; /∗ Java ∗/elementos[i] = 4;

Los ındices comienzan de cero y terminan en n − 1 donde n es elnumero total de elementos.

Dra. Elisa Schaeffer FIME, UANL

Page 219: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Arreglo

Un arreglo es un conjunto de una cantidad fija de variables delmismo tipo que se maneja por el mismo nombre a traves de ındices:

int elementos[5]; /∗ ANSI-C ∗/int i = 3;

int[] elementos = new int[i]; /∗ Java ∗/elementos[i] = 4;

Los ındices comienzan de cero y terminan en n − 1 donde n es elnumero total de elementos.

Dra. Elisa Schaeffer FIME, UANL

Page 220: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Cayendo afuera: ANSI-C

int data[5];

data[5] = 3;

Dra. Elisa Schaeffer FIME, UANL

Page 221: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Reacciones variadas

@ubuntu$ gcc errores.c

@ubuntu$ ./a.out

Done.

Bus error (core dumped)

@ubuntu$

@solaris$ gcc errores.c

@solaris$ ./a.out

Done.

@solaris$

Dra. Elisa Schaeffer FIME, UANL

Page 222: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Reacciones variadas

@ubuntu$ gcc errores.c

@ubuntu$ ./a.out

Done.

Bus error (core dumped)

@ubuntu$

@solaris$ gcc errores.c

@solaris$ ./a.out

Done.

@solaris$

Dra. Elisa Schaeffer FIME, UANL

Page 223: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Arreglos multidimensionales

int multi[3][4];

int a, b;

for (a = 0; a < 3; a++)

for (b = 0; b < 4; b++)

multi[a][b] = rand()% 7;

Dra. Elisa Schaeffer FIME, UANL

Page 224: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Arreglos multidimensionales

int multi[3][4];

int a, b;

for (a = 0; a < 3; a++)

for (b = 0; b < 4; b++)

multi[a][b] = rand()% 7;

Dra. Elisa Schaeffer FIME, UANL

Page 225: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Puntero

En C, para crear arreglos sacando la capacidad de una variable, senecesita punteros.

Un puntero es una variable que contiene la direccion a otravariable en la memoria.

Los punteros son unas maravillas sin los cuales uno lo logra nadautil en ANSI-C en el largo plazo.

Dra. Elisa Schaeffer FIME, UANL

Page 226: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Puntero

En C, para crear arreglos sacando la capacidad de una variable, senecesita punteros.

Un puntero es una variable que contiene la direccion a otravariable en la memoria.

Los punteros son unas maravillas sin los cuales uno lo logra nadautil en ANSI-C en el largo plazo.

Dra. Elisa Schaeffer FIME, UANL

Page 227: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Puntero

En C, para crear arreglos sacando la capacidad de una variable, senecesita punteros.

Un puntero es una variable que contiene la direccion a otravariable en la memoria.

Los punteros son unas maravillas sin los cuales uno lo logra nadautil en ANSI-C en el largo plazo.

Dra. Elisa Schaeffer FIME, UANL

Page 228: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Definicion de punteros

char∗ puntero a char;

int∗ puntero a int;

char a = ’a’;

int b = 7;

puntero a char = &a;

puntero a int = &b;

Dra. Elisa Schaeffer FIME, UANL

Page 229: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Definicion de punteros

char∗ puntero a char;

int∗ puntero a int;

char a = ’a’;

int b = 7;

puntero a char = &a;

puntero a int = &b;

Dra. Elisa Schaeffer FIME, UANL

Page 230: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Notacion

t∗ = puntero a una variable de tipo t

&a = direccion de la variable a

∗b = valor apuntado por el puntero b

El compilador queja cuando uno usa mal esta notacion.

Dra. Elisa Schaeffer FIME, UANL

Page 231: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Notacion

t∗ = puntero a una variable de tipo t

&a = direccion de la variable a

∗b = valor apuntado por el puntero b

El compilador queja cuando uno usa mal esta notacion.

Dra. Elisa Schaeffer FIME, UANL

Page 232: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Notacion

t∗ = puntero a una variable de tipo t

&a = direccion de la variable a

∗b = valor apuntado por el puntero b

El compilador queja cuando uno usa mal esta notacion.

Dra. Elisa Schaeffer FIME, UANL

Page 233: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Notacion

t∗ = puntero a una variable de tipo t

&a = direccion de la variable a

∗b = valor apuntado por el puntero b

El compilador queja cuando uno usa mal esta notacion.

Dra. Elisa Schaeffer FIME, UANL

Page 234: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Notacion

t∗ = puntero a una variable de tipo t

&a = direccion de la variable a

∗b = valor apuntado por el puntero b

El compilador queja cuando uno usa mal esta notacion.

Dra. Elisa Schaeffer FIME, UANL

Page 235: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Tamano de tipo

Al reservar memoria, vamos a recibir un puntero a la regionreservada.

Al reservar, vamos a necesitar saber cuanto espacio reservar. Lafuncion sizeof(tipo) devuelve un entero que indica cuantosbytes necesita una variable del tipo definido.

La salida de sizeof() es de tipo size t que es simplemente unentero constante sin signo. El espacio necesario para k variables secalcula por multiplicar: por ejemplo k∗sizeof(int), donde k

puede ser constante o variable.

Dra. Elisa Schaeffer FIME, UANL

Page 236: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Tamano de tipo

Al reservar memoria, vamos a recibir un puntero a la regionreservada.

Al reservar, vamos a necesitar saber cuanto espacio reservar. Lafuncion sizeof(tipo) devuelve un entero que indica cuantosbytes necesita una variable del tipo definido.

La salida de sizeof() es de tipo size t que es simplemente unentero constante sin signo. El espacio necesario para k variables secalcula por multiplicar: por ejemplo k∗sizeof(int), donde k

puede ser constante o variable.

Dra. Elisa Schaeffer FIME, UANL

Page 237: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Tamano de tipo

Al reservar memoria, vamos a recibir un puntero a la regionreservada.

Al reservar, vamos a necesitar saber cuanto espacio reservar. Lafuncion sizeof(tipo) devuelve un entero que indica cuantosbytes necesita una variable del tipo definido.

La salida de sizeof() es de tipo size t que es simplemente unentero constante sin signo. El espacio necesario para k variables secalcula por multiplicar: por ejemplo k∗sizeof(int), donde k

puede ser constante o variable.

Dra. Elisa Schaeffer FIME, UANL

Page 238: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

sizeof()

size t charsize = sizeof(char);

size t intsize = sizeof(int);

size t longsize = sizeof(long);

size t floatsize = sizeof(float);

size t doublesize = sizeof(double);

char 1, int 4, long 4, float 4, double 8

Dra. Elisa Schaeffer FIME, UANL

Page 239: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

sizeof()

size t charsize = sizeof(char);

size t intsize = sizeof(int);

size t longsize = sizeof(long);

size t floatsize = sizeof(float);

size t doublesize = sizeof(double);

char 1, int 4, long 4, float 4, double 8

Dra. Elisa Schaeffer FIME, UANL

Page 240: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

sizeof()

size t charsize = sizeof(char);

size t intsize = sizeof(int);

size t longsize = sizeof(long);

size t floatsize = sizeof(float);

size t doublesize = sizeof(double);

char 1, int 4, long 4, float 4, double 8

Dra. Elisa Schaeffer FIME, UANL

Page 241: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

sizeof()

size t charsize = sizeof(char);

size t intsize = sizeof(int);

size t longsize = sizeof(long);

size t floatsize = sizeof(float);

size t doublesize = sizeof(double);

char 1, int 4, long 4, float 4, double 8

Dra. Elisa Schaeffer FIME, UANL

Page 242: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

sizeof()

size t charsize = sizeof(char);

size t intsize = sizeof(int);

size t longsize = sizeof(long);

size t floatsize = sizeof(float);

size t doublesize = sizeof(double);

char 1, int 4, long 4, float 4, double 8

Dra. Elisa Schaeffer FIME, UANL

Page 243: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

sizeof()

size t charsize = sizeof(char);

size t intsize = sizeof(int);

size t longsize = sizeof(long);

size t floatsize = sizeof(float);

size t doublesize = sizeof(double);

char 1, int 4, long 4, float 4, double 8

Dra. Elisa Schaeffer FIME, UANL

Page 244: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Reservacion de memoria

void∗ malloc(size t n)

= reservar n bytes de memoria

void∗ cealloc(size t n)

= reservar e inicializar a cero

void∗ realloc(void∗ p, size t n)

= aumentar la region

free(void∗ p)

= liberar el espacio apuntado por el puntero

Dra. Elisa Schaeffer FIME, UANL

Page 245: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Conversion de void

Las salidas son tipo void.

Para asignar la salida de malloc() a un int ∗, por ejemplo, hayque hacer conversion explıcita (ingles: type casting):

int∗ d = (int∗)malloc(7∗sizeof(int));

m/c/realloc da la salida NULL si la operacion no es exitosa. Esimportante verificar esto en cada programa. Son de la librerıastdlib.h.

Dra. Elisa Schaeffer FIME, UANL

Page 246: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Conversion de void

Las salidas son tipo void.

Para asignar la salida de malloc() a un int ∗, por ejemplo, hayque hacer conversion explıcita (ingles: type casting):

int∗ d = (int∗)malloc(7∗sizeof(int));

m/c/realloc da la salida NULL si la operacion no es exitosa. Esimportante verificar esto en cada programa. Son de la librerıastdlib.h.

Dra. Elisa Schaeffer FIME, UANL

Page 247: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Conversion de void

Las salidas son tipo void.

Para asignar la salida de malloc() a un int ∗, por ejemplo, hayque hacer conversion explıcita (ingles: type casting):

int∗ d = (int∗)malloc(7∗sizeof(int));

m/c/realloc da la salida NULL si la operacion no es exitosa. Esimportante verificar esto en cada programa. Son de la librerıastdlib.h.

Dra. Elisa Schaeffer FIME, UANL

Page 248: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Conversion de void

Las salidas son tipo void.

Para asignar la salida de malloc() a un int ∗, por ejemplo, hayque hacer conversion explıcita (ingles: type casting):

int∗ d = (int∗)malloc(7∗sizeof(int));

m/c/realloc da la salida NULL si la operacion no es exitosa. Esimportante verificar esto en cada programa. Son de la librerıastdlib.h.

Dra. Elisa Schaeffer FIME, UANL

Page 249: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Punteros a punteros

int i, j, h, k = 4;

int∗∗∗ tresd = (int∗∗∗)malloc(sizeof(int∗∗)∗k);

for (i = 0; i < k; i++) {tresd[i] = (int∗∗)malloc(sizeof(int∗)∗(k-1));for (j = 0; j < k - 1; j++) {tresd[i][j] = (int∗)malloc(sizeof(int)∗(k-2));for (h = 0; h < k - 2; h++)

tresd[i][j][h] = rand()% 10;

}

Dra. Elisa Schaeffer FIME, UANL

Page 250: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Punteros a punteros

int i, j, h, k = 4;

int∗∗∗ tresd = (int∗∗∗)malloc(sizeof(int∗∗)∗k);

for (i = 0; i < k; i++) {tresd[i] = (int∗∗)malloc(sizeof(int∗)∗(k-1));for (j = 0; j < k - 1; j++) {tresd[i][j] = (int∗)malloc(sizeof(int)∗(k-2));for (h = 0; h < k - 2; h++)

tresd[i][j][h] = rand()% 10;

}

Dra. Elisa Schaeffer FIME, UANL

Page 251: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

¿Resultado?

Lo que imprime el programa anterior:

1 2 7 0 9 36 0 6 2 6 18 7 9 2 0 23 7 5 9 2 2

Nota: falta verificar el resultado de malloc()

Dra. Elisa Schaeffer FIME, UANL

Page 252: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

¿Resultado?

Lo que imprime el programa anterior:

1 2 7 0 9 36 0 6 2 6 18 7 9 2 0 23 7 5 9 2 2

Nota: falta verificar el resultado de malloc()

Dra. Elisa Schaeffer FIME, UANL

Page 253: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

string.h

La librerıa string.h per-mite realizar varias ope-raciones con arreglos dechar o punteros a char.

char∗ strcpy(char∗, char∗)copiar el segundo al primerochar∗ strcat(char∗, char∗)juntar dos en unoint strcmp(char∗, char∗)comparar (antes, igual, despues)char∗ strchr(char∗, int)

la primera ocurrencia de un sımbolochar∗ strstr(char∗, char∗)primera ocurrencia de otra cadenasize t strlen(char∗)largo (numero de sımbolos “ocupados”)

Dra. Elisa Schaeffer FIME, UANL

Page 254: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

string.h

La librerıa string.h per-mite realizar varias ope-raciones con arreglos dechar o punteros a char.

char∗ strcpy(char∗, char∗)copiar el segundo al primerochar∗ strcat(char∗, char∗)juntar dos en unoint strcmp(char∗, char∗)comparar (antes, igual, despues)char∗ strchr(char∗, int)

la primera ocurrencia de un sımbolochar∗ strstr(char∗, char∗)primera ocurrencia de otra cadenasize t strlen(char∗)largo (numero de sımbolos “ocupados”)

Dra. Elisa Schaeffer FIME, UANL

Page 255: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

string.h

La librerıa string.h per-mite realizar varias ope-raciones con arreglos dechar o punteros a char.

char∗ strcpy(char∗, char∗)copiar el segundo al primerochar∗ strcat(char∗, char∗)juntar dos en unoint strcmp(char∗, char∗)comparar (antes, igual, despues)char∗ strchr(char∗, int)

la primera ocurrencia de un sımbolochar∗ strstr(char∗, char∗)primera ocurrencia de otra cadenasize t strlen(char∗)largo (numero de sımbolos “ocupados”)

Dra. Elisa Schaeffer FIME, UANL

Page 256: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

string.h

La librerıa string.h per-mite realizar varias ope-raciones con arreglos dechar o punteros a char.

char∗ strcpy(char∗, char∗)copiar el segundo al primerochar∗ strcat(char∗, char∗)juntar dos en unoint strcmp(char∗, char∗)comparar (antes, igual, despues)char∗ strchr(char∗, int)

la primera ocurrencia de un sımbolochar∗ strstr(char∗, char∗)primera ocurrencia de otra cadenasize t strlen(char∗)largo (numero de sımbolos “ocupados”)

Dra. Elisa Schaeffer FIME, UANL

Page 257: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

string.h

La librerıa string.h per-mite realizar varias ope-raciones con arreglos dechar o punteros a char.

char∗ strcpy(char∗, char∗)copiar el segundo al primerochar∗ strcat(char∗, char∗)juntar dos en unoint strcmp(char∗, char∗)comparar (antes, igual, despues)char∗ strchr(char∗, int)

la primera ocurrencia de un sımbolochar∗ strstr(char∗, char∗)primera ocurrencia de otra cadenasize t strlen(char∗)largo (numero de sımbolos “ocupados”)

Dra. Elisa Schaeffer FIME, UANL

Page 258: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

string.h

La librerıa string.h per-mite realizar varias ope-raciones con arreglos dechar o punteros a char.

char∗ strcpy(char∗, char∗)copiar el segundo al primerochar∗ strcat(char∗, char∗)juntar dos en unoint strcmp(char∗, char∗)comparar (antes, igual, despues)char∗ strchr(char∗, int)

la primera ocurrencia de un sımbolochar∗ strstr(char∗, char∗)primera ocurrencia de otra cadenasize t strlen(char∗)largo (numero de sımbolos “ocupados”)

Dra. Elisa Schaeffer FIME, UANL

Page 259: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Puntero a funcion

Funciones que dan el mismo tipo de salida y toman los mismostipos de parametros se puede manejar a traves de un puntero deese “prototipo”:

double multiply(int a, double b) {return b∗a;

}

typedef double (∗funpoint)(int, double);

Dra. Elisa Schaeffer FIME, UANL

Page 260: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Puntero a funcion

Funciones que dan el mismo tipo de salida y toman los mismostipos de parametros se puede manejar a traves de un puntero deese “prototipo”:

double multiply(int a, double b) {return b∗a;

}

typedef double (∗funpoint)(int, double);

Dra. Elisa Schaeffer FIME, UANL

Page 261: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Puntero a funcion

Funciones que dan el mismo tipo de salida y toman los mismostipos de parametros se puede manejar a traves de un puntero deese “prototipo”:

double multiply(int a, double b) {return b∗a;

}

typedef double (∗funpoint)(int, double);

Dra. Elisa Schaeffer FIME, UANL

Page 262: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Uso de punteros a funciones

Tres maneras de llamar la misma funcion:

funpoint fp = &multiply;

multiply(3, 1.2);

(∗fp)(3, 1.2);

fp(3, 1.2);

Dra. Elisa Schaeffer FIME, UANL

Page 263: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Uso de punteros a funciones

Tres maneras de llamar la misma funcion:

funpoint fp = &multiply;

multiply(3, 1.2);

(∗fp)(3, 1.2);

fp(3, 1.2);

Dra. Elisa Schaeffer FIME, UANL

Page 264: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Uso de punteros a funciones

Tres maneras de llamar la misma funcion:

funpoint fp = &multiply;

multiply(3, 1.2);

(∗fp)(3, 1.2);

fp(3, 1.2);

Dra. Elisa Schaeffer FIME, UANL

Page 265: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Uso de punteros a funciones

Tres maneras de llamar la misma funcion:

funpoint fp = &multiply;

multiply(3, 1.2);

(∗fp)(3, 1.2);

fp(3, 1.2);

Dra. Elisa Schaeffer FIME, UANL

Page 266: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Uso de punteros a funciones

Tres maneras de llamar la misma funcion:

funpoint fp = &multiply;

multiply(3, 1.2);

(∗fp)(3, 1.2);

fp(3, 1.2);

Dra. Elisa Schaeffer FIME, UANL

Page 267: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Uso de punteros a funciones

Tres maneras de llamar la misma funcion:

funpoint fp = &multiply;

multiply(3, 1.2);

(∗fp)(3, 1.2);

fp(3, 1.2);

Dra. Elisa Schaeffer FIME, UANL

Page 268: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Funcion como parametro

void task(funpoint f) {int first = rand() % 7;

double second = (rand()∗1.0)/RAND MAX;

f(first, second);

return;

}

int main(int argc, char∗∗ args) {funpoint fp = &multiply;

task(fp);

return 1;

}

Dra. Elisa Schaeffer FIME, UANL

Page 269: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Funcion como parametro

void task(funpoint f) {int first = rand() % 7;

double second = (rand()∗1.0)/RAND MAX;

f(first, second);

return;

}

int main(int argc, char∗∗ args) {funpoint fp = &multiply;

task(fp);

return 1;

}

Dra. Elisa Schaeffer FIME, UANL

Page 270: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Conversiones

Para interpretar una sucesion de sımbolos como un numero,usamos las subrutinas siguientes:

atoi conversion a int

atol conversion a long

atof conversion a double

Todas toman un solo argumento: la cadena a convertir a traves deun char ∗.

Dra. Elisa Schaeffer FIME, UANL

Page 271: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Conversiones

Para interpretar una sucesion de sımbolos como un numero,usamos las subrutinas siguientes:

atoi conversion a int

atol conversion a long

atof conversion a double

Todas toman un solo argumento: la cadena a convertir a traves deun char ∗.

Dra. Elisa Schaeffer FIME, UANL

Page 272: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Conversiones

Para interpretar una sucesion de sımbolos como un numero,usamos las subrutinas siguientes:

atoi conversion a int

atol conversion a long

atof conversion a double

Todas toman un solo argumento: la cadena a convertir a traves deun char ∗.

Dra. Elisa Schaeffer FIME, UANL

Page 273: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Conversiones

Para interpretar una sucesion de sımbolos como un numero,usamos las subrutinas siguientes:

atoi conversion a int

atol conversion a long

atof conversion a double

Todas toman un solo argumento: la cadena a convertir a traves deun char ∗.

Dra. Elisa Schaeffer FIME, UANL

Page 274: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Conversiones

Para interpretar una sucesion de sımbolos como un numero,usamos las subrutinas siguientes:

atoi conversion a int

atol conversion a long

atof conversion a double

Todas toman un solo argumento: la cadena a convertir a traves deun char ∗.

Dra. Elisa Schaeffer FIME, UANL

Page 275: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Salida estandar

Para escribir a la salida estandar, utilizamos printf:

printf( ´Hola, mundo. ´);

Este proviene de la librerıa stdio.h.

Dra. Elisa Schaeffer FIME, UANL

Page 276: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Salida estandar

Para escribir a la salida estandar, utilizamos printf:

printf( ´Hola, mundo. ´);

Este proviene de la librerıa stdio.h.

Dra. Elisa Schaeffer FIME, UANL

Page 277: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Incorporacion de variables a printf()

int %dlong %ldfloat %fdouble %lfchar %cchar∗ %s

Para punto flotante, se puede definir el numero de lugaresdecimales de mostrar (habra redondeo): %.4f dara 4 lugaresdespues de la coma. Tambien con enteros se puede decir cuantoespacio dedicarles: %8d.

Dra. Elisa Schaeffer FIME, UANL

Page 278: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Incorporacion de variables a printf()

int %dlong %ldfloat %fdouble %lfchar %cchar∗ %s

Para punto flotante, se puede definir el numero de lugaresdecimales de mostrar (habra redondeo): %.4f dara 4 lugaresdespues de la coma. Tambien con enteros se puede decir cuantoespacio dedicarles: %8d.

Dra. Elisa Schaeffer FIME, UANL

Page 279: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Incorporacion de variables a printf()

int %dlong %ldfloat %fdouble %lfchar %cchar∗ %s

Para punto flotante, se puede definir el numero de lugaresdecimales de mostrar (habra redondeo): %.4f dara 4 lugaresdespues de la coma. Tambien con enteros se puede decir cuantoespacio dedicarles: %8d.

Dra. Elisa Schaeffer FIME, UANL

Page 280: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Incorporacion de variables a printf()

int %dlong %ldfloat %fdouble %lfchar %cchar∗ %s

Para punto flotante, se puede definir el numero de lugaresdecimales de mostrar (habra redondeo): %.4f dara 4 lugaresdespues de la coma. Tambien con enteros se puede decir cuantoespacio dedicarles: %8d.

Dra. Elisa Schaeffer FIME, UANL

Page 281: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Incorporacion de variables a printf()

int %dlong %ldfloat %fdouble %lfchar %cchar∗ %s

Para punto flotante, se puede definir el numero de lugaresdecimales de mostrar (habra redondeo): %.4f dara 4 lugaresdespues de la coma. Tambien con enteros se puede decir cuantoespacio dedicarles: %8d.

Dra. Elisa Schaeffer FIME, UANL

Page 282: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Incorporacion de variables a printf()

int %dlong %ldfloat %fdouble %lfchar %cchar∗ %s

Para punto flotante, se puede definir el numero de lugaresdecimales de mostrar (habra redondeo): %.4f dara 4 lugaresdespues de la coma. Tambien con enteros se puede decir cuantoespacio dedicarles: %8d.

Dra. Elisa Schaeffer FIME, UANL

Page 283: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Incorporacion de variables a printf()

int %dlong %ldfloat %fdouble %lfchar %cchar∗ %s

Para punto flotante, se puede definir el numero de lugaresdecimales de mostrar (habra redondeo): %.4f dara 4 lugaresdespues de la coma. Tambien con enteros se puede decir cuantoespacio dedicarles: %8d.

Dra. Elisa Schaeffer FIME, UANL

Page 284: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Incorporacion de variables a printf()

int %dlong %ldfloat %fdouble %lfchar %cchar∗ %s

Para punto flotante, se puede definir el numero de lugaresdecimales de mostrar (habra redondeo): %.4f dara 4 lugaresdespues de la coma. Tambien con enteros se puede decir cuantoespacio dedicarles: %8d.

Dra. Elisa Schaeffer FIME, UANL

Page 285: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Entrada estandar

scanf toma dos argumentos: un patron de formato y la direccionde la variable a la cual leer un valor (del teclado).

scanf( ´%d ´, &n);

Ver tambien: sscanf, getchar y gets en stdio.h.

Dra. Elisa Schaeffer FIME, UANL

Page 286: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Entrada estandar

scanf toma dos argumentos: un patron de formato y la direccionde la variable a la cual leer un valor (del teclado).

scanf( ´%d ´, &n);

Ver tambien: sscanf, getchar y gets en stdio.h.

Dra. Elisa Schaeffer FIME, UANL

Page 287: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Entrada estandar

scanf toma dos argumentos: un patron de formato y la direccionde la variable a la cual leer un valor (del teclado).

scanf( ´%d ´, &n);

Ver tambien: sscanf, getchar y gets en stdio.h.

Dra. Elisa Schaeffer FIME, UANL

Page 288: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Tipo de dato FILE

En ANSI-C, un FILE es un “mango” a un archivo en el sistema dearchivos.

Tıpicamente manejamos un puntero al mango, o sea, un FILE ∗.

Dra. Elisa Schaeffer FIME, UANL

Page 289: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Tipo de dato FILE

En ANSI-C, un FILE es un “mango” a un archivo en el sistema dearchivos.

Tıpicamente manejamos un puntero al mango, o sea, un FILE ∗.

Dra. Elisa Schaeffer FIME, UANL

Page 290: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Terminal y teclado

stdin teclado para leerstdout terminal para escribirstderr errores para escribir

Entonces,

fprintf(stdout, ...); = printf(...);

fscanf(stdin, ...); = scanf(...);

Dra. Elisa Schaeffer FIME, UANL

Page 291: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Terminal y teclado

stdin teclado para leerstdout terminal para escribirstderr errores para escribir

Entonces,

fprintf(stdout, ...); = printf(...);

fscanf(stdin, ...); = scanf(...);

Dra. Elisa Schaeffer FIME, UANL

Page 292: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Terminal y teclado

stdin teclado para leerstdout terminal para escribirstderr errores para escribir

Entonces,

fprintf(stdout, ...); = printf(...);

fscanf(stdin, ...); = scanf(...);

Dra. Elisa Schaeffer FIME, UANL

Page 293: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Terminal y teclado

stdin teclado para leerstdout terminal para escribirstderr errores para escribir

Entonces,

fprintf(stdout, ...); = printf(...);

fscanf(stdin, ...); = scanf(...);

Dra. Elisa Schaeffer FIME, UANL

Page 294: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Terminal y teclado

stdin teclado para leerstdout terminal para escribirstderr errores para escribir

Entonces,

fprintf(stdout, ...); = printf(...);

fscanf(stdin, ...); = scanf(...);

Dra. Elisa Schaeffer FIME, UANL

Page 295: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Abrir: leer/escribir

FILE∗ f = fopen(...);

Dos parametros:

◮ el nombre del archivo

◮ el modo de acceso

La salida es NULL si la operacion no fue exitosa.

Dra. Elisa Schaeffer FIME, UANL

Page 296: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Abrir: leer/escribir

FILE∗ f = fopen(...);

Dos parametros:

◮ el nombre del archivo

◮ el modo de acceso

La salida es NULL si la operacion no fue exitosa.

Dra. Elisa Schaeffer FIME, UANL

Page 297: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Abrir: leer/escribir

FILE∗ f = fopen(...);

Dos parametros:

◮ el nombre del archivo

◮ el modo de acceso

La salida es NULL si la operacion no fue exitosa.

Dra. Elisa Schaeffer FIME, UANL

Page 298: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Modos de acceso

r leerw escribir reemplazandoa escribir anadiendor+ leer o escribirw+ crear para leer y escribira+ crear o abrir para anadir...b lo definido en modo binario

Las operaciones para escribir crean el archivo dicho si todavıa noexiste. Cuidado con no reemplazar archivos existentes deimportancia.

Dra. Elisa Schaeffer FIME, UANL

Page 299: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Modos de acceso

r leerw escribir reemplazandoa escribir anadiendor+ leer o escribirw+ crear para leer y escribira+ crear o abrir para anadir...b lo definido en modo binario

Las operaciones para escribir crean el archivo dicho si todavıa noexiste. Cuidado con no reemplazar archivos existentes deimportancia.

Dra. Elisa Schaeffer FIME, UANL

Page 300: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Modos de acceso

r leerw escribir reemplazandoa escribir anadiendor+ leer o escribirw+ crear para leer y escribira+ crear o abrir para anadir...b lo definido en modo binario

Las operaciones para escribir crean el archivo dicho si todavıa noexiste. Cuidado con no reemplazar archivos existentes deimportancia.

Dra. Elisa Schaeffer FIME, UANL

Page 301: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Modos de acceso

r leerw escribir reemplazandoa escribir anadiendor+ leer o escribirw+ crear para leer y escribira+ crear o abrir para anadir...b lo definido en modo binario

Las operaciones para escribir crean el archivo dicho si todavıa noexiste. Cuidado con no reemplazar archivos existentes deimportancia.

Dra. Elisa Schaeffer FIME, UANL

Page 302: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Modos de acceso

r leerw escribir reemplazandoa escribir anadiendor+ leer o escribirw+ crear para leer y escribira+ crear o abrir para anadir...b lo definido en modo binario

Las operaciones para escribir crean el archivo dicho si todavıa noexiste. Cuidado con no reemplazar archivos existentes deimportancia.

Dra. Elisa Schaeffer FIME, UANL

Page 303: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Modos de acceso

r leerw escribir reemplazandoa escribir anadiendor+ leer o escribirw+ crear para leer y escribira+ crear o abrir para anadir...b lo definido en modo binario

Las operaciones para escribir crean el archivo dicho si todavıa noexiste. Cuidado con no reemplazar archivos existentes deimportancia.

Dra. Elisa Schaeffer FIME, UANL

Page 304: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Modos de acceso

r leerw escribir reemplazandoa escribir anadiendor+ leer o escribirw+ crear para leer y escribira+ crear o abrir para anadir...b lo definido en modo binario

Las operaciones para escribir crean el archivo dicho si todavıa noexiste. Cuidado con no reemplazar archivos existentes deimportancia.

Dra. Elisa Schaeffer FIME, UANL

Page 305: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Modos de acceso

r leerw escribir reemplazandoa escribir anadiendor+ leer o escribirw+ crear para leer y escribira+ crear o abrir para anadir...b lo definido en modo binario

Las operaciones para escribir crean el archivo dicho si todavıa noexiste. Cuidado con no reemplazar archivos existentes deimportancia.

Dra. Elisa Schaeffer FIME, UANL

Page 306: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Modos de acceso

r leerw escribir reemplazandoa escribir anadiendor+ leer o escribirw+ crear para leer y escribira+ crear o abrir para anadir...b lo definido en modo binario

Las operaciones para escribir crean el archivo dicho si todavıa noexiste. Cuidado con no reemplazar archivos existentes deimportancia.

Dra. Elisa Schaeffer FIME, UANL

Page 307: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Leer sımbolo por sımbolo

int c = fgetc(...) toma un mango FILE ∗, lee un sımbolo (enun int) y lo envia a su salida.

El caracter EOF indica el fin de archivo.

fgetc(stdin) = getc()

ungetc(...) dado un sımbolo (char) y un mango (FILE ∗),devuelve el sımbolo “virtualmente” al archivo para que el siguientesımbolo leıdo sea el sımbolo “repuesto”.

Dra. Elisa Schaeffer FIME, UANL

Page 308: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Leer sımbolo por sımbolo

int c = fgetc(...) toma un mango FILE ∗, lee un sımbolo (enun int) y lo envia a su salida.

El caracter EOF indica el fin de archivo.

fgetc(stdin) = getc()

ungetc(...) dado un sımbolo (char) y un mango (FILE ∗),devuelve el sımbolo “virtualmente” al archivo para que el siguientesımbolo leıdo sea el sımbolo “repuesto”.

Dra. Elisa Schaeffer FIME, UANL

Page 309: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Leer sımbolo por sımbolo

int c = fgetc(...) toma un mango FILE ∗, lee un sımbolo (enun int) y lo envia a su salida.

El caracter EOF indica el fin de archivo.

fgetc(stdin) = getc()

ungetc(...) dado un sımbolo (char) y un mango (FILE ∗),devuelve el sımbolo “virtualmente” al archivo para que el siguientesımbolo leıdo sea el sımbolo “repuesto”.

Dra. Elisa Schaeffer FIME, UANL

Page 310: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Leer sımbolo por sımbolo

int c = fgetc(...) toma un mango FILE ∗, lee un sımbolo (enun int) y lo envia a su salida.

El caracter EOF indica el fin de archivo.

fgetc(stdin) = getc()

ungetc(...) dado un sımbolo (char) y un mango (FILE ∗),devuelve el sımbolo “virtualmente” al archivo para que el siguientesımbolo leıdo sea el sımbolo “repuesto”.

Dra. Elisa Schaeffer FIME, UANL

Page 311: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Leer lınea por lınea

Con fgets(...) podemos leer una lınea a la vez.

Toma tres parametros: un char ∗ al espacio donde guardar la lınealeıda, el largo maximo de la lınea (int) y el mango FILE ∗ alarchivo.

La salida es NULL si la operacion fallo y un char ∗ valido en otrocaso.

Dra. Elisa Schaeffer FIME, UANL

Page 312: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Leer lınea por lınea

Con fgets(...) podemos leer una lınea a la vez.

Toma tres parametros: un char ∗ al espacio donde guardar la lınealeıda, el largo maximo de la lınea (int) y el mango FILE ∗ alarchivo.

La salida es NULL si la operacion fallo y un char ∗ valido en otrocaso.

Dra. Elisa Schaeffer FIME, UANL

Page 313: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Leer lınea por lınea

Con fgets(...) podemos leer una lınea a la vez.

Toma tres parametros: un char ∗ al espacio donde guardar la lınealeıda, el largo maximo de la lınea (int) y el mango FILE ∗ alarchivo.

La salida es NULL si la operacion fallo y un char ∗ valido en otrocaso.

Dra. Elisa Schaeffer FIME, UANL

Page 314: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Escribir lınea por lınea

Los sımbolos a los cuales apunta un char ∗ pueden ser escritos enun archivo por pasar el puntero a ellos juntos con el mango alarchivo a fputs(...).

La salida es cero si todo fue bien, no cero si hubo errores.

Dra. Elisa Schaeffer FIME, UANL

Page 315: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Escribir lınea por lınea

Los sımbolos a los cuales apunta un char ∗ pueden ser escritos enun archivo por pasar el puntero a ellos juntos con el mango alarchivo a fputs(...).

La salida es cero si todo fue bien, no cero si hubo errores.

Dra. Elisa Schaeffer FIME, UANL

Page 316: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

¿Todavıa queda algo?

feof(...) toma un mango y devuelve “1” si el archivo yaesta procesado a su final y “0” en otro caso.

Dra. Elisa Schaeffer FIME, UANL

Page 317: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Todo a la vez

fread(...) lee los contenidos del archivo entero dado cuatro

parametros:

1. un char ∗ a donde guardar lo leıdo

2. el tamano de la unidad leıda en multiples de sizeof(char)

(o sea, “1”)

3. el numero de unidades para leer

4. el mango al archivo FILE ∗

La salida es no cero si algo fue leıdo exitosamente.

Tambien existe fwrite(...) con los mismos tipos de parametros.

Dra. Elisa Schaeffer FIME, UANL

Page 318: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Todo a la vez

fread(...) lee los contenidos del archivo entero dado cuatro

parametros:

1. un char ∗ a donde guardar lo leıdo

2. el tamano de la unidad leıda en multiples de sizeof(char)

(o sea, “1”)

3. el numero de unidades para leer

4. el mango al archivo FILE ∗

La salida es no cero si algo fue leıdo exitosamente.

Tambien existe fwrite(...) con los mismos tipos de parametros.

Dra. Elisa Schaeffer FIME, UANL

Page 319: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Asegurar que todo entre

No todo el contenido escrito en un archivo aparece en elloinmediatamente en el disco.

Para asegurar que el contenido sea transferido al disco, hay quellamar fflush(...) con el mango del archivo.

Dra. Elisa Schaeffer FIME, UANL

Page 320: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Asegurar que todo entre

No todo el contenido escrito en un archivo aparece en elloinmediatamente en el disco.

Para asegurar que el contenido sea transferido al disco, hay quellamar fflush(...) con el mango del archivo.

Dra. Elisa Schaeffer FIME, UANL

Page 321: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Volver a procesar

Con rewind podemos regresar el mango al inicio del archivo. Elunico parametro es el mango mismo.

Dra. Elisa Schaeffer FIME, UANL

Page 322: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Cerrar

Cuando acceso a un archivo ya no es necesario, el mango se eliminapor fclose(...) donde el unico parametro es el mango FILE ∗.

Es importante checar que no sea NULL el mango; al cerrar unNULL, tıpicamente habra errores durante ejecucion.

Dra. Elisa Schaeffer FIME, UANL

Page 323: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Cerrar

Cuando acceso a un archivo ya no es necesario, el mango se eliminapor fclose(...) donde el unico parametro es el mango FILE ∗.

Es importante checar que no sea NULL el mango; al cerrar unNULL, tıpicamente habra errores durante ejecucion.

Dra. Elisa Schaeffer FIME, UANL

Page 324: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

rand()

ANSI-C cuenta con una subrutina rand() que genera un numeroentero pseudoaleatorio entre cero y RAND MAX. La librerıa necesariaes stdlib.h.

Es muy importante inicializar el generador por definir una semillacon srand(int).

Una buena semilla es el tiempo actual en millisegundos: time(0).

Dra. Elisa Schaeffer FIME, UANL

Page 325: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

rand()

ANSI-C cuenta con una subrutina rand() que genera un numeroentero pseudoaleatorio entre cero y RAND MAX. La librerıa necesariaes stdlib.h.

Es muy importante inicializar el generador por definir una semillacon srand(int).

Una buena semilla es el tiempo actual en millisegundos: time(0).

Dra. Elisa Schaeffer FIME, UANL

Page 326: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

rand()

ANSI-C cuenta con una subrutina rand() que genera un numeroentero pseudoaleatorio entre cero y RAND MAX. La librerıa necesariaes stdlib.h.

Es muy importante inicializar el generador por definir una semillacon srand(int).

Una buena semilla es el tiempo actual en millisegundos: time(0).

Dra. Elisa Schaeffer FIME, UANL

Page 327: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Transformaciones

◮ [0, 1]

◮ [a, b]

◮ {0, 1}

Dra. Elisa Schaeffer FIME, UANL

Page 328: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Transformaciones

◮ [0, 1]

◮ [a, b]

◮ {0, 1}

Dra. Elisa Schaeffer FIME, UANL

Page 329: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Transformaciones

◮ [0, 1]

◮ [a, b]

◮ {0, 1}

Dra. Elisa Schaeffer FIME, UANL

Page 330: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Validacion

Es muy importante verificar que la distribucion de la salida es ladeseada y que no presenten patrones de regularidad las salidas.

Cuando rand() no resulta suficientemente “aleatorio”, existenotras librerıas libremente disponibles en lınea y varios algoritmos enla literatura.

Dra. Elisa Schaeffer FIME, UANL

Page 331: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Validacion

Es muy importante verificar que la distribucion de la salida es ladeseada y que no presenten patrones de regularidad las salidas.

Cuando rand() no resulta suficientemente “aleatorio”, existenotras librerıas libremente disponibles en lınea y varios algoritmos enla literatura.

Dra. Elisa Schaeffer FIME, UANL

Page 332: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Otras distribuciones

Los libros de probabilidad ayudan en convertir una variablealeatoria uniforme a una de otra distribucion, aunque a veces esnecesario generar mas que un valor uniforme por cada valor de laotra distribucion.

(Hay tareas relacionadas. Para la distribucion exponencial es facil, por

ejemplo.)

Dra. Elisa Schaeffer FIME, UANL

Page 333: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

Entrada y salidaArchivosNumeros pseudoaleatorios

Otras distribuciones

Los libros de probabilidad ayudan en convertir una variablealeatoria uniforme a una de otra distribucion, aunque a veces esnecesario generar mas que un valor uniforme por cada valor de laotra distribucion.

(Hay tareas relacionadas. Para la distribucion exponencial es facil, por

ejemplo.)

Dra. Elisa Schaeffer FIME, UANL

Page 334: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Preprocesador y assert.h

#ifdef DEBUG

fprintf(stderr, ´Verificando el puntero... ´);

assert(p != NULL);

#endif

Dra. Elisa Schaeffer FIME, UANL

Page 335: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Preprocesador y assert.h

#ifdef DEBUG

fprintf(stderr, ´Verificando el puntero... ´);

assert(p != NULL);

#endif

Dra. Elisa Schaeffer FIME, UANL

Page 336: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Preprocesador y assert.h

#ifdef DEBUG

fprintf(stderr, ´Verificando el puntero... ´);

assert(p != NULL);

#endif

Dra. Elisa Schaeffer FIME, UANL

Page 337: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Preprocesador y assert.h

#ifdef DEBUG

fprintf(stderr, ´Verificando el puntero... ´);

assert(p != NULL);

#endif

Dra. Elisa Schaeffer FIME, UANL

Page 338: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Subrutinas

Cuando el codigo es largo o contiene partes repetitivas, es mejordivirlo en subrutinas.

El diseno de buenas subrutinas es un arte.

Es esencial o definir o por lo menos declarar cada subrutina antes

de usarlo en el codigo para que el compilador pueda identificarla.

Dra. Elisa Schaeffer FIME, UANL

Page 339: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Subrutinas

Cuando el codigo es largo o contiene partes repetitivas, es mejordivirlo en subrutinas.

El diseno de buenas subrutinas es un arte.

Es esencial o definir o por lo menos declarar cada subrutina antes

de usarlo en el codigo para que el compilador pueda identificarla.

Dra. Elisa Schaeffer FIME, UANL

Page 340: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Subrutinas

Cuando el codigo es largo o contiene partes repetitivas, es mejordivirlo en subrutinas.

El diseno de buenas subrutinas es un arte.

Es esencial o definir o por lo menos declarar cada subrutina antes

de usarlo en el codigo para que el compilador pueda identificarla.

Dra. Elisa Schaeffer FIME, UANL

Page 341: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Subrutinas

Cuando el codigo es largo o contiene partes repetitivas, es mejordivirlo en subrutinas.

El diseno de buenas subrutinas es un arte.

Es esencial o definir o por lo menos declarar cada subrutina antes

de usarlo en el codigo para que el compilador pueda identificarla.

Dra. Elisa Schaeffer FIME, UANL

Page 342: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Parametros a subrutinas

Al entrar a una llamada de subrutina, el sistema operativo queesta ejecutando el programa copia los valores de los parametros auna nueva area de memoria.

Si uno quiere que la subrutina pueda modificar la variable de la(sub-)rutina que hizo la llamada, hay que pasar un puntero a lavariable como parametro.

Cada subrutina puede tener una sola salida al valor de la cualevalua su llamada.

Dra. Elisa Schaeffer FIME, UANL

Page 343: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Parametros a subrutinas

Al entrar a una llamada de subrutina, el sistema operativo queesta ejecutando el programa copia los valores de los parametros auna nueva area de memoria.

Si uno quiere que la subrutina pueda modificar la variable de la(sub-)rutina que hizo la llamada, hay que pasar un puntero a lavariable como parametro.

Cada subrutina puede tener una sola salida al valor de la cualevalua su llamada.

Dra. Elisa Schaeffer FIME, UANL

Page 344: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Parametros a subrutinas

Al entrar a una llamada de subrutina, el sistema operativo queesta ejecutando el programa copia los valores de los parametros auna nueva area de memoria.

Si uno quiere que la subrutina pueda modificar la variable de la(sub-)rutina que hizo la llamada, hay que pasar un puntero a lavariable como parametro.

Cada subrutina puede tener una sola salida al valor de la cualevalua su llamada.

Dra. Elisa Schaeffer FIME, UANL

Page 345: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Recursion

= cuando una computacion se repite por un mecanismo donde unasubrutina llama a si misma (o varias diferentes subrutinas hacenllamadas entre ellos de una manera cıclica).

Utilizado inteligentemente, recursion es un mecanismo muypoderoso que facilita el diseno e implementacion de buenosalgoritmos.

Dra. Elisa Schaeffer FIME, UANL

Page 346: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Recursion

= cuando una computacion se repite por un mecanismo donde unasubrutina llama a si misma (o varias diferentes subrutinas hacenllamadas entre ellos de una manera cıclica).

Utilizado inteligentemente, recursion es un mecanismo muypoderoso que facilita el diseno e implementacion de buenosalgoritmos.

Dra. Elisa Schaeffer FIME, UANL

Page 347: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Recursion versus iteracion

Varios problemas se puede resolver en dos maneras distintas: o porrepetir iterativamente (con for, while, ...) o recursivamente ciertasoperaciones hasta llegar a una condicion de terminacion.

A veces una de las dos maneras es muy superior a la otra.

Ejemplos: palındromos, triangulo de Pascal, estructuras de datos...

Dra. Elisa Schaeffer FIME, UANL

Page 348: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Recursion versus iteracion

Varios problemas se puede resolver en dos maneras distintas: o porrepetir iterativamente (con for, while, ...) o recursivamente ciertasoperaciones hasta llegar a una condicion de terminacion.

A veces una de las dos maneras es muy superior a la otra.

Ejemplos: palındromos, triangulo de Pascal, estructuras de datos...

Dra. Elisa Schaeffer FIME, UANL

Page 349: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Recursion versus iteracion

Varios problemas se puede resolver en dos maneras distintas: o porrepetir iterativamente (con for, while, ...) o recursivamente ciertasoperaciones hasta llegar a una condicion de terminacion.

A veces una de las dos maneras es muy superior a la otra.

Ejemplos: palındromos, triangulo de Pascal, estructuras de datos...

Dra. Elisa Schaeffer FIME, UANL

Page 350: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Librerıas propias

Una subrutina bien disenado suele ser util en varios programas, nosolamente en ello para el cual fue originalmente escrito.

Para facilitar el reuso de codigo, es mejor separar tales subrutinasen sus propios archivos, agrupandolas por archivo segun su funcion.

Preparar un archivo .h propio con las declaraciones de losconstantes, subrutinas, etcetera.

Dra. Elisa Schaeffer FIME, UANL

Page 351: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Librerıas propias

Una subrutina bien disenado suele ser util en varios programas, nosolamente en ello para el cual fue originalmente escrito.

Para facilitar el reuso de codigo, es mejor separar tales subrutinasen sus propios archivos, agrupandolas por archivo segun su funcion.

Preparar un archivo .h propio con las declaraciones de losconstantes, subrutinas, etcetera.

Dra. Elisa Schaeffer FIME, UANL

Page 352: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Librerıas propias

Una subrutina bien disenado suele ser util en varios programas, nosolamente en ello para el cual fue originalmente escrito.

Para facilitar el reuso de codigo, es mejor separar tales subrutinasen sus propios archivos, agrupandolas por archivo segun su funcion.

Preparar un archivo .h propio con las declaraciones de losconstantes, subrutinas, etcetera.

Dra. Elisa Schaeffer FIME, UANL

Page 353: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Tipos de datos “al gusto”

Practicamente todo lenguaje de programacion avanzada lespermite definir (de una manera u otra) sus propios tipos de datos.

Los tipos definidos son combinaciones de los tipos basicos.

Dra. Elisa Schaeffer FIME, UANL

Page 354: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Tipos de datos “al gusto”

Practicamente todo lenguaje de programacion avanzada lespermite definir (de una manera u otra) sus propios tipos de datos.

Los tipos definidos son combinaciones de los tipos basicos.

Dra. Elisa Schaeffer FIME, UANL

Page 355: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Numeros complejos

Por ejemplo, para manejar numeros complejos x + iy ∈ C, sepuede definir un tipo de datos que contiene dos double: uno parax y otro para y .

Dra. Elisa Schaeffer FIME, UANL

Page 356: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Declaracion en ANSI-C

Tıpicamente se incluye las declaraciones de estructuras en losarchivos .h y la sintaxis es la siguiente:

struct complexNumber {double real;

double imaginary;

};

Dra. Elisa Schaeffer FIME, UANL

Page 357: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Declaracion en ANSI-C

Tıpicamente se incluye las declaraciones de estructuras en losarchivos .h y la sintaxis es la siguiente:

struct complexNumber {double real;

double imaginary;

};

Dra. Elisa Schaeffer FIME, UANL

Page 358: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Acceso a las partes

Para acceder a las partes de una estructura, usamos .:

int main(int c, char∗∗ d)

{struct complexNumber a;

a.real = 1.0;

a.imaginary = 2.5;

...

return 1;

}

Dra. Elisa Schaeffer FIME, UANL

Page 359: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Acceso a las partes

Para acceder a las partes de una estructura, usamos .:

int main(int c, char∗∗ d)

{struct complexNumber a;

a.real = 1.0;

a.imaginary = 2.5;

...

return 1;

}

Dra. Elisa Schaeffer FIME, UANL

Page 360: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Acceso a las partes

Para acceder a las partes de una estructura, usamos .:

int main(int c, char∗∗ d)

{struct complexNumber a;

a.real = 1.0;

a.imaginary = 2.5;

...

return 1;

}

Dra. Elisa Schaeffer FIME, UANL

Page 361: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Acceso a las partes

Para acceder a las partes de una estructura, usamos .:

int main(int c, char∗∗ d)

{struct complexNumber a;

a.real = 1.0;

a.imaginary = 2.5;

...

return 1;

}

Dra. Elisa Schaeffer FIME, UANL

Page 362: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Acceso a las partes por un puntero

Para acceder a las partes de una estructura a que tenemos unpuntero, usamos ->:

void setValue(struct complexNumber∗ n) {n->real = 1.0;

n->imaginary = 0.0;

return;

}

int main(int c, char∗∗ d)

{struct complexNumber a;

setValue(&a);

...

return 1;

}

Dra. Elisa Schaeffer FIME, UANL

Page 363: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Acceso a las partes por un puntero

Para acceder a las partes de una estructura a que tenemos unpuntero, usamos ->:

void setValue(struct complexNumber∗ n) {n->real = 1.0;

n->imaginary = 0.0;

return;

}

int main(int c, char∗∗ d)

{struct complexNumber a;

setValue(&a);

...

return 1;

}

Dra. Elisa Schaeffer FIME, UANL

Page 364: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Acceso a las partes por un puntero

Para acceder a las partes de una estructura a que tenemos unpuntero, usamos ->:

void setValue(struct complexNumber∗ n) {n->real = 1.0;

n->imaginary = 0.0;

return;

}

int main(int c, char∗∗ d)

{struct complexNumber a;

setValue(&a);

...

return 1;

}

Dra. Elisa Schaeffer FIME, UANL

Page 365: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Sobrenombres a tipos: typedef

// en un .h

typedef int entero;

typedef double decimal;

typedef struct complexNumber complejo;

// uso en un .c

entero a = 3;

decimal b = 2.5;

complejo c;

c.real = 1.0;

c.imaginary = -2.4;

Dra. Elisa Schaeffer FIME, UANL

Page 366: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Sobrenombres a tipos: typedef

// en un .h

typedef int entero;

typedef double decimal;

typedef struct complexNumber complejo;

// uso en un .c

entero a = 3;

decimal b = 2.5;

complejo c;

c.real = 1.0;

c.imaginary = -2.4;

Dra. Elisa Schaeffer FIME, UANL

Page 367: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Sobrenombres a tipos: typedef

// en un .h

typedef int entero;

typedef double decimal;

typedef struct complexNumber complejo;

// uso en un .c

entero a = 3;

decimal b = 2.5;

complejo c;

c.real = 1.0;

c.imaginary = -2.4;

Dra. Elisa Schaeffer FIME, UANL

Page 368: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Sobrenombres a tipos: typedef

// en un .h

typedef int entero;

typedef double decimal;

typedef struct complexNumber complejo;

// uso en un .c

entero a = 3;

decimal b = 2.5;

complejo c;

c.real = 1.0;

c.imaginary = -2.4;

Dra. Elisa Schaeffer FIME, UANL

Page 369: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Sobrenombres a constantes: #define

#define MAXLENGTH 80

char buffer[MAXLENGTH];

for (i = 0; i < MAXLENGTH; i++) {...

}

Dra. Elisa Schaeffer FIME, UANL

Page 370: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Sobrenombres a constantes: #define

#define MAXLENGTH 80

char buffer[MAXLENGTH];

for (i = 0; i < MAXLENGTH; i++) {...

}

Dra. Elisa Schaeffer FIME, UANL

Page 371: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Sobrenombres a constantes: #define

#define MAXLENGTH 80

char buffer[MAXLENGTH];

for (i = 0; i < MAXLENGTH; i++) {...

}

Dra. Elisa Schaeffer FIME, UANL

Page 372: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Sobrenombres de “opciones”: enum

enum options {NEXT = 1,

PREVIOUS = 2,

FIRST = 3,

LAST = 4,

EXIT = 5

};

Dra. Elisa Schaeffer FIME, UANL

Page 373: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Sobrenombres de “opciones”: enum

enum options {NEXT = 1,

PREVIOUS = 2,

FIRST = 3,

LAST = 4,

EXIT = 5

};

Dra. Elisa Schaeffer FIME, UANL

Page 374: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Uso de enum

// pref. en .h

typedef enum coloresPosibles {ROJO, AZUL, VERDE, AMARILLO, NEGRO

} color;

// uso en .c

color c;

switch (c) {case ROJO:

...

case AZUL:

...

}

Dra. Elisa Schaeffer FIME, UANL

Page 375: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Uso de enum

// pref. en .h

typedef enum coloresPosibles {ROJO, AZUL, VERDE, AMARILLO, NEGRO

} color;

// uso en .c

color c;

switch (c) {case ROJO:

...

case AZUL:

...

}

Dra. Elisa Schaeffer FIME, UANL

Page 376: Programaci´on · Arreglos y punteros Librer´ıas esta´ndares Ma´s alla´ de lo ba´sico Programa Ram Un programa Ram es una sucesi´on finita de instrucciones de tipo assembler,

Computadoras y programacionVariables y tipos de datos

OperacionesEstructuras de control

Arreglos y punterosLibrerıas estandares

Mas alla de lo basico

SubrutinasTipos propios

Uso de enum

// pref. en .h

typedef enum coloresPosibles {ROJO, AZUL, VERDE, AMARILLO, NEGRO

} color;

// uso en .c

color c;

switch (c) {case ROJO:

...

case AZUL:

...

}

Dra. Elisa Schaeffer FIME, UANL