Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de...

418
Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo A. Franco) 1 Departamento de Ciencias e Ingeniería de la Computación Academia de Ciencias de la Computación Autor: M. en C. Edgardo Adrián Franco Martínez

Transcript of Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de...

Page 1: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

IntroducciónalaUnidaddeAprendizaje

0.0Algoritmiayprogramaciónestructurada

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 2: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• Introducción• Algoritmia y programación estructurada

2

Algo

ritmia  y program

ación estructurada

0.0 Algo

ritmia y program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 3: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Introducción¿Qué es una computadora?

3

Algo

ritmia  y program

ación estructurada

0.0 Algo

ritmia y program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 4: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Una computadora es una máquina capaz de procesarinformación a gran velocidad.

• ¿Qué es información?

4

Algo

ritmia  y program

ación estructurada

0.0 Algo

ritmia y program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 5: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• La Información es un conjunto de datos ordenados querepresentan algo.

• Los datos ordenados son los que constituyen una entrada(input) a la computadora, la cuál se encarga de procesarmediante una lógica (programa) para producir una nuevainformación de salida (output).

5

Algo

ritmia  y program

ación estructurada

0.0 Algo

ritmia y program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Procesamiento

Información de entrada

Información de salida

Page 6: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Una computadora esta compuesta por un conjuntode componentes electrónicos, mecánicos e interfacespara interactuar con el exterior (usuarios u otrosdispositivos) y por un conjunto de programas quedeterminan que operaciones llevar a cabo.

6

Algo

ritmia  y program

ación estructurada

0.0 Algo

ritmia y program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Computadora

Hardware

Software

Page 7: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

7

Conjunto de programas(software)

Computadora (hardware)

Entrada Salida

Una computadora esta formada por un parte física y otralógica (hardware & software), la primera de estas estaconformada por los elementos físicos que la conforman(dispositivos electrónicos y mecánicos), la parte lógica esaquella que determina que procesos se van a realizar con lainformación de entrada.

Algo

ritmia  y program

ación estructurada

0.0 Algo

ritmia y program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 8: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Para definir el conjunto de programas de una computadoraexisten personas responsables de indicar a la computadora lalógica de procesamiento. Cada programa es que es definidonecesariamente es construido por especialistas (arquitectosde software y programadores).

• La razón de ser de una computadora es poder resolverproblemas capaces de ser modelados y representados endatos coherentes y ordenados (información), apoyándose desu gran velocidad y capacidad de seguir una serie de pasosprogramados con anterioridad y dependientes de lainformación que se maneja.

• ¿Qué información es capaz de procesar una computadora?8

Algo

ritmia  y program

ación estructurada

0.0 Algo

ritmia y program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 9: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• La información que puede ser procesada por la computadoraserá toda aquella que se encuentre codificada de manera talque sea posible manipular por los dispositivos que laconforman, i.e. la información de entrada es digitalizada.

• La información de salida es transformada a un formatoentendible por el usuario o dispositivo que la recibirá, lo quesignifica que no obligatoriamente el procesamiento realizadocon la información se realizo como aparentemente se ve a lasalida.

9

Algo

ritmia  y program

ación estructurada

0.0 Algo

ritmia y program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 10: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Algoritmiayprogramaciónestructurada

10

AlgoritmiaDisciplina del conocimientocuyo objeto de estudio sonlos algoritmos.

Programación estructuradaEs una forma de escribir programas decomputadora (Es un paradigma deprogramación). Los principios que rigeneste paradigma de programación son eluso de únicamente tres estructuras decontrol: secuencia, selección e iteración.

• Conceptos a importantes • Algoritmo• Paradigma• Programa de computadora• Programación

• Secuencia• Selección• Iteración• Modularidad

Algo

ritmia  y program

ación estructurada

0.0 Algo

ritmia y program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 11: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

UnidadI"Conceptosbásicosyherramientasdeprogramación"

1.1Algoritmo(pseudo–código)

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 12: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• Algoritmia

• ¿Qué es un algoritmo?• Métodos algorítmicos

• Diagrama de flujo• Símbolos utilizados en los diagramas de flujo• Reglas para la construcción de diagramas de flujo• Ejemplo 01• Ejemplo 02• Ejemplo 03

• Pseudocódigo• Convenciones comunes de un pseudocódigo• Ejemplo 04

2

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 13: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Algoritmia• Área de estudio cuyo objeto de estudio son los algoritmos.

• En computación un algoritmo permite modelar la serie depasos necesarios a realizar para poder resolver una parte o latotalidad de un problema computacional.

• Al hablar de un problema computacional se hace referencia ala necesidad de dada cierta información alcanzar un resultadobuscado sabiendo que existe una o un conjunto de solucionescapaces de ser encontradas utilizando las capacidades deprocesamiento de una computadora.

3

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 14: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

¿Quéesunalgoritmo?• Es un conjunto ordenado y finito de operaciones quepermite hallar la solución de un problema.

• Podemos decir que un algoritmo es una "receta", ya que si sesigue de manera correcta encuentran un resultado en untiempo acotado.

• P.g. escribe un algoritmo para resolver el problema de llegar de tucasa a ESCOM.

4

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 15: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Definiciónformaldealgoritmo Es un conjunto preescrito de instrucciones o reglas bien

definidas, ordenadas y finitas que permite realizar unaactividad mediante pasos sucesivos que no generen dudas aquien lo ejecute.

Dados un estado inicial y una entrada, siguiendo los pasossucesivos se llega a un estado final y se obtiene unasolución.

5

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 16: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Métodosalgorítmicos• Un algoritmo es univoco, lo que implica que si se ejecutavarias veces el mismo algoritmo sobre un conjunto de datosde entrada, siempre se obtiene la misma solución a la salida.Además, el resultado debe generarse en un tiempo finito.

• Los métodos que utilizan algoritmos se denominan métodosalgorítmicos, en oposición a los que implican algún juicio ointerpretación, que se denominan heurísticos. Los métodosalgorítmicos se pueden implementar fácilmente encomputadoras; sin embargo los métodos heurísticos no confacilidad, además de que no aseguran obtener la mismasalida siempre ante las mismas entradas.

6

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 17: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Diagramadeflujo• Existen distintas formas gráficade representar un algoritmo, eldiagrama de flujo fue una de lasprimeras empleadas.

• Un diagrama de flujo se utilizasímbolos con significados biendefinidos que representan lospasos del algoritmo, yrepresentan el flujo de ejecuciónmediante flechas que conectanlos puntos de inicio y de término.

7

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 18: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Es la representación gráfica de un algoritmo

• Muestra los pasos o procesos a seguir para alcanzarla solución de un problema

• Utilizan símbolos (cajas) estándar y tienen los pasosdel algoritmo escritos en estas cajas unidas porflechas

• La secuencia del algoritmo esta determinado por elflujo de la flechas

8

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 19: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Símbolosutilizadosenlosdiagramasdeflujo

9

Inicio y Fin

Lectura/Entrada de datos

Proceso

Decisión

Almacenamiento/Salida de datos

Conector

Flujo del diagrama

Decisión múltiple

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 20: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

10

+ Sumar- Menos* Multiplicación/ División= Equivalencia> Mayor que< Menor que≥ Mayor o igual que≤ Menor o igual que<> o != Diferente de

← o → Asignación«La definición de datos se da por supuesta, principalmente  para variables sencillas»

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 21: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Reglasparalaconstruccióndediagramasdeflujo

1. Todo diagrama de flujo debe tener un inicio y un fin

2. Las líneas utilizadas para indicar la dirección del flujo deldiagrama deber ser rectas: verticales u horizontales

3. Todas las líneas utilizadas para indicar la dirección del flujodel diagrama deben estar conectadas mediante algúnsímbolo

4. El diagrama de flujo debe construirse de arriba hacia abajoy de izquierda a derecha

11

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 22: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

5. La notación utilizada en el diagrama de flujo debe serindependiente del lenguaje de programación

6. Si la construcción del diagrama de flujo requiere más deuna hoja se deben utilizar los conectores adecuados

12

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 23: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Ejemplo01• Diseñe un algoritmo para calcular el área de un

triangulo.• Se recibe como entrada la base y la altura.

13

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 24: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Ejemplo01• Diseñe un algoritmo para calcular el área de un

triangulo.• Se recibe como entrada la base y la altura.

14

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Inicio

base, altura

area← (base * altura) / 2

área

Fin

Page 25: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Ejemplo02• Construir un algoritmo que, al recibir

como entrada una clave de unempleado y los seis primeros sueldosdel año de este, calcule el ingreso totalsemestral y el promedio mensual parael empleado, finalmente se imprimirá suclave, el ingreso total y el promediomensual.

15

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 26: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

16

Ejemplo02• Construir un algoritmo

que, al recibir comoentrada una clave deun empleado y los seisprimeros sueldos delaño de este, calcule elingreso total semestraly el promedio mensualpara el empleado,finalmente seimprimirá su clave, elingreso total y elpromedio mensual.

Inicio

clave, su1, su2, su3, su4, su5, su6

ingreso ← su1 + su2 + su3 + su4 + su5 + su6 promedio  ← ingreso / 6

clave, ingreso,promedio

Fin

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 27: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Ejemplo03• Calcular la media de una serie de

números positivos, suponiendo que losdatos se leen uno a uno.

• Un valor de cero como entrada indicaráque se ha alcanzado el final de la seriede números positivos.

17

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 28: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

18

Inicio

dato <>0

media

Fin

dato

media ← suma/ (numdatos‐1)

1

1

numdatos ←  numdatos + 1suma← suma+ dato

numdatos ← 0suma← 0

nonosisi

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 29: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Pseudocódigo• El pseudocódigo es una descripción de alto nivel de unalgoritmo que emplea una mezcla de lenguaje natural conalgunas convenciones sintácticas propias de lenguajes deprogramación, a usar (es un supuesto lenguaje) .

• Es utilizado para describir algoritmos de manera formal enlibros y publicaciones científicas, y como productointermedio durante el desarrollo de un algoritmo.

• El pseudocódigo está pensado para facilitar a las personas elentendimiento de un algoritmo, y por lo tanto puede omitirdetalles irrelevantes que son necesarios en unaimplementación. 19

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 30: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Programadores diferentes suelen utilizar convencionesdistintas, que pueden estar basadas en la sintaxis delenguajes de programación concretos. Sin embargo, elpseudocódigo en general es comprensible sin necesidad deconocer o utilizar un entorno de programación específico, yes a la vez suficientemente estructurado para que suimplementación se pueda hacer directamente a partir de él.

• Es independiente del lenguaje de programación.

• La definición de datos se da por supuesta, principalmentepara variables sencillas, pero si se emplea variable máscomplejas, por ejemplo pilas, colas, vectores, etc., se puedendefinir en la cabecera del algoritmo.

20

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 31: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

21

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 32: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Convencionescomunesdeunpseudocódigo

• Asignación

• Variables declaradas por el desarrollador

x←yy→x

volumen←∏ r2hresultado←sin(a) 22

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 33: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Estructuras de controlSecuencia de instrucciones

Instrucciónn

Instrucción1Instrucción2Instrucción3Instrucción4

Diagrama de flujo Pseudocódigo

23

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 34: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Estructuras de controlCondicionales

Pseudocódigo

condicióncondición

nono

sisi

Instrucciones

24

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 35: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Estructuras de controlCondicional doble

Pseudocódigo

condición

sisi

nono

Instrucciones2

Instrucciones1

25

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 36: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Estructuras de controlCondicional múltiple

Pseudocódigo

condición1

sisi

nono

Instrucciones1

condición2

Instrucciones2

nono

sisi

condición3

sisi

nono

26

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 37: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Estructuras de controlIterativa

Pseudocódigo

condición

nono

sisi

Instrucciones

27

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 38: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Estructuras de controlIterativa

Repetir

condición

sisi

nono

Mientras ≈ Repetir

Instrucciones

28

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Pseudocódigo

Page 39: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Estructuras de controlIterativa

Para

Para → mientras

i ≤ n

nono

sisi

Instruccionesi ← i+1

i ← x

29

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Pseudocódigo

Page 40: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Anidamiento

30

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 41: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Ejemplo04• Calcular la media de una serie de

números positivos, suponiendo que losdatos se leen uno a uno.

• Un valor de cero como entradaindicará que se ha alcanzado el final dela serie de números positivos.

31

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 42: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

32

Inicio

dato <>0

media

Fin

dato

1)media ← suma/ (numdatos‐1)

1

1

numdatos + 1numdatos ←  numdatos + 1suma← suma+ dato

numdatos ← 0suma← 0

nonosisi

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Ejemplo04(Algoritmoendiagramadeflujo)

Page 43: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Procedimiento Media()numdatos<‐0suma<‐0repetir

dato<‐Entrada()numdatos<‐numdatos+1suma‐>suma+dato

hasta que ¬(dato<>0)media<‐suma/(numdatos‐1)media‐>Salida()

fin procedimiento 33

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Ejemplo04(Algoritmoenpseudocódigo)

Page 44: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

UnidadI"Conceptosbásicosyherramientasdeprogramación"

1.2LaarquitecturadeVonNeumann

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 45: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• Arquitectura de una computadora

• Elementos básicos de una arquitectura• Aspectos que definen y distinguen unaarquitectura

• Arquitectura de una computadora según laorganización de los elementos• Arquitectura Harvard• Arquitectura Von Neumann

• Funcionamiento general de este tipo dearquitectura 2

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 46: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Arquitecturadeunacomputadora• Computadora: "Máquina capaz de procesar informacióna muy alta velocidad".

• Podemos determinar con esta definición que esta tieneuna arquitectura establecida y un modo defuncionamiento, debido al hecho de ser una maquina.

• La arquitectura de una computadora es un modelo y unadescripción funcional de los requerimientos y lasimplementaciones de diseño para varias partes de unacomputadora, con especial interés en la forma en que launidad central de proceso CPU trabaja internamente yaccede a las direcciones de memoria.

3

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 47: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Todas las computadoras constan principalmente detres partes, la CPU que procesa los datos, lamemoria que guarda los datos y los dispositivos deentrada y salida que permiten la comunicación conel exterior.

Procesador MemoriaDispositivos de entrada y salida

Computadora digital

4

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Elementosbásicosdeunaarquitectura

Page 48: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Procesador• Desde el punto de vista funcional, unmicroprocesador es un circuito integrado queincorpora en su interior una unidad central deproceso (CPU) y todo un conjunto de elementoslógicos que permiten enlazar otros dispositivos comomemorias y puertos de entrada y salida (I/O),formando un sistema completo para cumplir con unaaplicación específica dentro del mundo real. Paraque el sistema pueda realizar su labor debe ejecutarpaso a paso un programa que consiste en unasecuencia de números binarios o instrucciones,almacenándolas en uno o más elementos dememoria, generalmente externos al mismo

ProcesadorControlDatapath

5

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 49: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Memoria• Se refiere a los componentes de una computadora,dispositivo y medios de almacenamiento que retienen datosinformáticos durante algún intervalo de tiempo. Lasmemorias de computadora proporcionan unas de lasprincipales funciones de la computación moderna, laretención o almacenamiento de información. Es uno de loscomponentes fundamentales de todas las computadorasmodernas.

• La memoria primaria está directamente conectada a la CPUde la computadora. Debe estar presente para que la CPUfuncione correctamente. (Registros del procesador, Memoriacache y memoria principal de acceso aleatorio RAM).

• La memoria secundaria requiere que la computadora use suscanales de entrada/salida para acceder a la información y seutiliza para almacenamiento a largo plazo de informaciónpersistente. (Discos Duros, Memorias Flash, etc.)

Memoria

6

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 50: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Dispositivos de entrada‐salida• E/S o I/O (input/output), es la colección deinterfaces que usan las distintas unidadesfuncionales (subsistemas) de un sistema deprocesamiento de información para comunicarseunas con otras.

Dispositivos

Entrada

Salida

7

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 51: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• De acuerdo a lo anterior, una arquitectura decomputadora será formada por los siguienteselementos básicos.

Procesador

Computadora

Unidad de Control

Datapath(ALU, Registros, …)

Memoria Dispositivos

Entrada

Salida

*Un datapath es una colección de unidades funcionales, por ejemplo ALUs omultiplicadores, o unidades que realizan un proceso u operaciones con los datos. Lamayoría de los procesadores consisten en un datapath y una a unidad de control, launidad de control se dedica a regular la interacción entre el datapath y la memoria.

8

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 52: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Toda arquitectura computacional incluye tres aspectosque la definen y distinguen.

1. Conjunto de operaciones2. Organización de la computadora3. Hardware de la computadora

1. El conjunto de operaciones: es la interfaz visible entreel hardware y la programación.

• Las dos principales aproximaciones al conjunto deinstrucciones son:• CISC (Complex Instruction Set Computer)• RISC (Reduced Instruction Set Computer)

Aspectosquedefinenydistinguenunaarquitectura

9

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 53: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

2. La organización de la computadora: es la lógica defuncionamiento de la arquitectura, puedendistinguirse dos arquitecturas teóricas básicas.

1. Arquitectura Von Neumann2. Arquitectura Harvard

Procesador

Computadora

Unidad de Control

Datapath(ALU, Registros, …)

Memoria Dispositivos

Entrada

Salida10

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 54: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

3. El Hardware de la computadora: es lo quefísicamente lleva a cabo el trabajo deprocesamiento. De acuerdo a las capacidades ytipos se organizan de acuerdo a una arquitecturaestándar para la construcción de unacomputadora.

• i.e. este aspecto se refiere a las características delhardware (Velocidad, capacidad, …).

11

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 55: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• La organización de la computadora: es la lógica defuncionamiento de la arquitectura, puedendistinguirse dos arquitecturas teóricas básicas.

1. Arquitectura Von Neumann2. Arquitectura Harvard

• Ambos modelos contemplan la existencia de un modulode procesamiento, una serie de dispositivos deentrada/salida y memoria.

Arquitecturadeunacomputadorasegúnlaorganizacióndeloselementos

12

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 56: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

ArquitecturaHarvard• Arquitectura Harvard hace referencia unaorganización de la computadora que utilizadispositivos memorias físicamente separadas paralas instrucciones y para los datos.

• El término proviene de la computadora Harvard Mark I,que almacenaba las instrucciones en cintas perforadas ylos datos en interruptores.

13

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 57: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Memoria• Cada memoria dispone de su respectivo bus, lo quepermite, que la CPU pueda acceder de formaindependiente y simultánea a la memoria de datos y ala de instrucciones.

• Como los buses son independientes éstos puedentener distintos contenidos en la misma dirección .

• Además de que el ancho de palabra del bus de datosde cada memoria puede ser distinto.

Usos de esta arquitectura• Esta arquitectura suele utilizarse enMicrocontroladores y DSPs (procesadores digitales deseñales), usados habitualmente en productos paraprocesamiento de audio y video así como sistemaselectrónicos con cómputo embebido.

14

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 58: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Organización de la computadora digital según la arquitectura Harvard

Procesador

15

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 59: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

ArquitecturaVonNeumann• El nacimiento u origen de la arquitectura Von Neumannsurge a raíz de una colaboración en el proyecto ENIACdel matemático de origen húngaro, John Von Neumann.

• Este trabajaba en 1945 en el laboratorio atómico de LosAlamos cuando se encontró con uno de losconstructores de la ENIAC. Compañero de AlbertEinstein, Goedel y Turing en Princeton, Von Neumann seinteresó por el problema de la necesidad de "recablear"la máquina para cada nueva tarea.

• En 1949 había encontrado y desarrollado la solución aeste problema, consistente en poner la informaciónsobre las operaciones a realizar en la misma memoriautilizada para los datos, escribiéndola de la mismaforma, es decir en código binario (Computadora EDVAC).

16

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 60: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• La arquitectura Von Neumann es un modelo deorganización en arquitecturas de computadoras queutilizan el mismo dispositivo de almacenamientotanto para las instrucciones como para los datos (adiferencia de la arquitectura Harvard).

17

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 61: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Los ordenadores con esta arquitectura constan decinco partes: La unidad aritmético‐lógica o ALU, launidad de control, la memoria, dispositivos deentrada/salida y el bus de datos que proporciona unmedio de transporte de los datos entre las distintaspartes.

v

18

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 62: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Memoria• Se compone de un conjunto de celdas del mismotamaño (número de bits).

• Cada celda está identificada por un número binarioúnico, denominado dirección.

• Una vez seleccionada una celda mediante sucorrespondiente dirección, se pueden hacer dosoperaciones:• Lectura: Permite conocer el valor almacenadoanteriormente.

• Escritura: Almacena un nuevo valor. 19

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 63: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Unidad Central de Proceso (CPU)• Es el conjunto formado por la Unidad de Control, losregistros y la Unidad Aritmética Lógica, es decir es elbloque encargado de ejecutar las instrucciones.• Con la aparición de los circuitos integrados, y enconcreto a partir de los años 70, cuando la tecnologíaalcanzó el nivel de integración adecuado, se integró enuna sola pastilla la CPU. A este circuito integrado se ledenomina Microprocesador.

Una forma de determinar el rendimiento de uncomputador es por el número de instrucciones que ejecutapor segundo (MIPS).

20

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 64: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Unidad Aritmético‐Lógica (ALU)• Realiza las operaciones elementales, tanto aritméticascomo lógicas, que implementa el computador: suma,resta, AND, OR, NOT, etc.

• Los datos con los que opera se leen de la memoria, ypueden almacenarse temporalmente en los registrosque contiene la CPU.

Unidad de Control• Ejecuta las instrucciones máquina almacenadas en lamemoria.

• Captura las instrucciones y las decodifica.• Según el tipo de instrucción, genera las señales decontrol a todas las unidades internas de la CPU parapoder realizar su ejecución.

21

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 65: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Unidad de Entrada/Salida• Realiza la transferencia de información con las unidadesexternas, denominadas periféricos: unidades dealmacenamiento secundario (disco duro, disquete, cinta,etc.), impresoras, terminales, monitores, etc.

• La memoria secundaria (MS), se considera como unperiférico. La MS es más lenta que la principal, pero tieneuna mayor capacidad de almacenamiento.

22

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 66: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Buses• Además de las 4 unidades básicas, en un computadorexisten conjuntos de señales, que se denominan buses, ycuya función es transferir las instrucciones y los datos entrelas distintas unidades.

• Estos buses se representan en la figura mediante flechas detrazo continuo. Se suelen distinguir tres tipos de buses:

• Bus de direcciones• Bus de datos• Bus de control

23

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 67: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

24

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 68: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Funcionamientogeneraldeestetipodearquitectura

• Un ordenador con esta arquitectura realiza o emulalos siguientes pasos secuencialmente:

1. Obtiene la siguiente instrucción desde la memoriaen la dirección indicada por el contador deprograma (PC) y la guarda en el registro deinstrucción (IR).

2. Aumenta el contador de programa en la longitud dela instrucción para apuntar a la siguiente instrución.

Algo

ritmia  y program

ación 

estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. e

n C. Edgardo

 Adrián 

25

Page 69: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

3. Decodifica la instrucción mediante la unidad decontrol. Ésta se encarga de coordinar el resto decomponentes del ordenador para realizar unafunción determinada.

4. Se ejecuta la instrucción en este paso puedecambiar el valor del contador del programa,permitiendo así operaciones repetitivas. El contadorpuede cambiar también cuando se cumpla unacierta condición aritmética, haciendo que elordenador pueda 'tomar decisiones', que puedenalcanzar cualquier grado de complejidad, mediantela aritmética y lógica anteriores.

5. Vuelve al paso 1

26

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 70: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Bus de DireccionesBus de Datos

Bus de Control

Unidad central de proceso

CPUUnidad

de controlUC

PC IR

AR ACDR

Unidadde

Memoria

UnidaddeE/S

Dispositivosperiféricos

UnidadAritmética y

lógicaALU E

R/W

E

27

Algo

ritmia  y program

ación estructurada

1.2 La arquitectura de

 Von

 Neu

man

nAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 71: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

UnidadI"Conceptosbásicosyherramientasdeprogramación"

1.3Herramientasdeprogramación

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 72: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• Lenguaje de programación• Programa computacional• Clasificaciones de los lenguajes de programación• Clasificación según su nivel de abstracción• Clasificación según su modo de ejecución final• Clasificación según su paradigma de programación

• Lenguaje C• Historia del lenguaje C• Ventajas y desventajas del lenguaje C• El estándar ANSI C

2

Algo

ritmia  y program

ación estructurada

1.3 He

rram

ientas de prog

ramación

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 73: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Lenguajedeprogramación• Un lenguaje de programación es un idioma artificialdiseñado para expresar computaciones que pueden serllevadas a cabo por máquinas como las computadoras.

• Pueden usarse para crear programas que controlen elcomportamiento físico y lógico de una máquina, estopermite expresar algoritmos con precisión e interacciónhumano‐maquina.

3

Algo

ritmia  y program

ación estructurada

1.3 He

rram

ientas de prog

ramación

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 74: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Está formado de un conjunto de símbolos y reglassintácticas y semánticas que definen su estructura yel significado de sus elementos y expresiones.

• Sintáctica (reglas que gobiernan la combinatoria de lossímbolos y la formación de unidades superiores a estos)

• Semántica (aspectos del significado, sentido ointerpretación del significado de un determinado elemento,símbolo, palabra, expresión o representación formal)

4

Algo

ritmia  y program

ación estructurada

1.3 He

rram

ientas de prog

ramación

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 75: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Programacomputacional• Un programa computacional es un conjunto de instruccionesque una vez ejecutadas realizarán una o varias tareas en unacomputadora.

• La razón de ser de un programa computacional es permitirresolver problemas con apoyo de equipos computacionalespor lo que al crearlos es necesario abstraer los componentesde este y modelarlos en un ambiente computacional.

Abstracción:, acto mental en el que conceptualmente se aísla un objeto o una propiedad de un objeto.

5

Algo

ritmia  y program

ación estructurada

1.3 He

rram

ientas de prog

ramación

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 76: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Clasificacióndeloslenguajedeprogramación• En la actualidad hay muchos tipos de lenguajes deprogramación, cada uno de ellos con sus propiasreglas, terminología, sintaxis y manera de crear unprograma computacional.

• La clasificación de los lenguajes de programaciónpuede realizarse desde tres aspectos básicos.

• Según su nivel de abstracción• Según su modo de ejecución final• Según su paradigma de programación 6

Algo

ritmia  y program

ación estructurada

1.3 He

rram

ientas de prog

ramación

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 77: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Clasificacióndeloslenguajedeprogramaciónsegúnsuniveldeabstracción

7

Algo

ritmia  y program

ación estructurada

1.3 He

rram

ientas de prog

ramación

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 78: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Lenguaje Máquina: es el lenguaje deprogramación que entiende directamente lacomputadora o máquina. Este lenguaje deprogramación utiliza el alfabeto binario, esdecir, el 0 y el 1.

• Lenguajes de programación de bajo nivel:Son mucho mas fáciles de utilizar que ellenguaje máquina, pero dependen mucho dela máquina o computadora al igual que ellenguaje máquina.

• El lenguaje ensamblador fue el primer lenguaje deprogramación que trato de sustituir el lenguajemáquina por otro mucho más parecido al de losseres humanos. 8

Algo

ritmia  y program

ación estructurada

1.3 He

rram

ientas de prog

ramación

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 79: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Lenguaje maquina (Instrucciones en binario)

Lenguaje de bajo nivel(Instrucciones en código maquina)

9

Algo

ritmia  y program

ación estructurada

1.3 He

rram

ientas de prog

ramación

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 80: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Lenguaje de medio nivel: Lenguaje de medio nivel es unlenguaje de programación que se encuentran entre loslenguajes de alto nivel y los lenguajes de bajo nivel. Suelenser clasificados muchas veces de alto nivel, pero permitenciertos manejos de bajo nivel.

• Son precisos para ciertas aplicaciones como la creación desistemas operativos, ya que permiten un manejo abstracto(independiente de la máquina, a diferencia delensamblador), pero sin perder mucho del poder y eficienciaque tienen los lenguajes de bajo nivel.

10

Algo

ritmia  y program

ación estructurada

1.3 He

rram

ientas de prog

ramación

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 81: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

11

Algo

ritmia  y program

ación estructurada

1.3 He

rram

ientas de prog

ramación

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 82: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Lenguajes de programación de alto nivel: Este tipo delenguajes de programación son independientes de lamáquina, lo podemos usar en cualquier computador con muypocas modificaciones o sin ellas, son muy similares allenguaje humano, pero precisan de un programa interprete ocompilador que traduzca este lenguaje de programación dealto nivel a lenguaje de máquina que la computadora puedaentender.

12

Algo

ritmia  y program

ación estructurada

1.3 He

rram

ientas de prog

ramación

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 83: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• El modo de ejecución final de un lenguaje de programación,se refiere al proceso necesario para poner en ejecución lasinstrucciones de dicho lenguaje en un equipo de cómputo.Para finalmente proporcionar las entradas que serántomadas para obtener una salida de todo el conjunto deinstrucciones (programa computacional).

Clasificacióndeloslenguajedeprogramaciónsegúnsumododeejecuciónfinal

13

Algo

ritmia  y program

ación estructurada

1.3 He

rram

ientas de prog

ramación

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 84: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Lenguaje compilado• Lenguaje de programación que requiere de un proceso de compilaciónantes de poder ser ejecutado.

Código Fuente Compilador

Programa en lenguaje maquina u objeto

Entrada Programa en lenguaje maquina  

u objeto

Salida

14

Algo

ritmia  y program

ación estructurada

1.3 He

rram

ientas de prog

ramación

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 85: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Lenguaje interpretado• Es un lenguaje de programación que está diseñado para ser ejecutadopor medio de un intérprete.

Código Fuente

Intérprete SalidaEntrada Compilador

15

Algo

ritmia  y program

ación estructurada

1.3 He

rram

ientas de prog

ramación

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 86: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• El paradigma de programación es un modelo que rige comoconstruir un programa de computación bajo un lenguaje deprogramación, por lo que algunos lenguajes han surgidoorientándose a ellos. También existen lenguajes deprogramación capaces de soportar más de un paradigma deprogramación

Clasificacióndeloslenguajedeprogramaciónsegúnsuparadigmadeprogramación

Un paradigma de programaciónrepresenta un enfoque particular ofilosofía para la construcción delsoftware.

16

Algo

ritmia  y program

ación estructurada

1.3 He

rram

ientas de prog

ramación

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 87: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Un paradigma de programación no es mejor uno que otrosino que cada uno tiene ventajas y desventajas.

• También hay situaciones donde un paradigma resulta másapropiado que otro.

• En la actualidad el paradigma orientado a objetos es el másutilizado debido a la facilidad para abstraer a su filosofía lamayoría de las soluciones a los problemas actuales, para suimplementación y a reemplazado al paradigma deprogramación estructurada muy empleado en la década delos 80’s y 90’s.

17

Algo

ritmia  y program

ación estructurada

1.3 He

rram

ientas de prog

ramación

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 88: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

LenguajeC• C es un lenguaje de programación creado en 1972 porDennis MacAlistair Ritchie en los Laboratorios Bell comoevolución del anterior lenguaje B, creado por Ken Thompson.

• Se trata de un lenguaje fuertemente tipificado de medionivel pero conmuchas características de bajo nivel.

• Dispone de las estructuras típicas de los lenguajes de altonivel pero, a su vez, dispone de construcciones del lenguajeque permiten un control a muy bajo nivel.

• Los compiladores suelen ofrecer extensiones al lenguaje queposibilitan mezclar código en ensamblador con código C oacceder directamente a memoria o dispositivos periféricos.

18

Algo

ritmia  y program

ación estructurada

1.3 He

rram

ientas de prog

ramación

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 89: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

VentajasdelLenguajeC• Programación Estructurada

• Economía de expresiones

• Gran cantidad de operadores y tipos de datos

• Codificación en alto y bajo nivel simultáneamente

• Reemplaza ventajosamente la programación en ensamblador

• Utilización natural de las funciones primitivas del sistemaoperativo (Unix)

• De propósito general

19

Algo

ritmia  y program

ación estructurada

1.3 He

rram

ientas de prog

ramación

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 90: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

DesventajasdelLenguajeC• No posee de instrucciones de entrada y salida

• No posee de instrucciones de manejo de cadenas decaracteres

• La libertad en la escritura en los programas lleva aerrores en la programación (semánticos) que, por sercorrectos sintácticamente no se detectan a simple vista

• La precedencia de operadores convierten las expresionesen pequeños rompecabezas

20

Algo

ritmia  y program

ación estructurada

1.3 He

rram

ientas de prog

ramación

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 91: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

CódigofuenteenC• Un código fuente en C, es un conjunto de líneas queexpresan computaciones bajo la sintaxis y semántica dellenguaje C. Un programa escrito en C tiene comocaracterísticas sobresalientes, el ser eficiente y veloz.

• Como el lenguaje C es compilado, se requiere del empleo deun compilador apropiado según la plataforma en la que sedesea ejecutar el programa.

Código Fuente en C

Compilador ANSI C (gcc)

Programa  ejecutable u código objeto

21

Algo

ritmia  y program

ación estructurada

1.3 He

rram

ientas de prog

ramación

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 92: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

UnidadI"Conceptosbásicosyherramientasdeprogramación"

1.5Representacióndeexpresiones

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 93: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• Operadores• Precedencia de Operadores• Operadores y expresiones aritméticas• Expresiones condicionales; operadores relacionales y lógicos

• Operaciones para el manejo de bits• La librería estándar <math.h>• Funciones• Constantes• Ejemplo 2

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 94: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Operadores• Son palabras o símbolos que implican una acción sobreciertas variables.

• Pueden operar de manera:• Unaria (con 1 variable)• Binaria (con 2 variables)• Ternaria (con 3 variables)

• Existen en C operadores:• Aritméticos• Relacionales• Lógicos• De Asignación• De Dirección• De Bits 3

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 95: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

PrecedenciadeOperadoresOperadores Tipo Asociatividad

( )  [ ]  ‐> Alta prioridad Izquierda a derecha

!  ~  ++  ‐‐ +  ‐ *  &  (tipo)  sizeof Unarios Derecha a izquierda

*  /  %  +  ‐ Aritméticos Izquierda a derecha<<  >> Corrimiento de bits Izquierda a derecha<  <=  >  >=  ==  != Relacionales Izquierda a derecha

& ^ | Bits Izquierda a derecha

&&  || Lógicos Izquierda a derecha

?:  Condicional Derecha a izquierda

=  +=  ‐=  *=  /=  %=  &=  ^=  |=  <<=  >>=

Asignación Derecha a izquierda

, Evaluación Izquierda a derecha

4

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 96: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Operadoresyexpresionesaritméticas

Operador Nombre Descripción

* Multiplicación 5*2 → 10

/ División 5/2 → 2

% Módulo 5%2 → 1

+ Suma 5+2 → 7

‐ Resta 5‐2 → 3

(tipo de dato) “Cast” forzado (double)5 → 5.0

sizeof(tipo de dato) Tamaño de dato sizeof(int) → 45

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 97: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Operador Abreviado No Abreviado= a=2; a=2;++ n++; n=n+1;‐‐ n‐‐; n=n‐1;+= n+=2; n=n+2;‐= n‐=2; n=n‐2;*= n*=2; n=n*2;/= n/=2; n=n/2;%= n%=2; n=n%2;

Operadoresyexpresionesdeasignación

6

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 98: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Expresiones• Son expresiones validas aquellas que utilicen de maneraadecuada algún tipo de operador, y el resultado de suevaluación dependerá del orden de los operadores en laexpresión, su prioridad y asociatividad.

Expresión en C Significadoa=a+5*b; a=a+(5*b)x*=y+1; x=x*(y+1)x=++n; x=n+1 y n=n+1

y=n‐‐*5+n; y=((n‐1)*5)+n y n=n‐1z=n+1*45+10.4E‐10*6 z=n+(1*45)+(10.4E‐10*6)

z=(n+1)*(45+10.4E‐10)*6 z=(n+1)*(45+10.4E‐10)*6x+=x*(10.5E11+x); x=x+(x*10.5E11)+x

b=z=x=10.5; b=10.5 y z=10.5 y x=10.57

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 99: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Son expresiones aritméticas invalidas lassiguientes.

Expresión en C Posible significado a dar

a=a+5*b=4; a=a+(5*b) y b=4

x*=y+1++; x=x*(y+2)

x=++n‐‐; x=n+1 y n=n‐1

y=n‐‐*5++n; y=((n‐1)*6)+n y n=n‐1

z=n+1*45+10.4x10^‐10*6 z=n+(1*45)+(10.4E‐10*6)

z=(n+1)*(45+10.4E‐10)*6=x

z=(n+1)*(45+10.4E‐10)*6 y x=z

++x=x*(10.5E11+x++); x=x+1+x+(x*10.5E11)+x; 8

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 100: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Casting (Moldeado de variables)

• Debido a que el lenguaje C es un lenguajefuertemente tipificado, es necesario estarconsientes de las asignaciones que se realizan entredistintos tipos de datos.

• Aunque sintácticamente el lenguaje permite realizarasignaciones entre variables de distintos tipos dedatos es necesario realizar de manera conscienteestas asignaciones y apoyarse de la operación demodelado o cast.

9

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 101: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

(cast)• b=(int)a; //Antes de realizar la asignación a

"b" se moldea a "a" como entero.

• b=(unsigned int)k; //Antes de realizar laasignación a "b" se moldea a "k" como enterosin signo.

• c=(float)g; //Antes de realizar la asignación a"c" se moldea a "g" como flotante.

• c=(char)j; //Antes de realizar la asignación a"c" se moldea a "j" como char.

10

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 102: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Expresionescondicionales;operadoresrelacionalesylógicos• Si se tienen expresiones entre operadores derelación, se puede decir que dichas expresionesson condicionales, las cuales a su vez puedenestar unidas mediante operadores lógicos paraobtener una condición múltiple.

• Los operadores de relación tienen la mismaprecedencia y esta esta por debajo de losoperadores aritméticos.

• Las expresiones condicionales son evaluadas deizquierda a derecha y si se encuentranoperadores lógicos son tratados en ese orden. 11

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 103: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

OperadoresRelacionales

Operador Nombre Descripción

== Igual a if (a==‘s’)

!= Diferente de if (a!=null)

> Mayor que if (a>0.5)

< Menor que if (a<2l)

>= Mayor o igual que if (a>=2f)

<= Menor o igual que if (a<=3) 12

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 104: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

OperadoresLógicos

Operador Nombre Descripción

&& Y (AND) if ((a>3) && (a<9))

|| O (OR) if ((a==2) || (a==3))

! NEGADO (NOT)

if (!(a==3)) es igual aif (a!=3)

Importante: Cuando se evaluá una condicional, los valores que se obtienen son:  

Si es FALSA se obtiene cero. Si es VERDADERA se obtiene algo diferente de cero.

13

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 105: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Ejemplodecondicionales;operadoresrelacionalesylógicos

#include<stdio.h>#include<math.h>int main(void){

const float pi=3.1416;float distancia,x1=10,y1=11,x2=20,y2=16;

//Cálculo de la distancia entre dos puntosdistancia=sqrt(pow((x2-x1),2)+pow((y2-y1),2));

if(distancia>0&&x2-x1<0&&y2-y1<0)printf("\nEl punto P2(%.2f,%.2f) esta debajo de

P1(%.2f,%.2f)",x2,y2,x1,y1);if(distancia>0&&x2-x1>0&&y2-y1>0)

printf("\nEl punto P2(%.2f,%.2f) esta por encima de P1(%.2f,%.2f)",x2,y2,x1,y1);

if(distancia==0)printf("\nEl punto P2 y P1 están en las mismas

coordenadas(%.2f,%.2f)",x2,y2);return 0;

} 14

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 106: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Operacionesparamanejodebits• El lenguaje C proporciona seis operadores para manejode bits; sólo pueden ser aplicados a variable integrales,esto es, char, short, int y long, con o sin signo.

• No se debe confundir el operador & con el operador &&, & es eloperador Y sobre bits, && es el operador lógico Y. Similarmentelos operadores | y ||.

• El operador unario ~ sólo requiere un argumento a la derechadel operador.

• Los operadores de desplazamiento, >> y <<, mueven todos losbits en una posición hacia la derecha o la izquierda undeterminado número de posiciones.

• Como los operadores desplazan bits en un sentido, lacomputadora trae ceros en el otro extremo. Se debe recordarque un desplazamiento no es una rotación: los bits desplazadosen un extremo no vuelven al otro. Se pierden y los ceros traídoslos reemplazan.

15

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 107: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

OperadoresdeBits

Operador Nombre Descripción<< Corrimiento a la izquierda b=a>>2;

>> Corrimiento a la derecha b=a<<3;

& Y (AND) entre bits c=a&128;

| O (OR) entre bits c=a|0x0a;

~ Complemento A1 c=~a;

^ O exclusivo (XOR) c=^a;16

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 108: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Operacionesdelmanejodebits• El operador AND de bits (&) a menudo es usadopara enmascarar álgun conjunto de bits.

• El operador OR (|) es empleado para encenderbits.

• El operador OR exclusivo (^) pone uno en cadaposición donde sus operandos tienen bitsdiferentes.

• El operador unario (~) realiza el complementoA1; esto es convierte cada bit 1 en un bit 0 yviceversa. 17

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 109: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Los operadores << y >> realizan corrimientos anivel de bits, ya sea a la izquierda o derecha.

• Una aplicación que tienen los operadores dedesplazamiento de bits es para realizarmultiplicaciones y divisiones rápidas con enteros.Como se ve en la siguiente tabla, donde undesplazamiento a la izquierda es multiplicar por2 y uno a la derecha dividir por 2.

• Los desplazamientos son mucho más rápidos quela multiplicación actual (*) o la división (/) pordos. Por lo tanto, si se quieren multiplicaciones odivisiones rápidas por 2 se usandesplazamientos. 18

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 110: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

char x Ejecución Valor de xx = 7;  0 0 0 0 0 1 1 1  7x << 1; 0 0 0 0 1 1 1 0  14x << 3; 0 1 1 1 0 0 0 0  112x << 2; 1 1 0 0 0 0 0 0  192x >> 1; 0 1 1 0 0 0 0 0  96x >> 2; 0 0 0 1 1 0 0 0  24

•Multiplicaciones y divisiones por 2 al realizarcorrimientos (<< y >>).

19

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 111: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Ejemplo:Operacionesdelmanejodebits

#include<stdio.h>int main(void){

int byte=0xFF;printf("\nEl valor de byte es: %4X H",byte);byte&=0x00;printf("\nEl valor de byte es: %4X H",byte);byte|=0xFF;printf("\nEl valor de byte es: %4X H",byte);byte>>=1;printf("\nEl valor de byte es: %4X H",byte);byte<<=2;printf("\nEl valor de byte es: %4X H",byte);return 0;

} 20

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 112: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

OperadoresdeAsignaciónparabits

Operador Abreviado No Abreviado<<= n<<=2; n=n<<2;>>= n>>=2; n=n>>2;&= n&=0x0a; n=n&0x0a;|= n|=7; n=n|7;^= n^=0x03; n=^0x03;= n=0x7f; n=0x7f;

Nota:0x7f, 0x0a, 0x03 son un números hexadecimales.

21

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 113: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Lalibreríaestándar<math.h>•math.h es un archivo de cabecera de labiblioteca estándar del lenguaje deprogramación C diseñado para operacionesmatemáticas básicas.

•Muchas de sus funciones incluyen el uso denúmeros en coma flotante.

• Una nota importante: si se está programando enC/C++ bajo Linux, y se utiliza uno de loscompiladores nativos de este sistema operativo(gcc o g++), es necesario incluir, al compilar, laopción ‐lm, dado que, de lo contrario, elcompilador generará un error. 22

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 114: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• La biblioteca math.h contiene la definiciónde muchas funciones matemáticas útiles. Elsiguiente es un listado breve de algunasfunciones.

ceil(x) Redondea al entero máspequeño no menor que x.cos(x)Coseno de x.exp(x) ex.fabs(x)Valor absoluto de x.floor(x)Redondea al entero másgrande no mayor que x.log(x)Logaritmo natural de x.log10(x)Logaritmo base 10 de x.

pow(x,y) xy.sin(x) Seno de x.sqrt(x) Raíz cuadrada de x.tan(x)Tangente de x.tanh(x)Tangente hiperbólica de x.cosh(x)Coseno hiperbólico de x.sinh(x) Seno hiperbólico de x.fmod(x) Resto del punto flotante de x.

*Todas las funciones en las que participan ángulos toman y devuelven radianes.*Todas operan con parámetros de tipo double (también se soportan flotantes) y devuelven resultados de tipo double (pueden guardarse como flotantes). 23

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 115: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Constantes<math.h>• La biblioteca de matemáticas define variasconstantes. Siempre es aconsejable usar estasdefiniciones.

• M_E La base de los logaritmos naturales e.• M_LOG2E El logaritmo de e de base 2.• M_LOG10E El logaritmo de e de base 10.• M_LN2 El logaritmo natural de 2.• M_LN10 El logaritmo natural de 10.• M_PI pi• M_PI_2 pi/2• M_PI_4 pi/4• M_1_PI 1/pi• M_2_PI 2/pi• M_2_SQRTPI 2/sqrt(pi)• M_SQRT2 La raíz cuadrada positiva de 2• M_SQRT1_2 La raíz cuadrada positiva de 1/2

24

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 116: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Ejemploempleando<math.h>#include<stdio.h>#include<math.h>int main(void){

const float pi=3.1416;float distancia,x1=1.5,y1=-10,x2=2.5,y2=20;//Mostrando la diferencia de exactitud entre pi y M_PIprintf("\nEl seno de pi es: %f",sin(pi));printf("\nEl seno de M_PI es: %f",sin(M_PI));

//Cálculo de la distancia entre dos puntosdistancia=sqrt(pow((x2-x1),2)+pow((y2-y1),2));printf("\nLa distancia entre P2(%.2f,%.2f) y P1(%.2f,%.2f)

es: %.4f",x2,y2,x1,y1,distancia);return 0;

}

*Su compilación en Linux sería: gcc programa.c –lm –o programa 25

Algo

ritmia  y program

ación estructurada

1.5 Re

presen

tación

 de expresione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 117: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

UnidadI"Conceptosbásicosyherramientasdeprogramación"

1.6Flujodeejecución

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 118: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• Estructuras secuenciales• Estructuras selectivas• if• If else• If ‐else if• switch‐case• operador ?

• Estructuras iterativas• while• do‐while• For

• Sentencias de salto• return• goto• break• continue

2

Algo

ritmia  y program

ación estructurada

1.6 Flujo de

 ejecución

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 119: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Estructurassecuenciales• La secuencia de pasos es la más fácil de lasestructuras de control, ya que en lenguaje Cbasta con escribir los pasos en ordendescendente y las instrucciones se ejecutaránde manera secuencial.

//01 Declarar tres variables enterasint x, y, z;//02 Igualar las tres variables enteras con VALORx=y=z=VALOR;//03 Ejecutar la función modulo3Dmod3=modulo3D(x,y,z);//04 Mostrar en la salida estandar el rtesultadoprintf(“\nEl módulo es: %lf”,mod3);//05 Salir del programareturn(0); 3

Algo

ritmia  y program

ación estructurada

1.6 Flujo de

 ejecución

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 120: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Estructurasdeselección• Las estructuras de selección (o bifurcación) seutilizan para elegir entre diversos cursos deacción.

• En C hay tres tipos de estructuras deselección: if (selección simple), if…else(selección doble) y switch (selecciónmúltiple)

4

Algo

ritmia  y program

ación estructurada

1.6 Flujo de

 ejecución

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 121: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Selección(if)if (expresión)sentencia;

if (expresión){sentencia1;sentencia2;}

Nota: una expresión en C estodo aquello que regresa unvalor. Como por ejemplo unacondición lógica, operacionesaritméticas, llamadas afunciones, una variable, unaconstante (numérica, carácter,etc.).

5

Algo

ritmia  y program

ación estructurada

1.6 Flujo de

 ejecución

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 122: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Selección(if – else)if (expresión)sentencia;elsesentencia;

if (expresión){sentencia1;sentencia2;}else{sentencia1;sentencia2;} 6

Algo

ritmia  y program

ación estructurada

1.6 Flujo de

 ejecución

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 123: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Selección(if – else if)if (expresión)sentencia;else if (expresión)sentencia;…elsesentencia;

if (expresión){sentencia1;sentencia2;}else if{sentencia1;sentencia2;}…else{sentencia1;sentencia2;}

7

Algo

ritmia  y program

ación estructurada

1.6 Flujo de

 ejecución

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 124: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Selección(switch‐case)switch(expresión){case 1:  sentencias;

break;case 2:  sentencias;

break;:case n:  sentencias;

break;default: sentencias_default;

break;}

8

Algo

ritmia  y program

ación estructurada

1.6 Flujo de

 ejecución

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 125: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Selección(operador?)(expresión)? sentencia1 : sentencia2;expresión? sentencia1 : sentencia2;

Seejecuta:sentencia1 siexpresión =verdaderosentencia2 siexpresión =falso.Esunoperadorternarioypuedeutilizarseparaasignarvariables:Var= (expresión)? sentencia1:sentencia2; 9

Algo

ritmia  y program

ación estructurada

1.6 Flujo de

 ejecución

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 126: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Selección(ejemplos)if (calificacion>=60){

printf ("Alumno Aprobado");}else{

printf ("Alumno Reprobado");}

if (calificacion>=90){

printf ("Alumno de muy buena calificación");}else if (calificacion>=70&& calificacion<90){

printf ("Alumno regular");}else if (calificacion>=60&& calificacion<70){

printf ("Alumno");}else{

printf ("No es alumno");}

10

Algo

ritmia  y program

ación estructurada

1.6 Flujo de

 ejecución

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 127: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Estructurasiterativas• Estas estructuras permiten repetir una serie de veces laejecución de unas líneas de código.

• Esta iteración se realiza o bien un número determinadode veces o bien hasta que se cumpla una determinadacondición de tipo lógico o aritmético.

• En C hay 3 tipos de instrucciones de repetición: while,do…while y for.

11

Algo

ritmia  y program

ación estructurada

1.6 Flujo de

 ejecución

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 128: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Estructuraiterativa(while)• La sentencia while permite repetir un bloque de instrucciones.

• La sintaxis del ciclo while es:

while(condición)

{

sentencia o bloque;

};

• Si la condición se cumple se ejecutan las sentencias del bloquey se regresa el flujo de control a evaluar nuevamente lacondición. El proceso se repite hasta que la condición sea falsa.

• El ciclo puede ejecutarse 0 veces si la condición no se cumple.

condición sentencias

verdadero

falso

12

Algo

ritmia  y program

ación estructurada

1.6 Flujo de

 ejecución

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 129: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Estructuraiterativa(do‐while)• El ciclo do‐while es similar al ciclo while excepto que lacondición se realiza al final del ciclo, esto fuerza a que seejecute por lo menos una vez.

do{

sentencias;

}while(condición);

condición

sentencias

verdadero

falso 13

Algo

ritmia  y program

ación estructurada

1.6 Flujo de

 ejecución

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 130: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Modeladodelaiteración(For)• La sentencia for permite definir fácilmente ciclos controladospor contador.

for(expresion1; expresion2; expresion3){

sentencias;}• Esta es equivalente a la siguiente sentencia while:

expresion1;while(expresion2){

sentencias;expresion3;

}

expresion1 = sentencia de iniciaciónexpresion2 = condición de terminaciónexpresion3 = sentencia de incremento

condición sentenciasexpresion3

verdadero

falso

expresion1

14

Algo

ritmia  y program

ación estructurada

1.6 Flujo de

 ejecución

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 131: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

SentenciasdesaltodeC• En C hay sentencias para evitar la ejecución estrictamentesecuencial del programa. En general (sentencias goto, breaky continue) no deben utilizarse para elaborar programasestructurados, aunque pueden ser útiles si se justifica enforma apropiada su aplicación en un código.

• return <expresión>;• Se usa para devolver el control del flujo de ejecución desde unafunción, siendo <expresión> el valor (dato) retornado por ella.

• goto <etiqueta>; …. <etiqueta>: <acciones>• Permite efectuar un salto incondicional hasta otro punto delprograma, indicado por una etiqueta.

15

Algo

ritmia  y program

ación estructurada

1.6 Flujo de

 ejecución

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 132: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• break;• Se usa para romper el flujo en un switch‐case o terminar sentenciasiterativas (for, while, do‐while).

• continue;• Se puede usar en un bloque iterativo (for, while, do‐while) paraforzar una nueva iteración del ciclo ignorando las sentencias queestán a partir de continue y hasta el fin del ciclo.

#include<stdio.h>int main(void){

printf("\nEl programa ha iniciado");printf("\nInstrucción 1");printf("\nInstrucción 2");goto se_me_antoja;printf("\nInstrucción 3");printf("\nInstrucción 4");

se_me_antoja:printf("\nInstrucción 5");

}

16

Algo

ritmia  y program

ación estructurada

1.6 Flujo de

 ejecución

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 133: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

#include<stdio.h>int main(void){

short i;for(i=0;i<100;i++){

printf("\n%d",i);break;printf("\nDespues del break");

}}

#include<stdio.h>int main(void){

short i;for(i=0;i<100;i++){

printf("\n%d",i);continue;printf("\nDespues del continue");

}}

17

Algo

ritmia  y program

ación estructurada

1.6 Flujo de

 ejecución

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 134: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

UnidadII“Modularidad"

2.1MetodologíaDivideyvencerás

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 135: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• Divide y vencerás• Ventajas de dividir un problema

• Funciones y procedimientos

2

Algo

ritmia  y program

ación estructurada

2.1 Metod

olog

ía Divide y vencerás

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 136: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Divideyvencerás• C fue diseñado como lenguaje para soportar el paradigmade programación estructurada, el cual permite entre otrascosas diseñar algoritmos mediante la metodología divide yvencerás, la cual dice:• Para un problema complejo, abstraerlo y dividirlo en pequeñossubproblemas.

• Cada subproblema dividirlo en otros más pequeños y fáciles deentender. Y continuar así hasta tener dicho problema complejoparticionado en pequeños módulos comprensibles yreutilizables para otros problemas.

3

Algo

ritmia  y program

ación estructurada

2.1 Metod

olog

ía Divide y vencerás

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 137: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Ventajasdedividirunproblema• Abstraer un problema complejo mediante estametodología trae muchos beneficios:

• Entender mejor un problema complejo.• Ir aislando de manera especifica cada subproblema.• Escribir algoritmos correctos y más eficientes.• Producir programas que son más fáciles de mantener.• Escribir programas que son reutilizables.

• En la programación estructurada la modularización deuna solución es posible al emplear funciones yprocedimientos. 4

Algo

ritmia  y program

ación estructurada

2.1 Metod

olog

ía Divide y vencerás

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 138: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Funciones• Son elementos que realizan una tarea en particulary retornan un valor a la salida.

• Son utilizadas como expresiones primarias y por lotanto formar parte de expresiones más complejas,es decir, se pueden utilizar para realizar operacionescon el valor que retornan a la salida. Por ejemplo,sumarse, restarse, multiplicarse, dividirse, etc.

float valor;valor = 2*pow(x,y)+sqrt(4.23245)+7*sin(2*3.1416);

5

Algo

ritmia  y program

ación estructurada

2.1 Metod

olog

ía Divide y vencerás

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 139: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Procedimientos• Son elementos que realizan una tarea en particularpero que no retornan un valor a la salida y puedenrecibir o no parámetros a la entrada.

• Son utilizadas como expresiones instrucción y seinvocan cuando se requiere que el programa realiceesa tarea en particular.

printf( “Imprimir una cadena de caracteres” );scanf( “%f”, &x );//Capturar el valor de una variable

6

Algo

ritmia  y program

ación estructurada

2.1 Metod

olog

ía Divide y vencerás

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 140: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

UnidadII“Modularidad"

2.2Elconceptodefunción,procedimientoymodulo

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 141: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• Funciones y procedimientos• Concepto de función en C• Funciones en C• Funciones y procedimientos en C

• Estructura de una función en C• Llamada o invocación a una función• Prototipo o declaración de funciones• Definición de funciones

2

Algo

ritmia  y program

ación estructurada

2.2 El con

cepto de

 función, procedimiento y mod

ulo

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 142: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Funciones• Son elementos que realizan una tarea en particulary retornan un valor a la salida.

• Son utilizadas como expresiones primarias y por lotanto formar parte de expresiones más complejas,es decir, se pueden utilizar para realizar operacionescon el valor que retornan a la salida. Por ejemplo,sumarse, restarse, multiplicarse, dividirse, etc.

float valor;valor = 2*pow(x,y)+sqrt(4.23245)+7*sin(2*3.1416);

3

Algo

ritmia  y program

ación estructurada

2.2 El con

cepto de

 función, procedimiento y mod

ulo

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 143: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Procedimientos• Son elementos que realizan una tarea en particularpero que no retornan un valor a la salida y puedenrecibir o no parámetros a la entrada.

• Son utilizadas como expresiones instrucción y seinvocan cuando se requiere que el programa realiceesa tarea en particular.

printf( “Imprimir una cadena de caracteres” );scanf( “%f”, &x );//Capturar el valor de una variable

4

Algo

ritmia  y program

ación estructurada

2.2 El con

cepto de

 función, procedimiento y mod

ulo

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 144: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

ConceptodefunciónenC• Una función es un miniprograma dentro de un programamás general, en otras palabras, una función es un pequeñofragmento de código “funcional” que realiza una tareaespecifica.

Desarrollar un programa utilizando funciones ayuda a:• Ahorrar espacio eliminando el código repetido.• Hace más fácil la programación.• Proporcionan un medio para dividir un proyecto grande enpequeños módulos más entendibles y manejables.

• Permiten construir nuevos sistemas a partir de otros yadesarrollados.

• Facilitan la labor de planeación, desarrollo ydocumentación de los programas.

5

Algo

ritmia  y program

ación estructurada

2.2 El con

cepto de

 función, procedimiento y mod

ulo

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 145: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

FuncionesenC• Un programa en C puede constar de una o varias definicionesde funciones.

• Cada una de estas funciones realiza una tarea en particular.

• Las funciones en C no se pueden anidar, es decir, no se puededeclarar el cuerpo de una función dentro de otra función.

• En C todas las funciones son externas y globales, es decir,pueden ser invocadas desde cualquier parte del programa,incluso dentro de otra función.

6

Algo

ritmia  y program

ación estructurada

2.2 El con

cepto de

 función, procedimiento y mod

ulo

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 146: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

FuncionesyprocedimientosenC• Las funciones en C provienen de las llamadas asubrutinas de Fortran, sin embargo, su uso intensivose introdujo con los procedimientos y funciones deAlgol y Pascal.

• Las funciones en C se pueden utilizar para modelar losconceptos de la modularidad como:• Funciones (Retornando un valor y recibiendo o no parámetros)

• Procedimientos (No retornando ningún valor y recibiendo o no parámetros)

7

Algo

ritmia  y program

ación estructurada

2.2 El con

cepto de

 función, procedimiento y mod

ulo

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 147: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

EstructuradeunafunciónenC• La estructura de una función es:tipo_de_retorno nombreFuncion( listaParámetros ){

/**Cuerpo de la función*/return expresión;

}Donde:

• tipo_de_retorno: Es el valor devuelto por la función o lapalabra reservada void por si la función no retorna ningún valor.

• nombreFuncion: Es el identificador o nombre de la función.

• listaParametros: Es la lista de parámetros que la funciónrecibe como entrada, separados por comas.

• Expresión: Es el valor que regresa la función.8

Algo

ritmia  y program

ación estructurada

2.2 El con

cepto de

 función, procedimiento y mod

ulo

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 148: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Una llamada a una función produce la ejecución delas expresiones del cuerpo de la función y unretorno a la unidad de programa invocadoradespués de que la ejecución de la función hayaterminando, normalmente cuando se encuentra unasentencia return.

La sentencia return termina inmediatamente la funciónen la se ejecuta.

tipo_de_retorno nombreFuncion( listaParámetros ){

/**Cuerpo de la función*/return expresión;

}9

Algo

ritmia  y program

ación estructurada

2.2 El con

cepto de

 función, procedimiento y mod

ulo

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 149: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Nombre o identificador de una función:Por convención el nombre de una función debe comenzarcon una letra en mayúscula o con un guión bajo ( _ ) ypuede estar formado de una longitud n se recomienda unalongitud no máxima de 32 caracteres alfanuméricos,mayúsculas, minúsculas y guiones bajos, pero sin espaciosintermedios.

• Tipo de retorno:Una función siempre devuelve un tipo de valor a la salida,este tipo de retorno puede ser uno de los datos simples de Co un apuntador a cualquier tipo de dato, sin embargo, si unafunción no devuelve un resultado, se utiliza el tipo void,que se considera como un tipo de dato nulo.

10

Algo

ritmia  y program

ación estructurada

2.2 El con

cepto de

 función, procedimiento y mod

ulo

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 150: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Una función devuelve un único valor, el valor devuelto(expresión) puede ser cualquier tipo de dato conocido en C(simple o estructurado). Sin embargo, también se puederetornar valores múltiples devolviendo un apuntador a unaestructura o un arreglo.

• Una función puede tener cualquier numero de sentencias return, enel momento que el programa encuentre una de estas sentencias,devolverá el control a la sentencia invocadora.

• Sí no se encuentra ninguna sentencia return la ejecución de lafunción continuará hasta el final de dicha función, es decir, hasta quese encuentre la llave de cerrado “}”, en ese momento se devolverá elcontrol a la sentencia invocadora.

11

Algo

ritmia  y program

ación estructurada

2.2 El con

cepto de

 función, procedimiento y mod

ulo

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 151: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Parámetros de entrada formales:En C sólo se permite el paso de parámetros por valor yúnicamente de los tipos de datos básicos. No obstante, Cutiliza el paso de apuntadores para el paso de parámetrospor referencia, es decir, se puede pasar apuntadores a tiposde datos simples, estructuras, arreglos e incluso a funciones.(Se retomará con el tema de apuntadores).

El paso de parámetros en una función es opcional, pero si seincluyen, deben estar declarados entre los paréntesis de ladeclaración de la función y separados por comas, es decir,cada parámetro debe tener una declaración independiente.

12

Algo

ritmia  y program

ación estructurada

2.2 El con

cepto de

 función, procedimiento y mod

ulo

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 152: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Llamadaaunafunción• Las funciones, para poder ser ejecutadas, han de serllamadas o invocadas. Cualquier instrucción o expresiónpuede tener una llamada a función que redirigirá el controldel programa a la función invocada.

• Normalmente la invocación a una función ser realiza desdela función principal main(), sin embargo, también puedenser invocadas desde otras funciones, incluso desde ellasmismas “recursividad”.

• Una función invocada recibe el control del programa, seejecuta y cuando termina (cuando se alcanza una sentenciareturn o la llave de cierre de la función) el control delprograma retorna a la función principal o a la funciónllamadora.

13

Algo

ritmia  y program

ación estructurada

2.2 El con

cepto de

 función, procedimiento y mod

ulo

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 153: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Control del flujodel programa

14

Algo

ritmia  y program

ación estructurada

2.2 El con

cepto de

 función, procedimiento y mod

ulo

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 154: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Prototipoodeclaracióndefunciones• A la declaración de una función se le llama prototipo. Losprototipos de funciones comúnmente van declaradas en lacabecera del código después de la definición de las macros delpreporcesador (directivas #include y #define) pero antes delmétodo main() y con terminación en (;).

• El prototipo consta de los siguientes elementos:

tipo_retorno nombre_funcion(lista_prototipos_parametros);

• tipo_de_retorno: Es el valor devuelto por la función o la palabra reservadavoid por si la función no retorna ningún valor.

• nombreFuncion: Es el identificador o nombre de la función.

• lista_prototipos_parametros:Es la lista de parámetros que la funciónrecibe como entrada, separados por comas. Colocar el identificador de losparámetros es opcional, sin embargo se recomienda colocarlos para mejorentendimiento de la función

15

Algo

ritmia  y program

ación estructurada

2.2 El con

cepto de

 función, procedimiento y mod

ulo

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 155: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• El prototipo de la función sirve para que el compiladorrealice la comprobación de tipos de dato de retorno y envío.

• Cuando se realiza una invocación a una función, elcompilador ya conoce cuales son el numero y los tipos dedato que la función debe recibir, confirma que los datosenviados a la función coincidan con los que conocepreviamente y si no coinciden se generara un error entiempo de compilación.

• El compilador sólo utiliza la información de los tipos de datoque debe recibir una función. Los identificadores de dichosdatos son irrelevantes para tal proceso, sin embargo, serecomienda utilizarlos con propósito de hacer máscomprensible la utilidad de la función.

16

Algo

ritmia  y program

ación estructurada

2.2 El con

cepto de

 función, procedimiento y mod

ulo

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 156: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Definicióndefunciones• La declaración de un prototipo de función es diferente a ladefinición de dicha función.

• La declaración contiene sólo la cabecera de la función, es decir, su prototipo y se listan sus características.

• La definición significa colocar el cuerpo de la función, es decir, definir la estructura del código de la función en alguna parte del programa, pero fuera del método principal main().

• La declaración del prototipo de la función sirve para elcompilador pueda validar que número y el tipo de datos deentrada de la función coincidan con los que se utilizan en lallamada o invocación a dicha función.

17

Algo

ritmia  y program

ación estructurada

2.2 El con

cepto de

 función, procedimiento y mod

ulo

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 157: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Cuando se define el código de la función, es este momento,si es necesario colocar tanto tipo de datos y susidentificadores ya que se le estará indicando al compiladorque utilice dichos identificadores como elementos deprocesamiento para que la función realice la tareaespecificada.

#include <stdio.h>double calcularCuadrado( double );

int main( void ){

double x = 11.5;double resultado;resultado = calcularCuadrado( x );printf( "El cuadrado de x es: %8.4lf \n", resultado );return 0;

}double calcularCuadrado( double numero ){

return numero*numero;}

Declaración del Prototipode la función sin identificadores en los tipos de dato

Definición de la función,en este momento secolocan los identificadores en los tipos de dato

18

Algo

ritmia  y program

ación estructurada

2.2 El con

cepto de

 función, procedimiento y mod

ulo

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 158: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

UnidadII“Modularidad"

2.3Elpasodeparámetrosyvaloresderetorno

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 159: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• Parámetros de una función• Paso por valor• Paso por referencia

• Ámbito de variables• Variables locales• Variables globales

2

Algo

ritmia  y program

ación estructurada

2.3 El paso de

 parám

etros y

 valores de retorno

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 160: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Parámetrosdeunafunción• C siempre utiliza el paso de parámetros por valor, para pasarla copia del valor de una variable a una función. Sinembargo, C utiliza el paso de apuntadores para el paso deparámetros por referencia. (Se retomará con el tema deapuntadores).

Paso de parámetros por valor.El paso por valor o paso por copia, significa que cuando Ccompila la función y el código que hace la llamada a lafunción, la función recibe una copia de los valores de losparámetros, es decir, si se modifica el valor de dichosparámetros dentro de la función, dichos cambios sólo seránvalidos dentro de la función pero no fuera de ella.

3

Algo

ritmia  y program

ación estructurada

2.3 El paso de

 parám

etros y

 valores de retorno

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 161: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Parámetrosdeunafunción– Pasoporvalor• En la técnica del paso de parámetros por valor, lamodificación de la variable (parámetro recibido) dentro de lafunción receptora no afecta el valor original del parámetroenviado al momento de la invocación a dicha función.

#include <stdio.h>double calcularCuadrado( double );

int main( void ){

double x = 11.5;double resultado;resultado = calcularCuadrado( x );printf( "El cuadrado de %d es: %8.4lf \n", x, resultado );return 0;

}double calcularCuadrado( double x ){

int aux = x;x++;return aux*aux;

}

Parámetro enviado

Parámetro copia delparámetro enviado

Modificación al valor del parámetro copia

4

Algo

ritmia  y program

ación estructurada

2.3 El paso de

 parám

etros y

 valores de retorno

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 162: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Ámbitodevariables• Existen dos tipos de ámbito en la variables que puede manejar C,estas son las variables locales y globales.

• Variables locales son aquellas que son declaradas dentro delámbito de una función y su uso se restringe dentro de la mismafunción, se dice entonces que la variable es local a esa función.

• Esto implica que todas las variables que se declaren dentro deuna función sólo van a poder ser manipuladas dentro de dichafunción y no podrán ser referenciadas desde fuera de la función.

• Cualquier variable que se defina dentro de las llaves del cuerpode una función el compilador la interpretará como una variablelocal a esa función.

• Si otra función declara otra variable con el mismo identificadorentonces dichas variables serán “tocayas” más no iguales.

5

Algo

ritmia  y program

ación estructurada

2.3 El paso de

 parám

etros y

 valores de retorno

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 163: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

•Variables globales es aquella que se define fuera delcuerpo de cualquier función, normalmente después de ladefinición de las directivas del preprocesador (#include y#define).

• El ámbito de una variable global son todas las funciones quecomponen el programa.

• Cualquier función puede acceder a dichas variables para leer ymodificar su valor. Es decir, se puede hacer referencia a sudirección de memoria en cualquier parte del programa.

• No puede haber declaración de variables globales con el mismoidentificador.

• Las variables globales pueden ser inicializadas en el mismoinstante que se declaran.

• Puede haber variables globales de cualquier tipo de dato quepuede manejar C.

6

Algo

ritmia  y program

ación estructurada

2.3 El paso de

 parám

etros y

 valores de retorno

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 164: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Ámbitodevariables– variablesglobales• La declaración de las variables globales es la mismaque la declaración de una variable local, es decir:#include <stdio.h>#define PI 3.1416<tipo de dato> <identificador>;<tipo de dato> <identificador> = <valor>;int main( void ){

...}

• Si una función declara una variable local con elmismo identificador que una variable global(tocayas), entonces, el compilador le dará mayorprioridad al uso de la variable local que la global.

Constante también tomada Como una variable global a partir de su declaración

7

Algo

ritmia  y program

ación estructurada

2.3 El paso de

 parám

etros y

 valores de retorno

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 165: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

UnidadII“Modularidad"

2.4Reutilizacióndecódigo

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 166: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• Reutilización de código• Tipos de reutilización• Copiar y pegar• Reutilizar código en C• Concepto de Librería en Programación• Biblioteca estándar de C• Creación de bibliotecas para C• Generación de código ejecutable• Generando una librería para C

2

Algo

ritmia  y program

ación estructurada

2.4 Re

utilización

 de código

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 167: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Reutilizacióndecódigo• La reutilización de código se refiere alcomportamiento y a las técnicas que garantizan queuna parte o la totalidad de un programa informáticoexistente se puedan emplear en la construcción deotro programa. De esta forma se aprovecha eltrabajo anterior, se economiza tiempo, y se reducela redundancia.

3

Algo

ritmia  y program

ación estructurada

2.4 Re

utilización

 de código

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 168: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Tiposdereutilización• Reutilización oportunistas• Ocurre cuando al iniciar un proyecto, el programadorse da cuenta de que hay componentes existentes quese puede reutilizar.

• Reutilización planificada• Sucede cuando un equipo planea estratégicamentelos diseños de componentes que serán reutilizablesen futuros proyectos.

4

Algo

ritmia  y program

ación estructurada

2.4 Re

utilización

 de código

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 169: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Copiarypegar• La manera más fácil de reutilizar código es copiarlo total oparcialmente desde el programa antiguo al programa endesarrollo. Pero es trabajoso mantener múltiples copias delmismo código, por lo que en general se elimina laredundancia dejando el código reusable en un único lugar, yllamándolo desde los diferentes programas. Este proceso seconoce como abstracción.

• La abstracción puede verse claramente en las bibliotecas desoftware, en las que se agrupan varias operaciones comunesa cierto dominio para facilitar el desarrollo de programasnuevos. Hay bibliotecas para convertir información entrediferentes formatos conocidos, acceder a dispositivos dealmacenamiento externos, proporcionar una interfaz conotros programas, manipular información de maneraconocida (como números, fechas, o cadenas de texto). 5

Algo

ritmia  y program

ación estructurada

2.4 Re

utilización

 de código

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 170: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

ReutilizarcódigoenC• Para que el código existente se pueda reutilizar,debe definirse alguna forma de comunicación ointerfaz. Esto se puede dar por llamadas a unafunción o procedimiento.

• En lenguaje C como sabemos únicamente podemosmodelar los procedimientos con funciones queretornan un dato tipo void, estas funciones deberánestar siempre bien diseñadas para poder reutilizarlasen más programas. Si además las agrupamos segúnsu comportamiento puede formarse nuestraspropias librerías de funciones útiles para variosdesarrollos distintos.

6

Algo

ritmia  y program

ación estructurada

2.4 Re

utilización

 de código

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 171: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

ConceptodeLibreríaenProgramación• Es un conjunto de subprogramas utilizados paradesarrollar software.

• Las bibliotecas contienen código y datos, queproporcionan servicios a programas independientes,es decir, pasan a formar parte de estos. Esto permiteque el código y los datos se compartan y puedanmodificarse de forma modular.

7

Algo

ritmia  y program

ación estructurada

2.4 Re

utilización

 de código

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 172: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Algunos programas ejecutables pueden ser a la vezprogramas independientes y bibliotecas, pero lamayoría de estas no son ejecutables.

• Ejecutables y bibliotecas hacen referencias (enlaces)entre sí a través de un proceso conocido comoenlace, que por lo general es realizado por unsoftware denominado enlazador.

• Las bibliotecas o librerías, pueden ser clasificadas según el tipo de enlace que se realice para ser parte de un programa final en:• Bibliotecas estáticas• Bibliotecas dinámicas

8

Algo

ritmia  y program

ación estructurada

2.4 Re

utilización

 de código

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 173: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

BibliotecaestándardeC• La biblioteca estándar de C es una recopilación dearchivos cabecera y bibliotecas con funciones,estandarizadas por un comité de la OrganizaciónInternacional para la Estandarización (ISO), queimplementan operaciones comunes, tales como lasde entrada y salida o el manejo de cadenas. Adiferencia de otros lenguajes como COBOL, Fortran,o PL/1, C no incluye palabras clave para estas tareas,por lo que prácticamente todo programaimplementado en C se basa en la biblioteca estándarpara funcionar 9

Algo

ritmia  y program

ación estructurada

2.4 Re

utilización

 de código

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 174: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

CreacióndebibliotecasparaC• Es posible generar biblioteca para C generando nuestrospropios archivos cabecera y bibliotecas con funciones.

Archivos cabecera• Es un archivo, que el compilador incluye al procesaralgún código fuente, este contiene, normalmente, unadeclaración directa funciones, variables, u otrosidentificadores. Aquellos programadores que deseandeclarar identificadores estándares en más de un archivofuente pueden colocar esos identificadores en un únicoheader file, que se incluirá cuando el código quecontiene sea requerido por otros archivos. 10

Algo

ritmia  y program

ación estructurada

2.4 Re

utilización

 de código

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 175: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Bibliotecas con funciones• Son los códigos fuentes que definen las funciones delos archivos de cabecera y son independientes. Estospueden ser compilados por separados y tenersecomo el código fuente original o códigos objetoscapaces de ser enlazados por otros códigos fuentesque hagan uso de estas definiciones y programas.

Compilador Código objeto Enlazador Programa 

ejecutable

Biblioteca / Otros códigos objeto

Archivos de Cabecera / Cabeceras 

independientes

Código fuente

11

Algo

ritmia  y program

ación estructurada

2.4 Re

utilización

 de código

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 176: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Generacióndecódigoejecutable• Como se ve en la etapa de compilación de unlenguaje compilado, se obtiene un código objeto, elcuál contiene sólo la traducción del código fuente.Esto no es suficiente para ejecutar realmente elprograma. Es necesario incluir los archivos debiblioteca o módulos compilados de maneraindependiente.

Compilador Código objeto Enlazador Programa ejecutable

Biblioteca / Otros códigos objeto

Archivos de Cabecera / Cabeceras 

independientes

Código fuente

12

Algo

ritmia  y program

ación estructurada

2.4 Re

utilización

 de código

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 177: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

GenerandounalibreríaparaC• Generar los siguientes archivos, con los contenidos que semuestran y guardarlos con los nombres dados.

#include <stdio.h>#include "mi_libreria.h"

int main (void){

int n,res;printf("\nIntroduce un número entero")scanf("%d",n);

res=mi_funcion01(n);

printf("\nEl resultado es: %d",res)

return 0;}

programa.c 13

Algo

ritmia  y program

ación estructurada

2.4 Re

utilización

 de código

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 178: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

def_mi_libreria.c

#include "mi_libreria.h"

int mi_funcion01(int numero){

return numero*CONSTANTE;}

#define CONSTANTE 100

int mi_funcion01(int numero);

mi_libreria.h

• Generar el código objeto de la libreríagcc def_mi_libreria.c –c

• Compilar el programa gcc programa.c def_mi_libreria.o –o programa

14

Algo

ritmia  y program

ación estructurada

2.4 Re

utilización

 de código

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 179: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

UnidadII“Modularidad"

2.5Bibliotecasestándardefunciones

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 180: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• Introducción• Biblioteca estándar de C• Diseño de la biblioteca estándar de C• El estándar ANSI C• Historia de ANSI C

• Archivos de cabeceras de la biblioteca ANSI C• Funciones incorporadas del compilador• Biblioteca estándar de POSIX• The C Library Reference Guide

2

Algo

ritmia  y program

ación estructurada

2.5 Bibliotecas e

stán

dar d

e funcione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 181: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Introducción• El lenguaje de programación C, antes denormalizarse, no disponía de funcionalidades talescomo operaciones de entrada/salida (a diferenciade lenguajes tradicionales como Cobol y Fortran).

• Con el tiempo, las comunidades de usuarios de Cfueron compartiendo ideas, así como lasimplementaciones de lo que ahora se denomina lasbibliotecas estándar de C para proporcionar esasfuncionalidades.

3

Algo

ritmia  y program

ación estructurada

2.5 Bibliotecas e

stán

dar d

e funcione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 182: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

BibliotecaestándardeC• La biblioteca estándar de C (también conocida comolibc) es una recopilación de ficheros cabecera ybibliotecas con rutinas, estandarizadas por uncomité de la Organización Internacional para laEstandarización (ISO), que implementanoperaciones comunes, tales como las de entrada ysalida o el manejo de cadenas. A diferencia de otroslenguajes como COBOL, Fortran, o PL/1, C noincluye palabras clave para estas tareas, por lo queprácticamente todo programa implementado en Cse basa en la biblioteca estándar para funcionar. 4

Algo

ritmia  y program

ación estructurada

2.5 Bibliotecas e

stán

dar d

e funcione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 183: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

DiseñodelabibliotecaestándardeC• El nombre y las características de cada función, elprototipo, así como la definición de algunos tipos dedatos y macros, se encuentran en un ficherodenominado archivo de cabecera (con extensión ".h"),pero la implementación real de las funciones estánseparadas en un archivo de la biblioteca. Ladenominación y el ámbito de las cabeceras se hanconvertido en comunes, pero la organización de lasbibliotecas sigue siendo diversa, ya que éstas suelendistribuirse con cada compilador.

• Dado que los compiladores de C, a menudo, ofrecenfuncionalidades adicionales que no están especificadosen el ANSI C, la biblioteca de un compilador no siemprees compatible con el estándar ni con las bibliotecas deotros compiladores.

5

Algo

ritmia  y program

ación estructurada

2.5 Bibliotecas e

stán

dar d

e funcione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 184: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

ElestándarANSIC• La biblioteca estándar de ANSI C consta de 24 archivoscabecera hasta C99 y 29 en C11 que pueden ser incluidos enun proyecto de programación con una simple directiva. Cadacabecera contiene la declaración de una o más funciones,tipos de datos ymacros.

• En comparación con otros lenguajes de programación (comopor ejemplo Java) la biblioteca estándar es muy pequeña,está proporciona un conjunto básico de funcionesmatemáticas, de tratamiento de cadenas, conversiones detipo y entrada/salida por consola o por archivos.

• Hasta C99, no se incluyen, ni un conjunto de tipos de datoscontenedores básicos (listas, pilas, colas, ...), ni herramientaspara crear una interfaz gráfica de usuario (GUI), nioperaciones para trabajar en red.

6

Algo

ritmia  y program

ación estructurada

2.5 Bibliotecas e

stán

dar d

e funcione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 185: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Tanto Unix como C fueron creados en los laboratorios Bell deAT&T a finales de la década de los 60 y principios de los 70.

• Fue en los 70 cuando el lenguaje de programación Cacrecentó su popularidad. Muchas organizaciones yuniversidades crearon sus propias versiones del lenguajepara sus propios proyectos. A comienzos de los 80 seevidenciaron los problemas de compatibilidad derivados dela existencia de las múltiples implementaciones del lenguaje.

• En 1983 el Instituto Nacional Americano de EstándaresANSI, creo un comité para establecer una especificaciónestándar del lenguaje conocida como ANSI C. Este trabajoculminó con la creación del llamado estándar C89 en 1989.Una parte del estándar resultante fue un conjunto debibliotecas de software denominado bibliotecas estándar deANSI C.

HistoriadeANSIC

7

Algo

ritmia  y program

ación estructurada

2.5 Bibliotecas e

stán

dar d

e funcione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 186: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Posteriores versiones del C estándar han añadidoalgunos nuevos ficheros cabecera a la biblioteca.El soporte de estas nuevas extensiones varíasegún implementaciones.

• Las cabeceras <iso646.h>, <wchar.h> y<wctype.h> fueron añadidas con NormativaAddendum 1 (abreviado NA1), y fueronratificadas por el estándar en 1995.

• En 1999 se realizó una revisión del estándar quese denominó C99 a la que se añadieron lascabeceras <complex.h>, <fenv.h>, <inttypes.h>,<stdbool.h>, <stdint.h> y <tgmath.h>. 8

Algo

ritmia  y program

ación estructurada

2.5 Bibliotecas e

stán

dar d

e funcione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 187: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• En 1990, el estándar ANSI C (con algunasmodificaciones menores) fue adoptado por laInternational Organization for Standardization bajo ladenominación ISO/IEC 9899:1990.

• En marzo de 2000, ANSI adoptó el estándar ISO/IEC9899:1999. A este estándar se le conoce como C99.http://www.open‐std.org/jtc1/sc22/wg14/www/docs/n1124.pdf

• C11 (antes conocido como C1X) es un nombreinformal para ISO/IEC 9899:2011,3 el último estándarpublicado para C. El borrador final, N1570,4 fuepublicado en abril de 2011. El nuevo estándar superósu última revisión el 10 de octubre de 2011 y fueoficialmente ratificado por la ISO y publicado el 8 dediciembre de 2011.http://www.open‐std.org/jtc1/sc22/wg14/www/docs/n1570.pdf 9

Algo

ritmia  y program

ación estructurada

2.5 Bibliotecas e

stán

dar d

e funcione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 188: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

ArchivosdecabecerasdelabibliotecaANSIC

10

Algo

ritmia  y program

ación estructurada

2.5 Bibliotecas e

stán

dar d

e funcione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

<assert.h>Contiene la macro assert (aserción), utilizada paradetectar errores lógicos y otros tipos de fallos enla depuración de un programa.

<complex.h> Conjunto de funciones para manipular númeroscomplejos (nuevo en C99).

<ctype.h>

Contiene funciones para clasificar caracteressegún sus tipos o para convertir entre mayúsculasy minúsculas independientemente del conjuntode caracteres (típicamente ASCII o alguna de susextensiones).

<errno.h> Para analizar los códigos de error devueltos porlas funciones de biblioteca.

<fenv.h> Para controlar entornos en coma flotante (nuevoen C99).

Page 189: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

11

Algo

ritmia  y program

ación estructurada

2.5 Bibliotecas e

stán

dar d

e funcione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

<float.h>

Contiene la definición de constantes queespecifican ciertas propiedades de la biblioteca decoma flotante, como la diferencia mínima entre dosnúmeros en coma flotante (_EPSOLON), el númeromáximo de dígitos de precisión (_DIG), o el rangode valores que se pueden representar (_MIN,_MAX).

<inttypes.h> Para operaciones de conversión con precisión entretipos enteros (nuevo en C99).

<iso646.h> Para utilizar los conjuntos de caracteres ISO 646(nuevo en NA1).

<limits.h>

Contiene la definición de constantes queespecifican ciertas propiedades de los tiposenteros, como rango de valores que se puedenrepresentar (_MIN, _MAX).

<locale.h>Para la función setlocale() y las constantesrelacionadas. Se utiliza para seleccionar el entornolocal apropiado (configuración regional).

Page 190: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

12

Algo

ritmia  y program

ación estructurada

2.5 Bibliotecas e

stán

dar d

e funcione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

<math.h> Contiene las funciones matemáticas comunes.

<setjmp.h>Declara las macros setjmp y longjmp paraproporcionar saltos de flujo de control deprograma no locales.

<signal.h> Para controlar algunas situaciones excepcionalescomo la división por cero.

<stdarg.h> posibilita el acceso a una cantidad variable deargumentos pasados a una función.

<stdbool.h>Para el tipo booleano (nuevo en C99).<stdint.h> Para definir varios tipos enteros (nuevo en C99).<stddef.h> Para definir varios tipos de macros de utilidad.

<stdio.h>Proporciona el núcleo de las capacidades deentrada/salida del lenguaje C (incluye la venerablefunción printf).

Page 191: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

13

Algo

ritmia  y program

ación estructurada

2.5 Bibliotecas e

stán

dar d

e funcione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez<stdlib.h>

Para realizar ciertas operaciones como conversiónde tipos, generación de números pseudo‐aleatorios, gestión de memoria dinámica, controlde procesos, funciones de entorno, deseñalización (??), de ordenación y búsqueda.

<string.h> Para manipulación de cadenas de caracteres.

<tgmath.h> Contiene funcionalidades matemáticas de tipogenérico (type‐generic) (nuevo en C99).

<time.h> Para tratamiento y conversión entre formatos defecha y hora.

<wchar.h>

Para manipular flujos de datos anchos y variasclases de cadenas de caracteres anchos (2 o másbytes por carácter), necesario para soportarcaracteres de diferentes idiomas (nuevo en NA1).

<wctype.h> Para clasificar caracteres anchos (nuevo en NA1).

Page 192: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Funcionesincorporadasdelcompilador• Algunos compiladores (por ejemplo GCC1 )proporcionan versiones incorporadas de muchas de lasfunciones de la biblioteca estándar de C; es decir, laimplementación de las funciones está escrita dentro delfichero objeto compilado, y el programa llama a laversión incorporada en vez de, a la función del ficheroobjeto compartido en la biblioteca de C. Esto reduce elsobrecoste de una llamada a función, especialmente silas llamadas a función son remplazadas con variantesinline, y permiten otras formas de optimización (comocuando el compilados sabe las características de controlde flujo de las variantes incorporadas), pero puedecausar confusión al depurar (por ejemplo, las versionesincorporadas no pueden ser remplazadas por lasvariantes instrumentadas).

14

Algo

ritmia  y program

ación estructurada

2.5 Bibliotecas e

stán

dar d

e funcione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 193: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

BibliotecaestándardePOSIX• POSIX especifica una serie de rutinas que debenestar disponibles más allá de la propia bibliotecaestándar de C.

• A menudo éstas se implementan conjuntamentecon la biblioteca de C estándar, con distintos nivelesde proximidad. Por ejemplo, glibc implementafunciones como fork() dentro de libc.so, pero antesNPTL se fusionó con glibc constituyendo unabiblioteca con su propia marca de linkado.

• A menudo, esta funcionalidad de POSIX seconsidera una parte de la biblioteca; la propiabiblioteca de C puede ser identificada como labiblioteca ANSI C o ISO C.

15

Algo

ritmia  y program

ación estructurada

2.5 Bibliotecas e

stán

dar d

e funcione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 194: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

TheCLibraryReferenceGuidehttp://www.acm.uiuc.edu/webmonkeys/book/c_guide/index.html

16

Algo

ritmia  y program

ación estructurada

2.5 Bibliotecas e

stán

dar d

e funcione

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 195: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

UnidadIII“Controldeflujo"

3.1Sentenciasdeselección

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 196: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• Estructuras de selección• Selección simple• Selección doble• Selección múltiple

• Estructuras de selección en C• if• If else• If ‐else if• switch‐case• operador ?

2

Algo

ritmia  y program

ación estructurada

3.1 Senten

cias de selección

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 197: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Estructurasdeselección• Las estructuras de selección (condicionales)se utilizan para elegir entre diversos cursos deacción.

3

Algo

ritmia  y program

ación estructurada

3.1 Senten

cias de selección

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 198: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Estructuras de selección simple

Pseudocódigo

condicióncondición

nono

sisi

Instrucciones

4

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 199: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Estructuras de selección doble

Pseudocódigo

condición

sisi

nono

Instrucciones2

Instrucciones1

5

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 200: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Estructuras de selección múltiple

Pseudocódigo

condición1

sisi

nono

Instrucciones1

condición2

Instrucciones2

nono

sisi

condición3

sisi

nono

6

Algo

ritmia  y program

ación estructurada

1.1 Algo

ritmo (pseud

o–código

)Au

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 201: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

EstructurasdeselecciónenC• En C hay tres tipos de estructuras deselección: if (selección simple), if…else(selección doble) y switch (selección múltiple)

7

Algo

ritmia  y program

ación estructurada

3.1 Senten

cias de selección

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 202: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Selección(if)if (expresión)sentencia;

if (expresión){sentencia1;sentencia2;}

Nota: una expresión en C estodo aquello que regresa unvalor. Como por ejemplo unacondición lógica, operacionesaritméticas, llamadas afunciones, una variable, unaconstante (numérica, carácter,etc.).

8

Algo

ritmia  y program

ación estructurada

3.1 Senten

cias de selección

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 203: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Selección(if – else)if (expresión)sentencia;elsesentencia;

if (expresión){sentencia1;sentencia2;}else{sentencia1;sentencia2;} 9

Algo

ritmia  y program

ación estructurada

3.1 Senten

cias de selección

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 204: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Selección(if – else if)if (expresión)sentencia;else if (expresión)sentencia;…elsesentencia;

if (expresión){sentencia1;sentencia2;}else if{sentencia1;sentencia2;}…else{sentencia1;sentencia2;}

10

Algo

ritmia  y program

ación estructurada

3.1 Senten

cias de selección

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 205: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Selección(switch‐case)switch(expresión){case 1:  sentencias;

break;case 2:  sentencias;

break;:case n:  sentencias;

break;default: sentencias_default;

break;}

11

Algo

ritmia  y program

ación estructurada

3.1 Senten

cias de selección

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 206: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Selección(operador?)(expresión)? sentencia1 : sentencia2;expresión? sentencia1 : sentencia2;

Seejecuta:sentencia1 siexpresión =verdaderosentencia2 siexpresión =falso.Esunoperadorternarioypuedeutilizarseparaasignarvariables:Var= (expresión)? sentencia1:sentencia2; 12

Algo

ritmia  y program

ación estructurada

3.1 Senten

cias de selección

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 207: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Selección(ejemplos)if (calificacion>=60){

printf ("Alumno Aprobado");}else{

printf ("Alumno Reprobado");}

if (calificacion>=90){

printf ("Alumno de muy buena calificación");}else if (calificacion>=70&& calificacion<90){

printf ("Alumno regular");}else if (calificacion>=60&& calificacion<70){

printf ("Alumno");}else{

printf ("No es alumno");}

13

Algo

ritmia  y program

ación estructurada

3.1 Senten

cias de selección

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 208: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

UnidadIII“Controldeflujo"

3.2Sentenciasiterativas

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 209: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• Estructuras iterativas• Iterativa “mientras”• Iterativa “repetir”• Iterativa “para”

• Estructuras iterativas en C• Estructura iterativa “while” en C• Estructura iterativa “do‐while” en C• Estructura iterativa “for” en C

2

Algo

ritmia  y program

ación estructurada

3.2 Senten

cias iterativas

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 210: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Estructurasiterativas• Estas estructuras permiten repetir una serie de veces laejecución de unas líneas de código.

• Esta iteración se realiza o bien un número determinadode veces o bien hasta que se cumpla una determinadacondición de tipo lógico o aritmético.

• En C hay 3 tipos de instrucciones de repetición: while,do…while y for.

3

Algo

ritmia  y program

ación estructurada

3.2 Senten

cias iterativas

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 211: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Estructura de control Iterativa “mientras”

Pseudocódigo

condición

nono

sisi

Instrucciones

4

Algo

ritmia  y program

ación estructurada

3.2 Senten

cias iterativas

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 212: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Estructuras de control Iterativa “repetir”

Repetir

condición

sisi

nono

Mientras ≈ Repetir

Instrucciones

Pseudocódigo

5

Algo

ritmia  y program

ación estructurada

3.2 Senten

cias iterativas

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 213: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Estructuras de control Iterativa “para”

Para

Para → mientras

i ≤ n

nono

sisi

Instruccionesi ← i+1

i ← x

Pseudocódigo

6

Algo

ritmia  y program

ación estructurada

3.2 Senten

cias iterativas

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 214: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Estructuraiterativa“while”enC• La sentencia while permite repetir un bloque de instrucciones.

• La sintaxis del ciclo while es:

while(condición)

{

sentencia o bloque;

};

• Si la condición se cumple se ejecutan las sentencias del bloquey se regresa el flujo de control a evaluar nuevamente lacondición. El proceso se repite hasta que la condición sea falsa.

• El ciclo puede ejecutarse 0 veces si la condición no se cumple.

condición sentencias

verdadero

falso

7

Algo

ritmia  y program

ación estructurada

3.2 Senten

cias iterativas

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 215: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Estructuraiterativa“do‐while”enC• El ciclo do‐while es similar al ciclo while excepto que lacondición se realiza al final del ciclo, esto fuerza a que seejecute por lo menos una vez.

do{

sentencias;

}while(condición);

condición

sentencias

verdadero

falso 8

Algo

ritmia  y program

ación estructurada

3.2 Senten

cias iterativas

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 216: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Estructuraiterativa“for”enC• La sentencia for permite definir fácilmente ciclos controlados porcontador.

for(expresion1; expresion2; expresion3){

sentencias;}• Esta es equivalente a la siguiente sentencia while:

expresion1;while(expresion2){sentencias;expresion3;

}

expresion1 = sentencia de iniciaciónexpresion2 = condición de terminaciónexpresion3 = sentencia de incremento condición sentencias

expresion3

verdadero

falso

expresion1

9

Algo

ritmia  y program

ación estructurada

3.2 Senten

cias iterativas

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 217: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• El encabezado de un bucle for tiene tres partes separadaspor ";". En la primera se inicializan las variable de control ysólo se ejecuta una vez, antes de la primera iteración, lasegunda es una expresión que indica la condición lógica quedebe cumplirse para que la próxima iteración se ejecute; estacondición se evaluá antes de cada iteración y, cuando deja desatisfacerse, el bucle for termina. La tercera parte delencabezado es la actualización de las variables de control y seejecuta después de cada iteración.

for(. . . ; . . .;. . .){

sentencias;}

1 2

3

45

6

7

n10

Algo

ritmia  y program

ación estructurada

3.2 Senten

cias iterativas

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 218: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

UnidadIII“Controldeflujo"

3.3Teoremadelaprogramaciónestructurada

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 219: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• ¿Qué es programación?• ¿Qué es el código fuente?• ¿Qué es un programa computacional?

• Lenguaje de programación• Primeras programaciones• Paradigma de programación

• Programación estructurada• Paradigma de la programación estructurada• Teorema de la programación estructurada• Lenguajes de programación estructurada• La programación estructurada y el lenguaje C

• Estructuras secuenciales• Estructuras selectivas• Estructuras iterativas o repetitivas

2

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 220: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

¿Quéesprogramación?• La programación es el proceso de diseñar,codificar, depurar y mantener el código fuente deprogramas computacionales.

3

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 221: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

¿Quéeselcódigofuente?• El código fuente de un programa computacional (o software)es un conjunto de líneas de texto que son las instruccionesque debe seguir la computadora, escritas en un lenguaje deprogramación para ejecutar dicho programa.

• Por tanto, en el código fuente de un programa está descritopor completo su funcionamiento.

4

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 222: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• El proceso de escribir código requiere frecuentementeconocimientos en varias áreas distintas, además deldominio del lenguaje a utilizar, algoritmos especializados ylógica formal.

5

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 223: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• El código fuente es escrito en un lenguaje deprogramación. El propósito de la programación escrear programas que exhiban un comportamientodeseado.

6

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 224: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

¿Quéesunprogramacomputacional?• Un programa computacional es un conjunto deinstrucciones que una vez ejecutadas realizarán una ovarias tareas en una computadora.

• Al conjunto general de programas, se le denomina software,que se refiere al equipamiento lógico o soporte lógico deuna computadora digital.

7

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 225: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Lenguajedeprogramación• Un lenguaje de programación es un idioma artificialdiseñado para expresar computaciones que pueden serllevadas a cabo por un equipo computacional.

• Un lenguaje de programación se usa para crear programasque controlen el comportamiento físico y lógico de unamáquina, esto permite crear soluciones a problemas realese interacciones humano‐maquina.

8

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 226: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Un lenguaje de programación está formado de un conjuntode símbolos y reglas sintácticas y semánticas que definen suestructura y el significado de sus elementos y expresiones.

• Sintáctica (reglas que gobiernan la combinatoria de lossímbolos y la formación de unidades superiores a estos)

• Semántica (aspectos del significado, sentido ointerpretación del significado de un determinado elemento,símbolo, palabra, expresión o representación formal)

9

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 227: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Primerasprogramaciones• En los inicios de la programación de computadoras (segundamitad de la década de 1950), el nacimiento de los primeroslenguajes de alto nivel como Fortran y Cobol apoyaban en lacodificación de soluciones a problemas computacionales,pero la gran mayoría de las veces el diseño y laimplementación de la solución quedaba determinadossegún criterios personales y de cada programador.

10

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 228: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Paradigmadeprogramación• Un paradigma de programación es una propuestatecnológica que es adoptada por una comunidad deprogramadores cuyo núcleo central es incuestionable encuanto a que unívocamente trata de resolver uno o variosproblemas claramente delimitados.

• Un paradigma de programación representa un enfoqueparticular o filosofía para la construcción del software.

• Es decir un paradigma de programación establece comoprogramar la solución a un problema de cierta manera en uncódigo fuente bajo un lenguaje de programación.

11

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 229: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Programaciónestructurada• Es una forma de escribir programas de computadora(paradigma de programación).

• Los principios que rigen este paradigma deprogramación son el uso de únicamente tresestructuras de control: secuencia, selección eiteración

12

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 230: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Paradigmadelaprogramaciónestructurada• El paradigma del la programación estructurada es unresultado en la teoría de lenguajes de programación.

• Establece a grandes rasgos que toda función computablepuede ser implementada en un lenguaje de programaciónque combine subrutinas en únicamente tres formas. Esastres formas (también llamadas estructuras de control) son:1. Ejecutar una subrutina y luego otra subrutina (secuencia)2. Ejecutar una de dos subrutinas, dependiendo del valor de una

variable booleana (selección)3. Ejecutar una subrutina mientras una variable booleana sea

'verdadera' (iteración, ciclo o bucle)

• Los científicos de la computación usualmente acreditan el teorema a un artículode 1966 escrito por Corrado Böhm y Giuseppe Jacopini. Sin embargo, DavidHarel rastreó sus orígenes hasta la descripción de 1946 de la arquitectura devon Neumann y el teorema de la forma normal de Kleene.

13

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 231: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Teoremadelaprogramaciónestructurada• En 1966 los matemáticos Corrado Böhm y Giuseppe Jacopinidemostraron que: "Un programa propio puede ser escritoutilizando solamente 3 tipos de estructuras de control(Secuenciales, selectivas e iterativas)".

• A su vez un programa propio:• Posee un solo punto de entrada y uno de salida o fin.• Existen caminos desde la entrada hasta la salida que sepueden seguir y que pasan por todas partes del programa.

• Todas las instrucciones son ejecutables (sin código muerto) y noexisten lazos o bucles infinitos (sin fin).

14

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 232: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Lenguajesdeprogramaciónestructurada• Un lenguaje de programación estructurada es aquel que estableceuna sintaxis y semántica propia para expresar computaciones, y sebasa en el teorema de la "programación estructurada", ofreciendoinstrucciones para expresar las tres estructuras de control delteorema.

SECUENCIAIndica que las instrucciones de unprograma se ejecutan unadespués de la otra, en el mismoorden en el cual aparecen en elprograma. Se representagráficamente como una cajadespués de otra, ambas con unasola entrada y una única salida

SELECCIÓN También conocida como la estructuraSI‐CIERTO‐FALSO, plantea la selecciónentre dos alternativas con base en elresultado de la evaluación de unacondición o predicado; equivale a lainstrucción IF de todos los lenguajesde programación.

ITERACIÓN También llamada la estructuraHACER‐MIENTRAS‐QUE,corresponde a la ejecuciónrepetida de una instrucciónmientras que se cumple unadeterminada condición. 15

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 233: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

LaprogramaciónestructuradayellenguajeC• C es un lenguaje de programación que permite programar de maneraestructurada ya que establece una sintaxis y semántica propia paraexpresar computaciones, ofreciendo sentencias de control paradescribir secuencias, selecciones e iteraciones.

SECUENCIA SELECCIÓNif ..elseswitch

ITERACIÓN while

do...whilefor

16

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 234: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Estructurassecuenciales• Son las sentencias (asignaciones e invocaciones a funciones)escritas en el código fuente, cada una de estas seráejecutada de manera secuencial (en orden de aparición) unavez compilado el fuente.

Instrucciónn

Instrucción1Instrucción2Instrucción3Instrucción4

Diagrama de flujo Pseudocódigo

#include<stdio.h>int main(void){

int byte=0xFF;printf("\nEl valor de byte es: %4X H",byte);byte&=0x00;printf("\nEl valor de byte es: %4X H",byte);

byte|=0xFF;printf("\nEl valor de byte es: %4X H",byte);

byte>>=1;printf("\nEl valor de byte es: %4X H",byte);byte<<=2;printf("\nEl valor de byte es: %4X H",byte);return 0;

}

Código en C

17

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 235: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Estructurasselectivas(if)• Las estructuras selectivas se utilizan para tomar decisionescon bases en la evaluación de una condición.

Diagrama de flujo Pseudocódigo Código en C

condicióncondición

nono

sisi

Instrucciones

if(condición){

Instrucciones;};

Selectiva simple

18

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 236: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Diagrama de flujo Pseudocódigo Código en C

if(condición){

Instrucciones1;}else{

Instrucciones2;};

Selectiva doble

condición

sisi

nono

Instrucciones2

Instrucciones1

19

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 237: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Diagrama de flujo Pseudocódigo Código en C

if(condición1){

Instrucciones1;}else if (condición2){

Instrucciones2;}else if (condición3){

Instrucciones3;}…else{

Instruccionesn;};

Selectiva múltiple

condición1

sisi

nono

InInstrucciones1

condición2

InInstrucciones2

nono

sisi

condición3

sisi

nono

20

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 238: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• La preposición de control de flujo if se utiliza para expresardecisiones, formalmente la sintaxis es:

if(expresión1){

sentencias1;}else if(expresión2){

sentencias2;} else if(expresión3){

sentencias3;}else{

sentencias4;}

*Las preposiciones else if(sino si) y else (sino)pueden omitirse.

Si la expresión1 se evaluá y si esta esverdadera (diferente de 0) entonces se lleva acabo el código inmediato entre llaves.Sino si (else if) la expresión2 se evaluá y siesta es verdadera (diferente de 0) entonces selleva a cabo el código inmediato entre llaves.Sino si (else if) la expresión3 se evaluá y siesta es verdadera (diferente de 0) entonces selleva a cabo el código inmediato entre llaves.…Sino (else) si ninguna condición ha sidoverdadera entonces se lleva a cabo el códigoinmediato entre llaves.

21

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 239: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Ejemplo(if‐else)#include<stdio.h>int main(void){

float a,b;printf("\nIntroduce dos números reales separados por una coma: ");scanf("%f,%f",&a,&b);if(a<0&&b<0){

printf("\nAmbos numeros son negativos");}else if(a>0&&b>0){

printf("\nLos dos numeros son positivo");}else if(a>0||b>0){

printf("\nUno de los dos numeros es positivo");}else if(a==0&&b==0){

printf("\nAmbos numeros son igual a cero");}else{

printf("\n...");}return 0;

}

22

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 240: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Estructuraselectiva(switch)• Una estructura selectiva del lenguaje c, que facilitaimplementar algunas decisiones múltiples cuando sepresentan todas con base en la evaluación de una expresiónes switch‐case.switch(expresión){

case exp-constante1: <acción 1>;break;

case exp-constante2: <acción 1>;break;

...case exp-constanteN: <acción N>;

break;default: <acción M>;

}

*El uso de switch es valido si se utiliza apropiadamente bajo la teoría de laprogramación estructurada, ya que incluye una sentencia de salto que no deberíade ser utilizada indiscriminadamente (break)

23

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 241: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Ejemplo(switch)#include<stdio.h>int main(void){

short opcion;printf("\nOpción 1");printf("\nOpción 2");printf("\nOpción 3");printf("\nOpción 4");printf("\nOpción 5");printf("\nSelecciona una opción...");scanf("%d",&opcion);switch(opcion){

case 1: printf("\nOpción 1 seleccionada");break;

case 2: printf("\nOpción 2 seleccionada");break;

case 3: printf("\nOpción 3 seleccionada");break;

case 4: printf("\nOpción 4 seleccionada");break;

case 5: printf("\nOpción 5 seleccionada");break;

default:printf("\nOpción no valida");}

}

24

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 242: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Estructurasiterativasorepetitivas• Las estructuras repetitivas se utilizan para realizar varias vecesel mismo conjunto de operaciones con base en una condición.

Diagrama de flujo Pseudocódigo Código en C

while(condición){

Instrucciones;};

Iterativa "mientras"

condicióncondición

nono

sisi

instrucciones

25

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 243: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Con "repetir" se asegura que las instrucciones de dentro delciclo se ejecutan al menos una vez.

Diagrama de flujo Pseudocódigo Código en C

do{

Instrucciones;}while(!(condición));

Iterativa "repetir"

condición

sisi

nono

instrucciones

26

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 244: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• La estructura de control while evaluá la expresión antes decomenzar cada iteración, si esta es verdadera (diferente de 0)se realizan las sentencias de dentro de las llaves.

• La estructura de control do‐while se utiliza cuando se quiereasegurar que las sentencias de dentro del ciclo se ejecuta almenos una vez puesto que la evaluación de la expresiónlógica se hace al final de este.

while(expresión){

Sentencias;};

do{

Sentencias;}while(expresión);

Estructurawhile &do‐while

27

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 245: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• La estructura for permite definir un bucle controlado por uncontador, denominado variable de control o de inducción.

Diagrama de flujo Pseudocódigo Código en C

for(i=x;i<=n;i++){

instrucciones;}

Iterativa "para"

i ≤ n

nono

sisi

instruccionesi ← i+1

i ← x

28

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 246: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Ejemplo(for)#include<stdio.h>int main(void){

int i,n;

for(i=0,n=10000;i<n;i++,n=n-i){

printf("\t%3d",i);}return 0;

}

29

Algo

ritmia  y program

ación estructurada

3.3 Teorem

a de

 la program

ación estructurada

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 247: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

UnidadIII“Controldeflujo"

3.4Laimportanciaderealizarpruebas

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 248: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• Introducción• Pruebas del Software• Relación entre error, defecto y fallo

• Objetivo de la prueba• Principios de las pruebas• Facilidad de Prueba• Características de una Prueba• El proceso de Prueba• Ciclo completo de las Pruebas

• Enfoque de Diseño de Casos de Prueba• Pruebas de Caja Blanca• Pruebas de Caja Negra• Pruebas Aleatorias

2

Algo

ritmia  y program

ación estructurada

3.4 La im

portan

cia de

 realiza

r prueb

asAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 249: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

¿Qué es probar software?Algunas definiciones incorrectas:• Probar es demostrar que no hay errores presentesen un programa.

• El propósito de probar es mostrar que el programarealiza correctamente las funciones esperadas.

La definición Correcta•Probar es el proceso ejecución de un programacon el fin de encontrar errores.

Introducción

3

Algo

ritmia  y program

ación estructurada

3.4 La im

portan

cia de

 realiza

r prueb

asAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 250: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Pruebas del SoftwareOtras Definiciones•Verificar.•Validar.•Pruebas.•Caso de Prueba.•Defecto.•Fallo.•Error.

4

Algo

ritmia  y program

ación estructurada

3.4 La im

portan

cia de

 realiza

r prueb

asAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 251: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Relaciónentreerror,defectoyfallo

5

Algo

ritmia  y program

ación estructurada

3.4 La im

portan

cia de

 realiza

r prueb

asAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 252: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

ObjetivosdelaPrueba.• La prueba es el proceso de ejecución de unprograma con la intención de descubrir un error.

• Un buen caso de prueba es aquel que tiene una altaprobabilidad de mostrar un error no descubiertohasta entonces.

• Una prueba tiene éxito si descubre un error nodetectado hasta entonces.

6

Algo

ritmia  y program

ación estructurada

3.4 La im

portan

cia de

 realiza

r prueb

asAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 253: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Principiosdelaspruebas• A todas las pruebas se les debería poder hacer unseguimiento hasta los requisitos del cliente.

• Las pruebas deberían planificarse mucho antes de queempiecen.

• Las pruebas deberían empezar por “lo pequeño” yprogresar hacia “lo grande”.

• No son posibles las pruebas exhaustivas.

• Para ser más eficaces (pruebas con la más altaprobabilidad de encontrar errores), las pruebasdeberían ser realizadas por un equipo independiente.

7

Algo

ritmia  y program

ación estructurada

3.4 La im

portan

cia de

 realiza

r prueb

asAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 254: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Se debe inspeccionar a conciencia el resultado de cada prueba para, así, poder descubrir posibles síntomas de defectos.

• Cada caso de prueba debe definir el resultado de salida esperado.

• Al generar casos de prueba, se deben incluir tanto datos de entrada válidos y esperados como no válidos e  inesperados. 

• Las pruebas deben centrarse en dos objetivos (es habitualolvidar el segundo)• Probar si el software no hace lo que debe hacer• Probar si el software hace lo que no debe hacer, es decir si provoca efectos secundarios

• Se deben evitar los casos desechables.8

Algo

ritmia  y program

ación estructurada

3.4 La im

portan

cia de

 realiza

r prueb

asAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 255: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• No deben hacerse planes de prueba suponiendoque, prácticamente, no hay defectos en losprogramas, y dedicando pocos recursos a laspruebas.

• La experiencia indica que donde hay un defecto hayotros.

• Las pruebas son una tarea creativa como eldesarrollo de software.

9

Algo

ritmia  y program

ación estructurada

3.4 La im

portan

cia de

 realiza

r prueb

asAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 256: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

FacilidaddePrueba• Operatividad • Observabilidad• Controlabilidad• Capacidad de descomposición• Simplicidad• Estabilidad• Facilidad de comprensión

10

Algo

ritmia  y program

ación estructurada

3.4 La im

portan

cia de

 realiza

r prueb

asAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 257: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

CaracterísticasdeunaPrueba• Debe tener una alta probabilidad de encontrar unerror.

• No debe ser redundante.

• Debe ser la mejor de todas las posibles.

• No debe ser ni demasiado sencilla ni demasiadocompleja.

11

Algo

ritmia  y program

ación estructurada

3.4 La im

portan

cia de

 realiza

r prueb

asAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 258: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

ElprocesodePrueba1. La depuración (localización y corrección de

defectos).

2. El análisis de la estadística de errores.

12

Algo

ritmia  y program

ación estructurada

3.4 La im

portan

cia de

 realiza

r prueb

asAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 259: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

CiclocompletodelasPruebas

13

Algo

ritmia  y program

ación estructurada

3.4 La im

portan

cia de

 realiza

r prueb

asAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 260: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

EnfoquedeDiseñodeCasosdePrueba1. Enfoque estructural o de caja blanca

2. Enfoque funcional o de caja negra

3. Enfoque aleatorio14

Algo

ritmia  y program

ación estructurada

3.4 La im

portan

cia de

 realiza

r prueb

asAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 261: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

PruebasdeCajaBlanca• Se denomina cajas blancas a un tipo de pruebas de softwareque se realiza sobre las funciones internas de un módulo. Laspruebas de caja blanca están dirigidas a las funcionesinternas. Entre las técnicas usadas se encuentran:

• La cobertura de caminos (pruebas que hagan que se recorrantodos los posibles caminos de ejecución).

• Pruebas sobre las expresiones lógico‐aritméticas.

• Pruebas de camino de datos (definición‐uso de variables).

• Comprobación de bucles (se verifican los bucles para 0,1 y niteraciones, y luego para las iteraciones máximas, máximasmenos uno y más uno).

15

Algo

ritmia  y program

ación estructurada

3.4 La im

portan

cia de

 realiza

r prueb

asAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 262: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

PruebasdeCajaNegra.• Se centra en las funciones, entradas y salidas. Intentaencontrar errores de las siguientes categorías:

• Funciones Incorrecta o ausente.

• Errores de Interfaz.

• Errores en estructuras de datos o acceso a base de datosexternas.

• Errores de rendimiento.

• Errores de inicialización y de terminación.

16

Algo

ritmia  y program

ación estructurada

3.4 La im

portan

cia de

 realiza

r prueb

asAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 263: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

PruebasAleatorias• En las pruebas aleatorias simulamos la entrada habitualdel programa creando datos de entrada en la secuencia ycon la frecuencia con las que podrían aparecer en lapráctica (de manera repetitiva). Para ello habitualmentese utilizan generadores automáticos de casos de prueba.

• Consiste en utilizar modelos (en muchas ocasionesestadísticos) que representen las posibles entradas alprograma para crear a partir de ellos los casos de prueba

• Si el proceso de generación se ha realizadocorrectamente, se crearán eventualmente todas lasposibles entradas del programa en todas las posiblescombinaciones y permutaciones.

• Baja probabilidad de encontrar errores.

17

Algo

ritmia  y program

ación estructurada

3.4 La im

portan

cia de

 realiza

r prueb

asAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 264: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

UnidadIV“Arreglosytiposestructurados”

4.1Arreglounidimensional

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 265: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• Introducción• Arreglos unidimensionales• Lectura‐escritura de elementos en arreglos unidimensionales

• Inicialización de un arreglo• Tamaño de un arreglo• Función Sizeof

• Cadenas en C•Manejo de cadenas en C <string.h>• Prueba y manejo de caracteres en C <ctype.h.h>

2

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 266: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Introducción• Un arreglo estático es una colección finita yconstante (que no cambia su tamaño) de elementosdel mismo tipo.

• Un arreglo también es conocido como vector, matrizo array.

• Se pueden crear arreglos de cualquier tipo de datoen C, es decir, tipos de dato simple, estructurado,archivos e incluso de apuntadores.

3

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 267: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Arreglosunidimensionales• Se conocen dos tipos de arreglos: los unidimensionalesy los multidimensionales. Y al igual que otra variableprimero se debe declarar antes de utilizarse.

• Sintaxis para declarar un arreglo unidimensional:

<tipo_de_dato> identificador[tam_arreglo];

• Cuando se declara un arreglo unidimensional omultidimensional, se debe indicar el tamaño de dichoarreglo y este permanecerá constante durante el ciclo devida del programa o de la función, es decir, no podrácambiar su tamaño de manera dinámica. (Arreglosestáticos)

4

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 268: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Por ejemplo:int arreglo[ 10 ];

• Esta declaración hace que el compilador le indiqueal sistema operativo que reserve espacio suficientepara almacenar 10 valores enteros.

• En estos casos, cuando se declara un arreglo el S.O.le asigna a dicho arreglo una porción consecutiva dememoria que es múltiplo del tamaño del tipo dedato con el que se declaro el arreglo.

5

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 269: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• int arreglo[ 10 ];

6

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 270: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Lectura‐escrituradeelementosenarreglosunidimensionales• Cada ítem del arreglo se le denomina elemento delarreglo.

• Todos los elementos que constituyen un arreglo senumeran consecutivamente comenzando en 0 hastan‐1 donde:• 0: es el primer elemento del arreglo,• n‐1: es el ultimo elemento del arreglo y• n: es el tamaño total del arreglo.

7

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 271: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• A los valores de 0 a n‐1 se les denomina índices osubíndices del arreglo, es decir, un índice osubíndice nos ubica en una posición determinadadentro del arreglo y nos permite tener accesodirecto al elemento de ese índice, para obtener suvalor o para modificarlo,

• Por ejemplo:Índice o subíndice del arreglo

Tamaño total del arreglo

Se obtiene el valor del elemento (10 + 1)

Se modifica el valor del elemento (25 + 1)  

int arreglo[30];int dato;dato = arreglo[10];arreglo[25] = 2344;

8

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 272: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Inicializacióndeunarreglo• Al igual que una variable local, un arreglo puede estarpreviamente inicializado antes de usarlo, caso contrario elarreglo contendrá datos basura.

• Existen diferentes formas de inicializar un arreglo:1. int numeros[6] = { 10,20,30,40,50,60 };2. int numeros[] = { 10,20,30 };3. char cad[] = {‘h’,‘o’,‘l’,‘a’,‘\0’};4. char s[] = “hola";

• Cada elemento dentro de las llaves corresponde a unelemento que se almacena en una localidad del arreglo.

• Un caso especial es el de las comillas dobles ʺcadenasʺ, estetipo de inicialización aplica solamente para arreglos decaracteres y también significa que se está inicializando dichoarreglo.

9

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 273: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Ejemplos• Inicializar un arreglo de números aleatorios

• Inicializar un arreglo de con el abecedario

int i;for( i = 0, i < 6, i++ ){

numeros[i] = rand();}

char i;int h = 0;for( i = ‘a’, i <= ‘z’, i++ ){

letras[h] = i;h++;

}

10

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 274: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Tamañoenbytesdeunarreglo• Para obtener saber el tamaño de un arreglo, sepuede utilizar la función sizeof(), esta funciónnos devolverá el numero de bytes reservados para elarreglo completo.

• Por ejemplo:int arreglo[ 10 ];int tamanio;tamanio = sizeof( arreglo );

11

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 275: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

FunciónSizeof ()• sizeof() también sirve para darnos el tamaño de untipo de dato en especifico o el tamaño de un elementodentro del arreglo.

• Por ejemplo:int tamanio;double a = 3.1455; float b = 3.084;char c = ‘e’;tamanio = sizeof( a );tamanio = sizeof( b );tamanio = sizeof( c );tamanio = sizeof( tamanio );tamanio = sizeof( arreglo[1] ); 12

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 276: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

CadenasenC• A diferencia de otros lenguajes de programación queemplean un tipo denominado cadena string paramanipular un conjunto de símbolos, en C, se debesimular mediante un arreglo de caracteres, endonde la terminación de la cadena se debe indicarcon nulo con valor 0.

char c [4]; char cad[5];

13

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 277: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Un nulo se especifica como '\0'. Por lo anterior,cuando se declare un arreglo de caracteres para serusado como cadena, se debe considerar un carácteradicional a la cadena más larga que se vaya aguardar.

• Por ejemplo, si se quiere declarar un arreglo cadenaque guarde una cadena de diez caracteres, se harácomo:

char cadena[11];

14

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 278: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Se pueden hacer también inicializaciones de arreglos decaracteres en donde automáticamente C asigna el carácternulo al final de la cadena, de la siguiente forma:

char nombre_arr[ tam ]="cadena";• Por ejemplo, el siguiente fragmento inicializa cadena con``hola'':

char cadena[5]="hola";• El código anterior es equivalente a:

char cadena[5]={'h','o','l','a','\0'};

15

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 279: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Para asignar la entrada estándar a una cadena sepuede usar la función scanf con la opción %s(cadenas sin espacios) %[^\n] (cadenas con espacioshasta el fin de línea) (observar que no se requiere usar eloperador & en el scanf paras el argumento, ya que el nombredel arreglo es un apuntador estático al arreglo), de igualforma para mostrarlo en la salida estándar.

#include <stdio.h>int main(void){

char nombres[15], apellido[30];

printf("Introduce tu nombre(s): ");scanf("%[^\n]",nombres); //Leer caracteres hasta fin de líneaprintf("Introduce tu apellido: ");scanf("%s",apellido);printf("Usted es %s %s\n",nombres,apellido); //Leer caracteres

hasta el primer espacioreturn 0;

}

16

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 280: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• El %s puede delimitar los caracteres a considerarcomo máximos a tomar para almacenar en unacadena. %24s indica que 24 es la máxima cantidadde caracteres que esperemos se ingresen (unomenos que el tamaño del arreglo). Si se intentaingresar más de 24 sencillamente no los almacenará.Esta es una buena costumbre cada vez que se utilizascanf() para capturar cadenas.#include <stdio.h>int main(void){

char a[25];printf("Ingresa tu nombre: ");scanf("%24s",a); // 24 caracteres a tomarprintf("Tu nombre es: %s\n",a);

return 0;}

17

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 281: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• El lenguaje C no maneja cadenas de caracteres,como se hace con enteros o flotantes, por lo que losiguiente no es válido:

#include <stdio.h>int main(void){

char nombre[40], apellidos[40], completo[80];

nombre="José María"; // Asignaciones ilegales apellidos="Morelos y Pavón";completo="Gral."+ nombre + apellidos; // Operación Ilegal

return 0;}

18

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 282: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

ManejodecadenasenC<string.h>• string.h es un archivo de la Biblioteca estándar quecontiene la definición de macros, constantes, funcionesy tipos de utilidad para trabajar con cadenas decaracteres.

• Las funciones declaradas en string.h funcionan encualquier plataforma que soporte ANSI C. Sin embargo,existen algunos problemas de seguridad con estasfunciones, como el desbordamiento de arreglos, quehacen que algunos programadores prefieran opcionesmás seguras frente a la portabilidad que estas funcionesofrecen. Además, las funciones para cadenas decaracteres sólo trabajan con conjuntos de caracteresASCII o extensiones ASCII compatibles.

19

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 283: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Para poder utilizar las funciones del manejo decadenas, es necesario incluir la biblioteca:

#include <string.h>

• Además, es importante preservar el carácter determinación NULL ‘\0’, ya que con éste es como Cdefine y maneja las longitudes de las cadenas.

• Todas las funciones de la biblioteca estándar para elmanejo de cadenas de C lo requieren para unaoperación satisfactoria.

20

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 284: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Funcionesparamanipulacióndearreglosdecaracteres(Manipulacióndecadenas)

• Las funciones de uso más común de dicho archivode cabecera son:

Nombre de la función

Descripción

strcat() char* strcat (char* destino, const char* fuente)Añade la cadena fuente al final de la destino. Devuelve la cadena destino. 

strlen() size_t strlen( const char* s )Devuelve la longitud de la cadena s

strncpy() char* strncpy( char* dest, const char* fuente, size_t n)Copia n caracteres de la cadena fuente a la cadena destino

strcpy() char* strcpy( char* dest, const char* fuente)Copia la cadena de caracteres de la cadena fuente a la cadena destino

21

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 285: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Nombre de la función Descripción

strncat() char* strncat( char* s1, const char* s2, size_t n)Añade los primeros n caracteres de S2 a S1. Devuelve s1 si n>=strlen(s2), entonces strncat tiene el mismo efecto que strcat.

strchr() char* strchr( const char* s1, int ch)Devuelve un apuntador a la primera ocurrencia de ch en s1, devuelve NULL si ch no se encuentra en s1.

strcmp() int strcmp( const char* s1, const char* s2)Compara alfabeticamente la cadena s1 con s2 y devuelve un dato de:cero  si s1 == s2menor que cero si s1 < s2mayor que cero  si s1 > s2

strcspn() size_t strcspn( const char* s1, const char* s2)Devuelve la longitud de la subcadena más larga de s1 que comienza con el carácter s1[0] y no contiene ninguno de los caracteres de la cadena s2.

*Consultar las funciones de la librería "string.h" de ANSI C22

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 286: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

PruebaymanejodecaracteresenC<ctype.h>

• Una biblioteca relacionada #include <ctype.h> lacual contiene muchas funciones útiles para convertiry probar caracteres individuales.

• Las funciones más comunes para revisar caracterestienen los siguientes prototipos:• int isalnum(int c): Verdad si c es alfanumérico.• int isalpha(int c): Verdad si c es una letra.• int isascii(int c): Verdad si c es ASCII.• int iscntrl(int c): Verdad si c es un caracter de control.• int isdigit(int c): Verdad si c es un dígito decimal.• int isgraph(int c): Verdad si c es un caracterimprimible, exceptuando el espacio en blanco.

23

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 287: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• int islower(int c): Verdad si c es una letra minúscula.• int isprint(int c): Verdad si c es un caracter imprimible,incluyendo el espacio en blanco.

• int ispunct(int c): Verdad si c es un signo depuntuación.

• int isspace(int c): Verdad si c es un espacio• int isupper(int c): Verdad si c es una letra mayúscula.• int isxdigit(int c): Verdad si c es un dígito hexadecimal.

• Las funciones para conversión de caracteres son:• int toascii(int c): Convierte c a ASCII o un unsigned charde 7 bits, borrando los bits altos.

• int tolower(int c): Convierte la letra c a minúsculas, sies posible.

• int toupper(int c): Convierte la letra c a mayúsculas, sies posible.

24

Algo

ritmia  y program

ación estructurada

4.1 Arreglo un

idim

ensio

nal

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 288: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

UnidadIV“Arreglosytiposestructurados”

4.2Arreglosdemásdimensiones

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 289: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• Arreglos multidimensionales• Inicialización de arreglos multidimensionales• Lectura‐escritura de elementos de arreglos multidimensionales

2

Algo

ritmia  y program

ación estructurada

4.2 Arreglos de más dim

ensio

nes

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 290: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Arreglosmultidimensionales• Los arreglos multidimensionales son los que tienenmás de una dimensión, los más usuales son los dedos dimensiones que también son conocidos comotablas o matrices.

3

Algo

ritmia  y program

ación estructurada

4.2 Arreglos de más dim

ensio

nes

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 291: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Una arreglo de dos dimensiones tienen 2 índices que nos ayudan a ubicar un elemento dentro del arreglo. 

4

Algo

ritmia  y program

ación estructurada

4.2 Arreglos de más dim

ensio

nes

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 292: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

La sintaxis para la declaración de un arreglo de dosdimensiones seria:

<tipo_dato> identificador [tam_filas][tam_columnas];

• Por ejemplo:int datos[3][3];

• Esta línea de código declara un arreglo en dosdimensiones de 3 X 3 elementos, es decir, este arreglocontendrá en su interior 9 elementos de tipo entero.

5

Algo

ritmia  y program

ación estructurada

4.2 Arreglos de más dim

ensio

nes

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 293: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Accesoarreglosmultidimensionales• Para acceder a alguno de sus elementos se utilizan losdos índices, es decir:

datos[0][2] = 12;datos[2][0] = 0;datos[2][2] = 30;

• Un arreglo en dos dimensiones en realidad es un arreglode arreglos unidimensionales, es decir, cada elementodel un arreglo no es un valor entero, sino que cadaelemento es un arreglo.

0 1 2

0 12

1

2 0 30Los arreglos vande 0 hasta n‐1, datos es un arreglode 3 X 3 entonces datos[2][2] hace referencia al ultimo elemento del arreglo

6

Algo

ritmia  y program

ación estructurada

4.2 Arreglos de más dim

ensio

nes

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 294: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Es decir:int datos[3][3];

Es un arreglo que contiene 3 arreglos de treselementos cada uno.

datos[0]

datos[1]

datos[2]

datos[2][0]

datos[2][1]

datos[2][2]

7

Algo

ritmia  y program

ación estructurada

4.2 Arreglos de más dim

ensio

nes

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 295: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Inicializacióndearreglosmultidimensionales• Existen varia formas de inicializar un arreglo de dosdimensiones:

a) int datos[3][3] = { 1,2,3,4,5,6,7,8,9};b) int datos[3][3] = { {1,2,3},{4,5,6},{7,8,9}};c) int datos[3][3] = { {1,2,3},

{4,5,6},{7,8,9}};

d) o finalmente con un ciclo anidado:

for ( i = 0; i < 3; i++){ //i manipulara las filasfor( j = 0; j < 3; j++){ //j las columnas

datos[i][j] = rand()%30; //Se delimita los valores} //entre 0 y 30

}

Todas estas inicializaciones tienen el mismo efecto.8

Algo

ritmia  y program

ación estructurada

4.2 Arreglos de más dim

ensio

nes

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 296: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Lectura‐escrituradeelementosdearreglosmultidimensionales• Para escribir o leer un elemento de un arreglobidimensional siempre se va a requerir utilizar losdos índices con los cuales se declaro el arreglo.

• Para escribir en uno de ellos, obteniendo el valordesde consola sería:

int datos[3][3];printf( "Escribe un dato entero: \n" );scanf( "%d", &datos[1][2] );printf( El dato capturado fue: %d , &datos[1][2] ); 9

Algo

ritmia  y program

ación estructurada

4.2 Arreglos de más dim

ensio

nes

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 297: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Mandarporreferenciaaunafunciónunarreglounidimensionalodedosdimensiones• Para mandar por referencia un arreglo a una función sedebe entender que el nombre del arreglo, es decir, elidentificador que se le coloco al arreglo es un apuntador,por lo tanto para mandar un arreglo a una función sehace de la siguiente forma:

int arregloInt[10];funcion( arregloInt );...

int funcion( int *ptr ){ptr[0] = 123;ptr[1] = 7;

}

Se manda el nombre arregloIntque es un apuntador que contiene la dirección del primerelemento dentro del arreglo.

La referencia del arregloInt se debe recibir con una variable apuntador del mismo tipo que fuedeclarado el arreglo.Hacen ya referencia 

directamente a loselementos de arregloInt

10

Algo

ritmia  y program

ación estructurada

4.2 Arreglos de más dim

ensio

nes

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 298: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Mandarporreferenciaaunafunciónunarreglounidimensionalodedosdimensiones• Para un arreglo de dos dimensiones sucede lo mismo,solo hay que tomar en cuenta que el nombre de arreglomultidimensional es un apuntador a apuntadores, esdecir, el apuntador a apuntadores quedara definidodependiendo de la dimensión del arreglo, así para unarreglo de dos dimensiones:

int arreglo2D[5][10];funcion(arreglo2D);...

int funcion2( int (*ptr)[10] ){ptr[5][8] = 1;ptr[9][6] = 7542;

}

Se recibe con un apuntador a cadenaya que se trata de un arreglo de 2Dy su nombre seria un apuntador a una cadena

Hacen ya referencia directamente a loselementos de arreglo2D

11

Algo

ritmia  y program

ación estructurada

4.2 Arreglos de más dim

ensio

nes

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 299: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

UnidadIV“Arreglosytiposestructurados”

4.3Diferenciaentreaccesodememoriadinámicayestática

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 300: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• Introducción• Dirección de memoria• Definición de apuntador

• Declaración de un apuntador• Inicialización de un apuntador• Indirección de un apuntador• Operadores para utilizar apuntadores

• Apuntadores NULL y void• Apuntadores a apuntadores• Aritmética de apuntadores• Paso por referencia en funciones• Memoria dinámica• Asignación dinámica de memoria

• Función malloc()• Uso de malloc() para generar un arreglo bidimensional

• Uso de free() para liberar la memoria asignada dinámicamente• Función calloc()• Función realloc()

2

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 301: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Introducción• Los apuntadores o punteros son otros tipos de datoque se utilizan en lenguaje de programación C.

• Su utilidad radica en que permiten a un programaser más potente, dinámico y flexible.

• Además, su uso le da al lenguaje C su potencia y lapopularidad que ha adquirido, debido a quepermiten el acceso a memoria de manera máseficiente, sin embargo, una mala referencia a dichamemoria provocará en el programa una salidainesperada.

3

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 302: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Trabajar con apuntadores implica la nomanipulación de variables en sí, sino manejardirecciones de memoria en la cuales residen losdatos.

• Una variable apuntador o puntero, es una variableque contiene direcciones de otras variables, esdecir, almacenan la dirección de memoria donde seencuentran los datos asociados a dichas variables.

4

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 303: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Direccióndememoria• Cuando una variable se declara, se le asocian tresatributos fundamentales a dichas variables: suidentificador, su tipo de dato y su dirección dememoria.

por ejemplo:

int n;

0x4fffd34

1234nint

dirección de memoria

valor de la variable

tipo de dato

identificador 5

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 304: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Definicióndeapuntador• Cuando se declara una variable en C, el compiladorestablece un área de memoria para almacenar elcontenido de la variable, cuando se hacer referenciaa dicha variable, el compilador accedeautomáticamente a la dirección de memoria dondese almacena el contenido la variable para poderutilizarla.

• Cuando se declara una variable de tipo apuntador,el compilador también le asigna una dirección dememoria 6

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 305: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Cuando se declara una variable de tipo apuntador,el compilador también le asigna una dirección dememoria, sin embargo, en esa localidad dememoria no se almacena un dato, sino la direcciónde una variable del mismo tipo que se declaro elapuntador, es decir:

int variable = 30;int *ptr = &variable;

7

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 306: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Los apuntadores en C se rigen por la siguientesreglas básicas:1. Un apuntador es una variable como cualquier otra;

2. Una variable apuntador contiene una dirección queapunta a otra posición de memoria;

3. En esa posición de memoria se almacenan los datosa los que apunta el apuntador;

4. Un apuntador apunta a una variable que seencuentra almacenada en alguna parte de lamemoria física. 8

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 307: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Declaracióndeunapuntador• Al igual que todas la variables, los apuntadores deben de serdeclarados antes de ser utilizados, la forma de declarar unapuntador es el siguiente:

<tipo_de_dato_apuntado> * <identificador_apuntador> = & <variable_a_apuntar>;

donde:• <tipo_de_dato_apuntado>: Es el tipo de dato al cual va aapuntar el apuntador;

• *: Es el elemento que dice que la variable va a ser unapuntador;

• <identificador_apuntador>: Es el nombre delapuntador;

• &: Es el elemento para obtener la dirección de la variableapuntada;

• <variable_a_apuntar>: Identificador de la variable aapuntar.

9

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 308: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Inicializacióndeunapuntador• Como sucede con las variables locales, C no inicializa unapuntador cuando se declara y es preciso inicializarloantes de su uso ya que de lo contrario no se estaráhaciendo referencia a ninguna localidad de memoria,provocando un error en tiempo de compilación.

• Para asignar la dirección de memoria a un apuntador seutiliza el operador de referencia de dirección &, porejemplo:

int *ptr = &x;

A este tipo de inicialización también se le llama inicializaciónestática ya que la dirección de memoria es fija y no puededesaparecer, es decir, la memoria para la variable siempre estaráreservada hasta que termine el programa.

10

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 309: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Existe un segundo método para inicializar un apuntador y esmediante la asignación dinámica de memoria, para realizareste proceso se utilizan funciones de asignación de memoriacomo malloc(), calloc(), realloc() y free(). Seretomarán cuando se vea el tema de manejo de memoriadinámica.

• Para asignar un nuevo valor o recuperar dicho valor que seencuentra almacenado en localidad de memoria a la queapunta el apuntador se utiliza el operador de indirección *.por ejemplo:int variable2;int variable = 30;int *ptr = &variable;*ptr = 45;variable2 = *ptr;

Se inicializa el apuntador ptrSe cambia el valor de la localidad de memoria

Se obtiene el valor de la localidad de memoria a la que apunta ptr

11

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 310: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Los apuntadores se enlazan a tipos de datosespecíficos y el compilador también verifica que lasvariables que se asignan al apuntador son del tipocorrecto, ya que de otra forma se estará generandoun error en tiempo de ejecución, es decir, Crequiere que las variables apuntador direccionenrealmente variables del mismo tipo de dato ligadoen s declaración.int n=1234;int * ap = &n;

0x4fffd341234nint

dirección de memoriavalor de la variabletipo de dato identificador

0x4fffd34 0x4fffd38apInt *

12

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 311: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Indirección deunapuntadorOtro ejemplo:int edad;int *ptr_edad;ptr_edad = &edad;*ptr_edad = 50;printf("%d", edad);printf("%d", *ptr_edad);

Ejemplo:

Otra forma de inicializar ptr, nótese que enesta línea ya no es necesario utilizar el *ya que si se utiliza sería un error. Se utiliza el *sólo en la declaración del apuntador

#include <stdio.h>char c; //variable global

int main( void ){char *ptr_char;ptr_char = &c; //apuntar a la variable globalfor( c = 'A'; c <= 'Z'; c++ ){

printf( "%c",*ptr_char );}return 0;

}13

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 312: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Operadoresparautilizarapuntadores

Operador Propósito

& Operador de dirección: obtiene la dirección de la variable

* Operador de indirección: permite modificar u obtener el contenido del dato que se encuentra en la localidad de memoria 

que apunta el apuntador.

* Nota: En una declaración define la variable como apuntadorP.e. int * apuntador;

14

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 313: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

ApuntadoresNULL yvoid• Cuando se declara un apuntador, elcompilador no lo inicializa, es decir, tendrá unvalor aleatorio, esto condiciona a que si se leasigna la dirección de una variable, elcompilador no sepa a que tipo de dato sequiera apuntar.

• Si se requiere, existen dos tipos deapuntadores especiales: los apuntadoresvoid y NULL (nulo). 15

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 314: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Apuntador NULL• Un apuntador nulo no apunta a ninguna localidad dememoria o dato valido, este es muy útil cuando serequiere indicar al programa que valide cuando elapuntador no esta apuntando a nada (dato no valido). Esdecir, es muy útil para propósitos de comparación en unaestructura condicional o en una iterativa, por ejemplo:

if( ptr == NULL ){

. . .}

while( ptr != NULL ){

. . .

}

NULL es una macro de tipo:#define NULL 0que se encuentra definida en las bibliotecas stdef.h, stdio.h, stdlib.hy string.h

16

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 315: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Otra forma de declarar un apuntador nulo es:

int *ptr = (int *) 0;

El casting (int *) no es necesario ya que existe unaconversión estándar de 0 a una variable apuntador.

• Nunca se utiliza un apuntador para referenciar un valor, solose utiliza para saber si el apuntador se ha inicializadocorrectamente o para saber cuando el apuntador a dejadode apuntar a un dato valido, es decir, en un test decomparación.

char *ptr;ptr = malloc(121*sozeof(char));if( ptr == NULL )

printf("Error de asignacion de memoria…"); 17

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 316: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Apuntador void• Los apuntadores void son apuntadores que apuntan acualquier tipo de dato, es decir, no se inicializa con untipo de dato especifico, también son llamadosapuntadores genéricos. La forma de declarar unapuntador void es:

void *ptr;

• Un apuntador void permite a una función especificarun parámetro de entrada para recibir cualquier tipo deapuntador sin que se produzca un error de tipos.

18

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 317: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

#include <stdio.h>void funcion( void *p );char c; //variable global

int main( void ){

char *ptr_char;float *pf;int *pd;int variable1 = 10;float variable2 = 343.3543;ptr_char = &c;pd = &variable1;pf = &variable2;funcion( pd );printf( "\n%d",variable1 );c = ‘a’;funcion( ptr_char );printf( "\n%c", c );funcion( pf );printf( "\n%f",variable2 );return 0;

}

void funcion( void *p ){

int *ptr = p;*ptr+=1;

}

19

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 318: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Apuntadoresaapuntadores• Un apuntador puede apuntar a otro apuntador, pararealizar esta operación se hace preceder a la variableapuntador el numero de asteriscos necesarios paradireccionar a los apuntadores, es decir:

int valor = 1222;int *ptr_1 = &valor;int **ptr_2 = &ptr_1;int ***ptr_3 = &ptr_2;*ptr_1 = 105;**ptr_2 = 3292;***ptr_3 = 232;

Actualizan el valor dela variable valor

20

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 319: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Aritméticadeapuntadores• Un apuntador es una variable que puede modificarel valor al que apunta, es decir, se puede realizarciertas operaciones aritméticas con ellos.

• A un apuntador se le puede sumar o restar unentero n; esto hace que apunte n posiciones haciaadelante o hacia atrás de la dirección actual en lapila de memoria, sin embargo, a un apuntador no sele puede sumar o restar un número de comaflotante, ni multiplicar, ni dividir.

ptr = ptr + n;21

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 320: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• A un apuntador se le puede aplicar el operador ++ y ‐‐,esto hace que obtenga la dirección del siguiente oanterior elemento en la memoria de datos, porejemplo, si se declara un apuntador con un tipo de datoint entonces la siguiente dirección que apunte elapuntador será cuatro localidades después o antes dela referencia actual dependiendo del tipo de operadorque se le haya aplicado.

22

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 321: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

#include <stdio.h>int main( void ){

//programa que utiliza un apuntador para modificar el //valor de diferentes variables de tipo enteroint a,b,c,d,e,f,g,h,i,j;int n;int *ptr = &a;for( n = 0; n < 10; n++ ){

*ptr = n;ptr‐‐;

}printf( "valor de las variables: \n" );printf( "%d, %d, %d, %d, %d, %d, %d, %d, %d, %d", a, b, c,d, e, f, g, h, i,j);printf( "\n\nvalor de sus direcciones: \n" );printf( "%d, %d, %d, %d, %d, %d, %d, %d, %d, %d", &a, &b,&c, &d, &e, &f, &g, &h, &i, &j);return 0;

}

23

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 322: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

24

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 323: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• En general, cada vez que se incrementa un apuntador,apuntará a la posición de memoria del siguienteelemento de su tipo base. Cada vez que se decrementaapuntará a la posición de memoria del anterior. Cuandose utilizan variables de tipo char, pareciera que laaritmética toma sentido, esto es debido a que un charocupa un byte de espacio de memoria.

• El resto de los apuntadores aumentarán ydecrementarán la longitud de memoria referente al tipode dato a los que apuntan.

25

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 324: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Pasoporreferenciaenfunciones• El convenio de paso de parámetros a una función de C sóloes el paso por valor (se pasa la copia del valor de la variableen cuestión), sin embargo, se puede realizar el paso deparámetros a una función por referencia, es decir, pasar ladirección de memoria de una variable a una función paraque dicha función pueda trabajar sobre la localidad dememoria que se le asigno a la variable.

• En este caso, se dice que se esta pasando un apuntador a lafunción.

• Un apuntador se pasa a una función como cualquier otroargumento, para que esto funcione en la función se debedeclarar los parámetros como tipo apuntador.

26

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 325: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Para pasar una variable por referencia, el operador dedirección & debe de anteceder el identificador de lavariable y el parámetro que reciba la dirección de esavariable se deberá declarar como apuntador.

#include <stdio.h>int funcion( int *, int * );

int main( void ){int x,y;int valorRetorno;x = 20;y = 34;printf( "Valor de x: %d y de y: %d",x,y );valorRetorno = funcion(  &x, &y  );printf( "\nNuevo valor de x: %d y de y: %d",x,y );printf( "\nEl valor de valorRetorno es: %d", valorRetorno );return 0;

}

int funcion( int *x, int *y ){int variable;*x = *x * 4;*y = *x ‐ *y;variable = *x + *y;return variable;

} 27

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 326: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Memoriadinámica• En muchas ocasiones no es posible conocer de antemano lacantidad de variables necesarias para un programacomputacional.

• Existen aplicaciones que requieren de enormes cantidades dearreglos o datos por momentos breves en el funcionamientodel mismo, por lo que no es viable declarar de antemano aestas como variables, globales o locales de una función. Loanterior implica emplear funciones de ANSI C que permitenreservar memoria de manera dinámica y ampliarla, reducirlao destruirla en tiempo de ejecución.

• El manejo de memoria dinámica es la base del poder dellenguaje C y le da la capacidad de crear programas complejosque emplean grandes cantidades de memoria y los maneja demanera eficiente. 28

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 327: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Todos los programas definen variables que pueden serdefinidas como globales y locales.

• Las variables globales y del programa principal (main) sealmacenan en posiciones fijas de la memoria llamadamemoria de datos.

• Las variables locales se almacenan en el segmento dememoria llamada pila y existen solo cuando se hace unainvocación a la función que las declaro. También se puedendeclarar variables estáticas locales que también sealmacenan en segmentos fijos de memoria o en lamemoria de datos , sin embargo, también estándisponibles en la función que las declaro.

29

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 328: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Todas estas variables comparten una característica encomún, se definen cuando se compila el programa. Estosignifica que el compilador reserva espacio en memoria paraalmacenar los valores para estas variables.

• Sin embargo, no todas las veces es posible conocer elnumero de variables con el que va a constar nuestroprograma. C ofrece al desarrollador la opción de creardiferentes tipos de variables de forma dinámica, para creartales variables se utilizan funciones como: malloc(),realloc(), calloc(), y free().

• Las regiones de memoria que reservan/liberan estasfunciones son almacenadas en elmontículo o heap.

30

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 329: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Código (Main y código de funciones empleadas)

Datos (Variables globales y declaradas dentro del 

main)

Pila

Memoria de proceso activo

Pila(Stack)(Variables y datos de las funciones al estar en ejecución)

Montículo (Heap)(Variables dinámicas del programa)

31

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 330: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Asignacióndinámicadememoria• Por lo regular cuando se diseña un algoritmo, se debeconocer que elementos de entrada tendrá y cual será lasalida, sin embargo, en algunas ocasiones no se sabe deforma exacta el numero de variables que requeriránuestro algoritmo.

• Por ejemplo, suponga que se van a registrar el numerode calificaciones de un conjunto de alumnos, pararesolver este problema se podría utilizar una arreglo decalificaciones, sin embargo, si el numero de alumnoscrece, nuestro programa ya no seria valido, puesto queno existen los recursos necesarios para almacenar todoslos datos validos.

Para resolver este problema es necesario recurrir al uso deapuntadores y a la asignación dinámica de memoria. 32

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 331: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• El espacio de memoria asignado a una variablegenerada de manera dinámica se crea durante laejecución del programa (tiempo de ejecución), alcontrario de las variables declaradas en código, queel espacio de memoria se les asigna en tiempo decompilación.

• Una variable que es generada dinámicamente, seconstruye (por ejemplo con malloc) y se puededestruir en tiempo de ejecución (uso de free).

33

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 332: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Recordatorio• Las instrucciones de un programa compilado sesitúan en segmentos de memoria denominadosegmento de código (memoria de programa). Losdatos del programa, tales como variables globales,se almacenan en un área denominado segmento dedatos. Las variables locales y el respaldo de losregistros de control del programa se sitúan en elsegmento llamado pila. Y cuando un programasolicita memoria dinámica para una variable, se leasigna memoria del segmento denominadomontículo o heap.

34

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 333: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Funciónmalloc()• malloc() es la forma más habitual de obtenerbloques de memoria dinámica. La función genera oasigna un bloque de memoria que es el numero debytes pasados como argumento.

• malloc() devuelve un apuntador void* al bloque dememoria asignado, por lo tanto, hay que realizar uncast al tipo de apuntador requerido, para hacerbuen uso de la memoria o de los datos que selleguen a almacenar en dicho bloque de memoria.

Nota: Todas las funciones de asignación dinámica dememoria se encuentran definidas en la bibliotecastdlib.h

35

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 334: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• El prototipo de la función malloc() sería:void* = malloc( size_t bytes);

• Donde:

• void*: es el apuntador que almacenará lareferencia o apuntara al bloque dememoria generado.

• bytes: es el tamaño en bytes del bloquede memoria que se va a solicitar.

36

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 335: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Por ejemplo:

#include <stdio.h>#include <stdlib.h>

int main( void ){char *c;int *entero;float *flotante;double *doble;

//Uso de malloc para generar variables sencillasc = (char *)malloc( 1 );entero = (int *)malloc( 4 );flotante = (float *)malloc( 4 );doble = (double *)malloc( 8 );

*c = 'a';*entero = 10;*flotante = 3.89172378;*doble = 1.48263;

printf( "valores: caracter %c, entero %d, flotante %f, doble %lf \n\n",*c, *entero, *flotante, *doble );

//Importantísimo liberar la memoria//cuando ya no es requeridafree( c );free( entero );free( flotante );free( doble );

//otra forma de generar la memoria//dinámica seria:c = (char *)malloc( sizeof(char) );entero = (int *)malloc( sizeof(int) );flotante = (float *)malloc( sizeof(float) );doble = (double *)malloc( sizeof(double) );

*c = 'c';*entero = 2378;*flotante = 128.89172378;*doble = 18947282.48263;

printf( "valores: caracter %c, entero %d, flotante %f, doble %lf",

*c, *entero, *flotante, *doble );free( c );free( entero );free( flotante );free( doble );return 0;

}

37

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 336: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• La función sizeof se utiliza con mucha frecuencia parareferirnos al tamaño de memoria que se va a generarpor las funciones de memoria dinámica. Por ejemplo, sise requiere reservar un bloque de memoria para unarreglo de 10 enteros:

int *ptr;ptr = (int *)malloc( 10 * sizeof(int) );

• Al llamar a malloc() puede ser que no haya suficientememoria disponible, entonces, malloc() devolveráNULL en la operación, por lo tanto, siempre esconveniente preguntar después de la operación si seasigno el bloque de memoria.

int *ptr;ptr = (int *)malloc( 10 * sizeof(int) );if( ptr == NULL){printf( "No hay memoria disponible…\n" ); //no utilizar ptrreturn; //fin del programa o realizar la acción conveniente

}//utilizar ptr

38

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 337: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Si no se conoce el tamaño de memoria que se quierereservar al momento de diseñar un algoritmo, dicho tamañose puede solicitar al usuario y generar el bloque de memoriaen tiempo de ejecución. Un pequeño ejemplo seria elsiguiente:

Nota importante: Los apuntadores que se utilizan para hacer referencia al bloque dememoria asignado por malloc() son de tipo dinámico y NO es conveniente quedichos apuntadores apunten a otro lugar antes de liberar el bloque de memoriaasignado ya que se estará perdiendo la referencia al bloque de memoria y no abraforma de recuperar la referencia ha esta, por lo tanto, la memoria no será liberada yhasta finalizar el programa.

int tam;int *ptr;printf( "Ingresa el tamaño del arreglo " );scanf( "%d", &tam; );ptr = (int *)malloc( tam * sizeof(int) );

39

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 338: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

•Un arreglo bidimensional en realidad esun arreglo cuyos elementos son arreglos.Si el nombre de un apuntadorunidimensional es un apuntador sencillo,entonces, el nombre de un arreglobidimensional será un apuntador aapuntadores sencillos. Para asignarmemoria a un arreglo multidimensional,se indica cada dimensión del arreglo aligual que se declara un arreglounidimensional. 40

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 339: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Usodemalloc() paragenerarunarreglobidimensional• Para generar al arreglo bidimensionalutilizando memoria dinámica se hace en dospasos:1. Se solicita la memoria para crear un arreglo

de apuntadores que van a apuntar a cadafila del arreglo.int **arr2d = (int *)malloc( 10 * sizeof(int *) );

1. Se solicita memoria para almacenar elnumero de elementos que va a formarcada fila o arreglo unidimensional.arr2d[i] = (int*)malloc( elemFilas * sizeof( int ) );

41

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 340: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

arr2d

arr2d[0]arr2d[1]arr2d[2]arr2d[3]

arr2d[4]arr2d[5]arr2d[6]arr2d[7]

arr2d[8]arr2d[9]

Donde cada arr2d[i] es un apuntador sencillo que apunta a un arreglo unidimensional de tamaño n.

Arreglosunidimensionales de tamaño n

Arreglo de apuntadores sencillos

42

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 341: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

#include <stdio.h>#include <stdlib.h>

int main(){int **arr2d, **aux;int tamFilas, elemFilas,i,j;int tam;do{system( "cls" );printf( "Ingresa el numero de filas: " );scanf( "%d", &tamFilas );

}while( !(tamFilas > 0) );arr2d = (int**)malloc( tamFilas * sizeof( int* ) );aux = arr2d;//para asignar el tamaño de cada una de las filas o arreglos//unidimensionalesfor( i = 0; i < tamFilas; i++ ){do{printf( "Ingresa un valor valido de elementos de una fila: " );scanf( "%d", &elemFilas );

}while( !(elemFilas > 0) );

//dos formas para generar los arreglos unidimensional //de elementos

//1.‐arr2d[i] = (int*)malloc( elemFilas * sizeof( int ) );

//2.‐/* *aux = (int*)malloc( elemFilas * sizeof( int ) );aux++;*/

//asignar valores a cada arreglo arr2D[i]

srand( time(NULL) );for( j=0; j<elemFilas; j++ ){arr2d[i][j] = rand()%100;

}

//imprimir los valoresfor( j=0; j<elemFilas; j++ ){printf( "%d ", arr2d[i][j] );

}printf( "\n");

}

//liberar la memoriafor(i=0; i<tamFilas; i++ ){free( arr2d[i] );

}free( arr2d );return 0;

}

43

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 342: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Usodefree() paraliberarlamemoriaasignadadinámicamente• Cuando se termina de utilizar un bloque de memoriapreviamente asignado por cualquier función de asignacióndinámica de memoria, se debe liberar el espacio dememoria y dejarlo disponible para otros procesos, esto serealiza utilizando la función free(). El prototipo lafunción free es:

void free(void *ptr);

• Donde: *ptr es el apuntador que hace referencia al bloquede memoria asignado, si ptr es NULL entonces free nohace nada.

• Si embargo, si ptr es un apuntador mal referenciado, el usode free probablemente destruya el mecanismo de gestiónde memoria y provocará un fallo en la aplicación.

44

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 343: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Funcióncalloc()• calloc() es otra función que permiteobtener memoria dinámica. Al igual quemalloc() devuelve un apuntador void*que hace referencia al bloque de memoriagenerado o NULL si no existe memoriasuficiente para generar el bloque solicitado,por tal motivo, también es necesario realizarun cast a un apuntador valido para manejarlos datos que se van a almacenar en elbloque de memoria asignado. 45

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 344: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• El prototipo de la función calloc() es:

void* calloc( size_t n, size_t t );

• Donde:• n: es el numero de datos que se van a almacenaren la memoria.

• t: es el tamaño de cada elemento, es decir, eltamaño del tipo de dato.

46

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 345: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Forma de uso:puntero = (tipo*) calloc( numElem, tamElem );

Donde:puntero: es un apuntador valido que hace referencia al bloque dememoria generado.tipo *: es el cast al un apuntador valido.numElem: es el numero de elementos que se van a almacenar en elbloque de memoria.tamElem: es el tamaño del tipo de dato que se va a almacenar en lamemoria.

calloc() una cantidad de memoria igual a numElem * tamElem.Es decir, calloc() asigna memoria suficiente para un arreglo quecontiene numElem elementos con un tamaño tamElem cada uno.

Por ejemplo:

int *ptr;ptr = (int *)calloc( 10, sizeof(int) );

47

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 346: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Ejemplo:

#include <stdio.h>#include <stdlib.h>

int main( void ){char *c;int *entero;float *flotante;double *doble;

c = (char *)calloc( 1,1 );entero = (int *)calloc( 1,4 );flotante = (float *)calloc( 1,4 );doble = (double *)calloc( 1,8 );

*c = 'a';*entero = 10;*flotante = 3.89172378;*doble = 1.48263;

printf( "valores: caracter %c, entero %d, flotante %f, doble %lf \n\n",*c, *entero, *flotante, *doble );

//Importantisimo liberar la memoria//cuando ya no es requeridafree( c );free( entero );free( flotante );free( doble );

//otra forma de generar la memoria//dinamica seria:c = (char *)calloc( 1, sizeof(char) );entero = (int *)calloc( 1, sizeof(int) );flotante = (float *)calloc( 1, sizeof(float) );doble = (double *)calloc( 1, sizeof(double) );

*c = 'c';*entero = 2378;*flotante = 128.89172378;*doble = 18947282.48263;

printf( "valores: caracter %c, entero %d, flotante %f, doble %lf",

*c, *entero, *flotante, *doble );free( c );free( entero );free( flotante );free( doble );return 0;

}

48

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 347: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Funciónrealloc()• realloc() es la tercera función para obtenermemoria dinámica. También devuelve unapuntador void* que hace referencia al bloquede memoria por lo tanto necesario realizar uncast a un apuntador valido.

• A diferencia de malloc() y calloc(),realloc() cambia el tamaño de un bloque dememoria asignado dinámicamente, es decir,toma como parámetro de entrada un apuntador*ptr a esa memoria y dependiendo de unsegundo parámetro incrementará o reducirá eltamaño de dicho bloque de memoria.

49

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 348: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• El prototipo de la función es:void* realloc(void* ptr, size_t t);

• Donde:• ptr: es el apuntador que hace referencia a unbloque de memoria generado dinámicamente.

• t: es el nuevo tamaño en bytes para el bloque dememoria referenciado por ptr. t pude ser mayoro menor que el bloque original.

• Se devuelve un apuntador debido a que puedeque realloc() tenga que desplazar el bloqueoriginal para poder modificar su tamaño. Si estees el caso, se copia la información del bloqueoriginal (hasta t bytes) en el nuevo bloque. 50

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 349: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Forma de uso:puntero = (tipo*) realloc( ptr, nuevoTam );

Donde:puntero: es un apuntador valido que hace referencia albloque de memoria generado.tipo *: es el cast al un apuntador valido.ptr: el apuntador que hace referencia a un bloque dememoria generado dinámicamente.nuevoTam: es el nuevo tamaño para el bloque dememoria referenciado por ptr.

51

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 350: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Hay que tener en cuanta varias consideraciones alutilizar la función realloc():

1. En el C99 se especifico que la memoria referenciadapor ptr se libera y se crea un nuevo bloque.

2. El nuevo bloque contiene la misma información que elbloque original (hasta la longitud especificada pornuevoTam). Se regresa un apuntador al nuevo bloquede memoria, sin embargo, el compilador puedegenerar el nuevo bloque a partir de la mismadirección de inicio del bloque anterior, es decir, elnuevo bloque puede contener la misma dirección deinicio que el bloque anterior. 52

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 351: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

3. Si ptr es NULL, realloc() simplemente genera elbloque de memoria especificado por nuevoTam. SinuevoTam es cero, se libera la memoriareferenciada por ptr y la función devuelve NULL.

4. Si no hay memoria suficiente para asignarnuevoTam bytes, realloc() devuelve unapuntador NULL y el bloque original permaneceráintacto.

53

Algo

ritmia  y program

ación estructurada

4.3 Diferencia entre acceso de

 mem

oria dinám

ica y estátic

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 352: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

UnidadIV“Arreglosytiposestructurados”

4.4Tiposestructurados

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 353: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• Introducción• Estructuras• Declaración de una estructura• Definición de variables de una estructura• Inicialización de una estructura• Crear una referencia a una estructura desde el método main

• Acceso a una estructura• Estructuras anidadas• Sinónimo de un tipo de dato 2

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 354: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Introducción• C proporciona cinco diferentes elementos paracreación de tipos de datos propios, es decir, tiposde datos que permiten al programador crearaplicaciones más potentes:• Estructuras: es la agrupación de variables deldiferente tipo, bajo un mismo nombre.

• Unión: permite que la misma parte de memoria seadefinida como dos o más tipos de variablesdiferentes.

• Campo de bits: es un tipo especial de estructura ounión que permite el fácil acceso a bits individuales.

• Enumeración: es una lista de constantes enteras connombre.

3

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 355: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Estructuras• El uso de las estructuras o tipos de datosestructurados, permiten al usuario crear nuevostipos de datos más versátiles y específicos, paracrear aplicaciones más potentes y resolverproblemas aun más complejos. E.g., diseñarelementos que contengan registros para una basede datos, creación de datos como: pilas, colas,árboles, etc.

4

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 356: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• La potencia de las estructuras radica en que estánconstituidas por múltiples variables, que pueden serde diferentes tipos de datos e incluso una estructurapuede contener a otras estructuras como tipos dedato.

• Un arreglo es un tipo de dato estructurado, ladiferencia entre un arreglo y una estructura radicaen que: un arreglo está constituido por undeterminado numero de elementos, todos del mismotipo, sin embargo, como ya se menciono, unaestructura es homogénea, es decir, puede estarconstituida por diferentes tipos de datos (datossimples, arreglos, estructuras, etc).

5

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 357: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Definición de estructura: Una estructura es unacolección de variables que se referencian bajo unúnico nombre, proporcionando un medioconveniente de mantener junta informaciónrelacionada.

• La declaración de una estructura forma unaplantilla que puede utilizarse para crear objetosestructuras, es decir, generar múltiples variablesque tengan el cuerpo de la estructura ya definida.

• A las variables que componen o se encuentrandentro de una estructura se les llama miembros,elementos o campos de la estructura.

6

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 358: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Declaracióndeunaestructura• Como ya se menciono, un estructura es un tipo dedato definido por el programador y al igual que lasdemás variables se debe declarar antes de utilizarla.

La firma de una estructura es:struct <identificador de la estructura>{

<tipo de dato miembro1> <identificador1><tipo de dato miembro2> <identificador2>. . .<tipo de dato miembron> <identificadorn>

};El fin de la declaración de la estructura debe terminar con punto y coma (;)

7

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 359: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Por ejemplo si quisiéramos declarar una estructuraque almacene los datos de una persona, en estecaso seria:

struct persona{

char nombre[20];char domicilio[100];int edad;char CURP[18];long int telefono;. . .

};

8

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 360: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Definicióndevariablesdeunaestructura• Hasta el momento se ha declarado el cuerpo o laplantilla de una estructura, para poder utilizarla sedebe definir una variable que haga referencia a loselementos de la estructura. Para declarar unavariable de la estructura siguen los mismos pasosque cuando se declaran variables de tipos de datossimples, es decir:

struct <identificador de la estructura> <identificadorde la variable de la estructura>;

9

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 361: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Para definir una o varias variables de la estructura de tipopersona:

struct persona per1, per2, per3;

Donde:per1, per2, per3 son diferentes variables que contienen los mismoselementos definidos en la estructura persona.

Otro ejemplo:struct libro{

char titulo[200];char autor[100];char editorial[100];char ISBN[100];int numPaginas;. . .

};

struct libro book1, book2, book3;

10

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 362: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

InicializacióndeunaestructuraSe puede inicializar una estructura de dos formas:

1. Al momento de definir la plantilla de la estructura, se especificanlos valores iniciales entre llaves, por ejemplo:

struct libro{

char titulo[200];char autor[100];char editorial[100];char ISBN[100];int numPaginas;

} book1 = {"Manual de referencia en C","Herbert Schildt","Mc Graw Hill","84‐481‐2895‐8",709

};

2. Dentro de la sección donde se va a utilizar la estructura, es decir,por asignación.

11

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 363: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Otro ejemplos para inicializar una estructura seria:Ejemplo 2:

struct info_libro{char titulo[200];char autor[100];char editorial[100];int anio;

} book1 = {"Maravilla del saber", "Lucas Garcia", "McGraw Hill", 1999};

12

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 364: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Ejemplo 3:

struct corredor{

char nombre[200];int edad;char sexo;char categoria[100];char club[100];float tiempoPromedio;

};

struct corredor v1 = {"Salvador Hernandez",29,'H',"Senior","Independiente",0.0

};También con terminación punto y coma (;)

13

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 365: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Crearunareferenciaaunaestructuradesdeelmétodomain

#include <stdio.h>

struct persona{char nombre[30];int edad;float altura;float peso;

};

int main( void ){struct persona p1;printf( "El tamanio de la estructura persona es: %d", sizeof(p1) );return 0;

}

Se define la variable de la estructura persona dentro de main. Para este caso p1 será una variable local a main

14

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 366: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Accesoaunaestructura• Para tener acceso a los elementos de una estructura,bien para modificar o recuperar su valor se utilizan dosoperadores:1. El operador punto (.)2. Y el operador flecha (‐>)

15

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 367: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

AccesoaunaestructuraOperador punto ( . )El operador punto es la forma más sencilla de tener acceso alos elementos de una estructura, para utilizarlo basta condefinir una variable al tipo de estructura y utilizar estavariable para referirnos a los miembros de la estructuraanteponiendo el operador punto. La sintaxis de acceso es:<identificador_variable_a_la_estructura>.<nombreMiembro> = dato;

o

dato = <identificador_variable_a_la_estructura>.<nombreMiembro>;

El operador punto proporciona el camino directo al miembrocorrespondiente y los datos que se almacenan en cadamiembro deben ser del mismo tipo con el que se declarocada miembro. 16

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 368: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Operador punto ( . )

• Refiriéndonos nuevamente a la estructura persona

#include <stdio.h>

struct persona{char nombre[30];int edad;float altura;float peso;

};

int main( void ){struct persona p1;strcpy(p1.nombre,"Jacinto Dominguez");p1.edad = 25;p1.altura = 1.82;p1.peso = 76.3;printf( "El tamanio de la estructura persona es: %d", sizeof(p1) );return 0;

}

Se está teniendo acceso ó haciendo referencia a los elementos de la estructura persona a través del operador punto

17

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 369: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Operador flecha ( ‐> )• El operador flecha se utiliza cuando seestán manejando apuntadores a unaestructura.

•Hay que recordar que un apuntador puedehacer referencia a cualquier tipo de dato yuna estructura no es la excepción.

• Para definir un apuntador a una estructura, lasintaxis es la siguiente:

struct<identificador_de_la_estructura>*<identificador_del_apuntador>;

18

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 370: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Operador flecha ( ‐> )#include <stdio.h>

struct estudiante{

char nombre[30];long int matricula;float promedio;short int numMaterias;

};

int main( void ){struct estudiante e1;struct estudiante *ptr_e = &e1;

strcpy(ptr_e‐>nombre,"Julian Arreaga");ptr_e‐>matricula = 2010568912;ptr_e‐>promedio = 9.06;ptr_e‐>numMaterias = 6;return 0;

}

Se declara el apuntador a la estructura estudiante

Se hace referencia a los elementos de la estructura estudiante a través del apuntador ptr_e con el operador flecha

19

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 371: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Operador flecha ( ‐> )• El operador flecha sirve para tener acceso alos elementos de una estructura a partir deun apuntador.

• El uso más general para utilizarapuntadores a estructuras es cuando serequiere pasar por referencia unaestructura a una función o cuando se estántrabajando listas, colas o generación deestructuras dinámicas, es decir, uso dememoria dinámica. 20

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 372: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Operador flecha ( ‐> )• Otro aspecto muy importante para pasar porreferencia una estructura a una función radicaen que si una estructura se pasa por valor (porcopia) a una función o el tipo de retorno dedicha función es la misma estructura y si estaestructura consta de muchísimos miembros,entonces, copiar todos estos elementos de iday de regreso en la llamada a la funcióndegradaría mucho la ejecución del programa eincluso a niveles inaceptables, por lo tanto, esmás conveniente pasar la referencia a dichaestructura a través de apuntadores, estoconlleva a que la llamada a la función sea muyrápida. 21

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 373: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• La mayor diferencia de utilizar el operador punto (.) y eloperador flecha (‐>) para tener acceso a los miembrosde una estructura radica en:

• Cuando se utiliza el operador punto, quiere decir que seestán creando variables a estructuras de maneraestática, es decir, cuando se declaran dichas variables elcompilador les asigna memoria como a cualquier otravariable y esta memoria se mantendrá asignada todo elciclo de vida de nuestra aplicación.

• El operador flecha se utilizará mayormente cuando seestén creando estructuras de manera dinámica o cuandose pase por referencia una estructura a una función. 22

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 374: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Estructurasanidadas• Una estructura puede contener variables a otrasestructuras llamadas estructuras anidadas. Usarestructuras anidadas nos permite ahorrar tiempo en laescritura de programas que utilizan estructuras coninformación similar, por ejemplo:

struct empleado{

int ID;char nombre[30];char direccion[30];char ciudad[30];long int CP;double salario;

};

struct cliente{

int ID;char nombre[30];char direccion[30];char ciudad[30];long int CP;double credito;

};23

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 375: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Las dos estructuras anteriores contiene información quees muy similar, para ahorrarnos el código repetido, sepodría generar una estructura que contenga los datossimilares y anidarla dentro de las dos estructuras másgenerales, es decir:

struct info_persona{int ID;char nombre[30];char direccion[30];char ciudad[30];long int CP;

};

struct empleado{struct info_persona info_empleado;double salario;

};

struct cliente{struct info_persona info_cliente;double credito;

};

24

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 376: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Y para tener acceso a cada uno de los elementos de cadaestructura sería de la siguiente manera:

#include <stdio.h>

int main( void ){struct empleado emp;struct cliente cli;//Para introducir los datos del empleadostrcpy(emp.info_empleado.nombre,"Julian Arreaga");strcpy(emp.info_empleado.direccion,"Bugambilias #48");strcpy(emp.info_empleado.ciudad,"Tlalpan");emp.info_empleado.CP = 68643;emp.salario = 20345.123;

//Para introducir los datos del clientestrcpy(cli.info_cliente.nombre,"Hernesto Juarez");strcpy(cli.info_cliente.direccion,"Matamoros S/N");strcpy(cli.info_cliente.ciudad,"Tlalpan");cli.info_cliente.CP = 68643;cli.credito = 10000000.000;return 0;

}25

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 377: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Sinónimodeuntipodedato• Existe en C una palabra reservada que nos permite definirsinónimos de un tipo de dato ya definido, esta palabrareservada es typedef.

La firma para utilizar typedef es:

typedef <identificador_datoDefinido> <nuevoNombre>;

Así por ejemplo si quisiéramos dar un nuevo nombre a losdatos dobles sería:

typedef double dobles;

y su uso seria:

dobles a = 3.13473;dobles b = 0.47293764;dobles c = 947282.43232;

26

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 378: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Otros ejemplos de typedef:typedef char* String;typedef conts char* string = "Adios a todos…";

String nombre = "Luis Joyanes Aguilar";

typedef también se puede utilizar para definir nuevosnombres a una estructura, por ejemplo:struct complejo{float imaginario;float real;

};typedef struct complejo complex;

//definición de variables de estructuras complejo, ya no es necesario//colocar la palabra struct ya que va implícita en el nombre complex.complex c1, c2, c3;

27

Algo

ritmia  y program

ación estructurada

4.4 Tipo

s estructurado

sAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 379: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

UnidadIV“Arreglosytiposestructurados”

5.1Entrada/Salida

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 380: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• Entrada y salida estándar• Funciones de <stdio.h>• Captura• Scanf

• Salida• Modificadores de formato

• Secuencias de escape• Re‐direccionar la entrada y salida estándar

2

Algo

ritmia  y program

ación estructurada

5.1 En

trad

a/Salid

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 381: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Entradaysalidaestándar• En lenguaje C no existen palabras reservadas pararealizar entradas y salidas. Para ello, el programadorpuede hacer uso de las funciones de entrada y salidaestándar proporcionadas por la biblioteca estándarde lenguaje C, como son printf y scanf, entre otrasque se encuentran declaradas en la cabecera<stdio.h>.

• stdio.h "standard input‐output header" (cabeceraestándar E/S), es la biblioteca estándar del lenguajede programación C, el archivo de cabecera quecontiene las definiciones de macros, las constantes,las declaraciones de funciones y la definición detipos usados por varias operaciones estándar deentrada y salida.

3

Algo

ritmia  y program

ación estructurada

5.1 En

trad

a/Salid

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 382: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Funcionesde<stdio.h>fclose fopen freopen fdopenremove tmpfileme rewind autoclearerr feof ferror fflushfgetpos fgetc fputsputcgets ftellfseek fsetpos fread fwritegetc getchar gets printffprintf sprintf snprintf vprintfperror putc putchar fputcharscanf fscanf sscanf vfscanfvscanf vsscanf setbuf setvbuftmpnam ungetc puts

4

Algo

ritmia  y program

ación estructurada

5.1 En

trad

a/Salid

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 383: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Captura• La función scanf() (scan‐format) incluida en stdio.h,representa a una familia de funciones que analizan unaentrada de datos con formato y cargan el resultado enlos argumentos que se pasan por referencia a dichasfunciones:

• scanf() lee los datos de entrada en el stdin (flujo deentrada estándar).

• fscanf() (file‐scanf) lee en un flujo de entrada dado,por lo general un fichero (file) abierto para lectura.

• sscanf() (string‐scanf) obtiene la entrada que se va aanalizar de una cadena de caracteres dada (string). 5

Algo

ritmia  y program

ación estructurada

5.1 En

trad

a/Salid

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 384: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Todas las funciones anteriores leen caracteres, losinterpretan según un formato, y almacenan losresultados en sus argumentos.

• Cada uno cuenta con varios argumentos: por unlado, un formato de la secuencia del control (sedescribe más abajo), por otro, un sistema deargumentos del indicador que señala dónde laentrada convertida debe ser almacenada.

• El resultado es indefinido si hay escasos argumentospara dar formato. Si se agota el formato mientrasque sigue habiendo las argumentos, los argumentossobrantes son evaluados pero no procesados deninguna otra manera.

6

Algo

ritmia  y program

ación estructurada

5.1 En

trad

a/Salid

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 385: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• En el ejemplo siguiente se lee un número enterodecimal desde el teclado, que se almacena en lavariable entero1, posteriormente se leen dosnúmeros reales separados por un espacio o saltode línea y se almacenan en las variables real1 yreal2.

#include<stdio.h>

int main(void){

int entero1;float real1,real2;scanf("%d",&entero1);scanf("%f %f",&real1,&real2);return 0;

}

7

Algo

ritmia  y program

ación estructurada

5.1 En

trad

a/Salid

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 386: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

scanf• El primer parámetro de scanf() es la cadena deformato, que indica como debe interpretar el datoleído. El segundo parámetro corresponde a lavariable en memoria donde quedará almacenadoese dato, y su tipo debe de ser consistente con loque se espera como entrada.

scanf("                               ",                      );

formato de la entradavariables donde guardar 8

Algo

ritmia  y program

ación estructurada

5.1 En

trad

a/Salid

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 387: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• La función scanf() es útil para capturar por parte dela entrada estándar cualquier tipo de dato. Enmuchas ocasiones es necesario recibir caracteresdel teclado, ya sea para compararlo con su valorreal o su valor ASCII. *Investigación del alumno Codificación ASCII

• Existen funciones dentro de stdio.h (getc , getchary fgetc), las cuales obtienen el valor de un carácterde la entrada estándar.

• .

#include<stdio.h>

int main(void){

char caracter;caracter=getchar();printf("El caracter introducido es %c y su valor ASCCI es %d decimal %x hexadecimal",caracter,caracter,caracter);return 0;

}9

Algo

ritmia  y program

ación estructurada

5.1 En

trad

a/Salid

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 388: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Salida• La función printf() y las funciones derivadas fprintf(),sprintf() y snprintf(); permiten escribir una cadena decaracteres en salida estandar (stdout), su nombreproviene de "print formatted".

• La instrucción printf escribe en pantalla• Mensajes de texto• Valores de variables y expresiones• Una mezcla de ambas cosas printf ( “cadena de formato”, arg1, arg2,... argN ); 

.

#include<stdio.h>

int main(void){

int entero1=10;float real1=0.34;printf("El valor del número entero es: %d y del número real es: %f",entero1,real1);return 0;

}

10

Algo

ritmia  y program

ación estructurada

5.1 En

trad

a/Salid

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 389: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• La función printf() es útil para enviar a la salidaestándar cualquier tipo de dato. En muchasocasiones es necesario mostrar solo un carácter.

• Existen dos funciones dentro de stdio.h (putchar yfputchar), las cuales muestran el carácter a la salidaestándar.#include<stdio.h>

int main(void){

char caracter, caracter2;caracter='A';caracter2=65;putchar(caracter);putchar(caracter2);return 0;

}

11

Algo

ritmia  y program

ación estructurada

5.1 En

trad

a/Salid

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 390: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

ModificadoresdeformatoIndican el tipo o tratoque se le deberá de dar ala variable a la que sehace referencia. Seutilizan dentro de lasfunciones de entrada ysalida; como printf() yscanft().

%c Carácter%d Número entero(int)%D Número entero long(o también %ld)%i Número entero(int)%f Punto flotante(float)%e Notación científica con e minúscula%E Notación científica con E mayúscula%g Utiliza %f o %e según sea más corto%G Utiliza %f o %E según sea más corto%o Número octal sin signo%s Cadena de texto%u Entero sin signo%U Entero sin signo long(o también %lu)%x Hexadecimal sin signo con minúsculas%X Hexadecimal sin signo con mayúsculas%p Puntero, dirección de memoria%n Número de caracteres%o Formato entero octal%O Formato entero octal long(o también %lo)%lf Formato double%LF Formato long double

12

Algo

ritmia  y program

ación estructurada

5.1 En

trad

a/Salid

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 391: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Secuenciasdeescape• Son un conjunto de caracteres en los textos que soninterpretados con algún fin.Secuencia Descripción

\n Nueva línea: Coloca el cursor en el principio de la siguiente línea.

\t Tabulador horizontal: Mueve el cursor al siguiente tabulador.

\v Tabulador vertical: Mueve el cursor al siguiente tabulador.

\r Retorno de carro: Coloca el cursor hacia el principio de la línea actual.

\b Retroceso: Backspace o retroceso del cursor.

\\ Diagonal invertida: Imprime la diagonal invertida, una sola diagonal sería interpretada como un carácter de escape.

\" Comillas: Imprime la doble comilla. Sin la diagonal invertida, se interpretaría como un inicio o un fin de una cadena.

\a Alerta: Suena la beep del sistema.

13

Algo

ritmia  y program

ación estructurada

5.1 En

trad

a/Salid

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 392: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

El siguiente código muestra el uso de algunassecuencias de escape.

#include<stdio.h>int main(void){

printf("\nHola\tmundo\n¿Como estás? \"Bien\"");printf("\aEsto es una\b \\Alerta\\");printf("\rNo sobrescribir");return 0;

}

14

Algo

ritmia  y program

ación estructurada

5.1 En

trad

a/Salid

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 393: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Re‐direccionarlaentradaysalidaestándar• La entrada estándar es el lugar desde donde uncomando obtiene la información necesaria de entrada.Habitualmente, por omisión, ésta es el teclado.

• La salida estándar es el lugar a donde un comando envíael resultado de su ejecución, por omisión, este lugar esla pantalla).

• < Acepta la entrada estándar desde un archivo.

• > Envía la salida estándar a un archivo.

• >> Añade la salida estándar a un archivo.

• | Conecta la salida estándar de un comando con la entradaestándar de otro.

15

Algo

ritmia  y program

ación estructurada

5.1 En

trad

a/Salid

aAu

tor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 394: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

UnidadIV“Arreglosytiposestructurados”

5.2Bibliotecasdefuncionesparaaccederarchivos

Estructuras de datos (Prof. Edgardo A. Franco)

1

Departamento de Ciencias e Ingeniería de la ComputaciónAcademia de Ciencias de la ComputaciónAutor: M. en C. Edgardo Adrián Franco Martínez 

Page 395: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Contenido• Introducción• Tipos de archivos• Manejo de archivos en C• Modo texto• Modo binario• Manejo del desplazamiento sobre el archivo

2

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 396: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Introducción• Los datos que hemos tratado hasta el momento hanresidido en la memoria principal. Sin embargo, lasgrandes cantidades de datos se almacenannormalmente en un dispositivo de memoriasecundaria. Estas colecciones de datos se conocencomo archivos.

• Un archivo es un conjunto de bits almacenado en undispositivo de memoria secundaria, el cuál puede seralmacenado con un conjunto de propiedades yrecuperado de la misma manera por el sistemaoperativo para que un programa tenga acceso a este.

3

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 397: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Un archivo es identificado por un nombre y ladescripción de la carpeta o directorio que locontiene.

• Los archivos digitales se llaman así porque son losequivalentes digitales de los archivos en tarjetas,papel o microfichas del entorno de oficinatradicional.

4

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 398: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Tiposdearchivos• Hay dos tipos de archivos, archivos de texto yarchivos binarios.

• Un archivo de texto es una secuencia de caracteresorganizadas en líneas terminadas por un carácterde nueva línea.

• En estos archivos se pueden almacenar, fuentes deprogramas, texto plano, base de datos simples, etc.

• Los archivos de texto se caracterizan por ser planos,es decir, solo contienen caracteres de texto.

5

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 399: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Un archivo binario es una secuencia de bytes quetienen una correspondencia uno a uno con undispositivo externo. Así que no tendrá lugarninguna traducción de caracteres.

• El número de bytes escritos (leídos) será el mismoque los encontrados en el dispositivo externo.• E.g. de estos archivos son Fotografías, imágenes,texto con formatos, archivos ejecutables(aplicaciones), etc.

6

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 400: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

ManejodearchivosenC• En C, un archivo es un concepto lógico que puedeaplicarse a muchas cosas desde archivos de discohasta terminales o una impresora.

• Para trabajar con un archivo se asocia unaestructura especial de tipo FILE con un archivoespecifico realizando una operación de apertura.

• Una vez que el archivo está abierto, la informaciónpuede ser intercambiada entre este y el programa.

7

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 401: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Se puede conseguir la entrada y la salida de datos aun archivo a través del uso de la biblioteca defunciones estándar "stdio.h"; C puro no tienepalabras claves que realicen las operaciones de E/S.

• La tabla siguiente da un breve resumen de lasfunciones que se pueden utilizar.

• Observe que la mayoría de las funciones comienzancon la letra “f” (file), esto es un vestigio del estándar Cde Unix.

8

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 402: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Nombre Funciónfopen() Abre un archivo

fclose() Cierra un archivo

fgets() Lee una cadena de un archivo

fputs() Escribe una cadena de un archivo

fseek()  Busca un byte especifico de un archivo

fprintf() Escribe una salida con formato en el archivo

fscanf() Lee una entrada con un formato en el archivo

feof() Devuelve cierto si se llega al final del archivo

ferror() Devuelve cierto si se produce un error

rewind() Coloca el cursor de posición en el archivo al principio del mismo

remove() Borra un archivo

fflush()  Vacía un archivo

fread() Lee un bloque de una “stream” de datos (binario)

fwrite() Escribe un bloque de datos a un archivo como “stream” (binario) 9

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 403: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

El puntero a un archivo.• El puntero a un archivo es un tipo especial queopera como hilo común que unifica el sistema deE/S con buffer.

• Un puntero a un archivo es un puntero a unainformación que define varias cosas sobre él,incluyendo el nombre, el estado y la posición actualdel archivo.

• En esencia identifica un archivo especifico y utilizala secuencia asociada para dirigir el funcionamientode las funciones de E/S con buffer. 10

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 404: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

…El puntero a un archivo.

• Un puntero a un archivo es una variable de tipopuntero al tipo FILE que se define en "stdio.h".

• Un programa necesita utilizar punteros a archivospara leer o escribir en los mismos. Para obtener unavariable de este tipo se utiliza una secuencia comoesta:

FILE *F;

11

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 405: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Apertura de un archivo• La función fopen() abre una secuencia para quepueda ser utilizada y la asocia a un archivo. Suprototipo es:

FILE * fopen (const char nombre_archivo, const char modo);

• Donde nombre_archivo es un puntero a una cadenade caracteres que representan un nombre valido delarchivo y puede incluir una especificación deldirectorio.

• La cadena a la que apunta modo determina como seabre el archivo.

12

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 406: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Modos de apertura de un archivoModo Significado

r Abre un archivo de texto para lectura (read)

w Abre un archivo de texto para escritura desde el comienzo (write)

a Abre un archivo de texto para escritura al final del archivo (append)

rb Abre un archivo binario para lectura (read binary)

wb Abre un archivo de binario para escritura desde el comienzo (write binary)

ab  Abre un archivo binario para escritura al final del archivo (append binary)

r+ Abre o crea un archivo de texto para lectura / escritura 

w+ Crea un archivo de texto para lectura / escritura

a+ Añade o crea un archivo de texto para lectura / escritura

rb+ Abre o crea un archivo binario para lectura / escritura

wb+  Crea un archivo binario para lectura / escritura

ab+ Añade o crea un archivo binario para lectura / escritura13

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 407: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Abrir un archivo ‐ fopen()

• La función fopen() devuelve un puntero a archivo. Unprograma nunca debe alterar el valor de ese puntero.

• Si se produce un error cuando se esta intentando abrirun archivo, fopen() devuelve un puntero nulo (NULL).

• Se puede abrir un archivo bien en modo texto o binario.En la mayoría de las implementaciones, en modo texto,la secuencias de retorno de carro / salto de línea seconvierten a caracteres de salto de línea en lectura.

14

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 408: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

… Abrir un archivo ‐ fopen()

• En la escritura, ocurre lo contrario: los caracteres de salto delínea se convierten en salto de línea. Estas conversiones noocurren en archivos binarios.

• La macro NULL está definida en "stdio.h". La función fopen()detecta cualquier error al abrir un archivo: como por ejemplodisco lleno o protegido contra escritura antes de comenzar aescribir en él.

• Si se usa fopen() para abrir un archivo para escritura,entonces cualquier archivo existente con el mismo nombre seborrará y se crea uno nuevo.

15

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 409: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

… Abrir un archivo ‐ fopen()

• Si se quiere añadir al final del archivo entonces debe usar elmodo a. Si se usa a y no existe el archivo, se devolverá unerror.

• La apertura de un archivo para las operaciones de lecturarequiere que exista el archivo. Si no existe, fopen() devolveráun error.

• "+" abre un archivo para las operaciones de leer / escribir, elsistema operativo no lo borrará si existe; sin embargo, si noexiste, el sistema operativo lo creará.

16

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 410: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

Cierre de un archivo ‐ fclose()

• La función fclose() cierra una secuencia que fueabierta mediante una llamada a fopen(). Escribetoda la información que todavía se encuentre en elbuffer en el disco y realiza un cierre formal delarchivo a nivel del sistema operativo.

• Un error en el cierre de una secuencia puedegenerar todo tipo de problemas, incluyendo lapérdida de datos, destrucción de archivos y posibleserrores intermitentes en el programa.

17

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 411: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

…Cierre de un archivo.int fclose(FILE *F);

• Donde F es el puntero al archivo devuelto por lallamada a fopen(). Si se devuelve un valor cerosignifica que la operación de cierre ha tenido éxito.

• Generalmente, esta función solo falla cuando undisco se ha retirado antes de tiempo o cuando noqueda espacio libre en el mismo.

18

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 412: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

ManejodearchivosenC(Modotexto)• Para introducir u obtener datos en modo texto de un archivotenemos las siguientes cuatro funciones:• fprintf()• fscanf()• fgets()• fputs()

• Estas funciones se comportan exactamente como prinft() yscanf(), gets() y puts() excepto que operan sobre archivo. Susprototipos son:

int fprintf(FILE *F, const char *cadena_de_control, .....);int fscanf(FILE *F, const char *cadena_de_control, .....);char *fputs(char *str, FILE *F);char *fgets(char *str, int long, FILE *F);

19

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 413: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• El operar con los archivos en modo texto facilita lacomprensión de los archivos por cualquier usuario que logreabrir el archivo con otra aplicación que permita leer el textoclaro.

• Desgraciadamente esta es la forma más compleja dealmacenar registros e información así como recuperarla porparte de aplicaciones profesionales, por ello no esrecomendable trabajar solo con el modo texto.

• El modo binario permite un almacenamiento mucho másseguro, fiable y fácil de manejar (si se diseña correctamentela aplicación).

20

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 414: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• Para introducir u obtener datos en modo binario de unarchivo tenemos las siguientes funciones:• fread()• fwrite()

• Sus prototipos son:

ManejodearchivosenC(Modobinario)

size_t fread ( void * ptr, size_t size, size_t count, FILE * archivo);

size_t fwrite(void *ptr, size_t tamano, size_t count, FILE * archivo);

21

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 415: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

fread()

• Esta función lee un bloque de una "stream" de datos. Efectúala lectura de un arreglo de elementos "count", cada uno de loscuales tiene un tamaño definido por "size". Luego los guardaen el bloque de memoria especificado por "ptr". El indicadorde posición de la cadena de caracteres avanza hasta leer latotalidad de bytes. Si esto es exitoso la cantidad de bytesleídos es (size*count).

size_t fread ( void * ptr, size_t size, size_t count, FILE * archivo);

22

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 416: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

• ptr: Puntero a un bloque de memoria con un tamañomínimo de (size*count) bytes.

• size: Tamaño en bytes de cada elemento (de los que se van aleer).

• count : Número de elementos, los cuales tienen un tamaño"size".

• archivo: Puntero a FILE, que especifica el archivo de entrada.

size_t fread ( void * ptr, size_t size, size_t count, FILE * archivo);

23

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 417: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

fwrite()

• Esta función está pensada para trabajar con registros delongitud constante y forma pareja con fread.

• Es capaz de escribir hacia un fichero uno o varios registros dela misma longitud almacenados a partir de una dirección dememoria determinada. El valor de retorno es el número deregistros escritos, no el número de bytes. Los parámetros son:un puntero a la zona de memoria de donde se obtendrán losdatos a escribir, el tamaño de cada registro, el número deregistros a escribir y un puntero FILE del fichero al que se harála escritura.

size_t fwrite(void *ptr, size_t tamano, size_t count, FILE * archivo); 24

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez

Page 418: Introducción a la Unidad de - Escuela Superior de Cómputo · Introducción a la Unidad de Aprendizaje 0.0 Algoritmia y programación estructurada Estructuras de datos (Prof. Edgardo

fseek()• Esta función está sitúa el puntero (cursor) de un archivo enuna posición deseada, trabaja para modo binario y texto.

int fseek(FILE *archivo, long offset, int origen);

• archivo es un puntero a la estructura del archivo• offset es un entero largo que especifica el número de bytes de origen,donde se colocará el cursor.

• origen es un número entero que especifica la posición de origen.Puede ser:

• SEEK_SET: El origen es el comienzo del archivo• SEEK_CUR: El origen es la posición actual• SEEK_END: El origen es el final del archivo

ManejodearchivosenC(Manejodeldesplazamientosobreelarchivo)

25

Algo

ritmia  y program

ación estructurada

5.2 Bibliotecas d

e funcione

s para accede

r archivos

Autor: M. en C. Edgardo

 Adrián Fran

co M

artín

ez