124
Fundamentos de Informática 1 er Curso. Ingeniería Química Libro de Transparencias Manuel López Martínez José Ángel Acosta Rodríguez Ismael Alcalá Torrego Ing. Sistemas y Automática © 2006-2007

Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

Embed Size (px)

Citation preview

Page 1: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

Fundamentos de Informática

1er Curso. Ingeniería Química

Libro de Transparencias

Manuel López Martínez José Ángel Acosta RodríguezIsmael Alcalá Torrego Ing. Sistemas y Automática © 2006-2007

Page 2: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

Índice Tema 1…………………………………………………1 Tema 2…………………………………………………11 Tema 3…………………………………………………18 Tema 4…………………………………………………28 Tema 5…………………………………………………38 Tema 6 y 7 ……………………………………………47 Tema 8………………………………………………… 60 Tema 10………………………………………………..67 Tema 11………………………………………………..77 Tema 12……………………………………………..…84 Tema 13………………………………………………..93 Tema 14………………………………………………..98 Tema 15………………………………………………109

Page 3: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 1/10JJ J N I II 1/10

Introducción a la InformáticaFundamentos de Informática - [T 1]

1o Ingeniería QuímicaManuel López Martínez

José Ángel Acosta RodríguezIsmael Alcalá Torrego

Page 4: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 2/10JJ J N I II 2/10

Índice1.1.Informática y Computadoras 3

1.1.1.Programas e Instrucciones . . . . . . . . . . . . . . . . . . . . 41.1.2.Lógica Cableada y Programada . . . . . . . . . . . . . . . . . . 51.1.3.Computadoras Analógicas y Digitales . . . . . . . . . . . . . . 61.1.3.Computadoras Analógicas y Digitales (cont) . . . . . . . . . . . 7

1.2.Representación de la Información 81.2.1.Soportes de la Información . . . . . . . . . . . . . . . . . . . . 8

1.3.Estructura de Von Neumann 9

1.4.Manejo de la Computadora Digital 101.4.1.Sistema Operativo . . . . . . . . . . . . . . . . . . . . . . . . . 101.4.2.Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

Page 5: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 3/10JJ J N I II 3/10

1.1. Informática y ComputadorasInformática:Trata de la adquisición, representación, tratamiento y transmisiónde la información.

Informática = Información + Automática

• Información: números, texto, sonido, imágenes, ...

• Automática: procedimiento realizado con poca intervención humana.

Computadoras-Ordenadores:Máquinas que permiten realizar automáticamente todas estas operaciones.La información ha de ser suministrada de forma adecuada.

Page 6: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 4/10JJ J N I II 4/10

1.1.1. Programas e Instrucciones

Programa: Conjunto ordenado de instrucciones que se suministran a lacomputadora de forma que se obtengan unos resultados a partir de unosdatos.

Instrucción: Conjunto de símbolos que representan una orden de op-eración o de tratamiento de datos.

Acciones con una computadora•Programarla (Para usarla muchas veces)

•Hacer uso del programa

Page 7: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 5/10JJ J N I II 5/10

1.1.2. Lógica Cableada y Programada

Lógica Cableada:

• Los algoritmos están predefinidos y no se pueden cambiar.

• Incorporados a la circuitería.

Lógica Programada:

• Se permite el cambio de operaciones elementales.

• Redefinición de algoritmos.

Page 8: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 6/10JJ J N I II 6/10

1.1.3. Computadoras Analógicas y Digitales

Magnitudes•Digital: Toman valores discretos y varían a saltos.•Analógica: Toman valores que pueden variar de forma

continua en un intervalo

ComputadoraDigital

•Trabajan con 2 valores de tensión· nivel alto (1)· nivel bajo (0)

•Representan la información usando células que sólo ad-

miten dos estados· 1· 0

•bit(binary digit): Unidad de información que sólopuede tomar dos valores (1,0)•Asociación de células permite representación de infor-

mación más compleja.•Facilidad de programación.

Page 9: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 7/10JJ J N I II 7/10

1.1.3. Computadoras Analógicas y Digitales (cont)

ComputadoraAnalógica

•Trabajan con valores de tensión que varían de formacontinua dentro de un rango.

• ∃ relación entre tensión y valores de las variables.

•Rango de valores limitado

•Programación tediosa.

Page 10: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 8/10JJ J N I II 8/10

1.2. Representación de la InformaciónInformación: texto, gráficos, música.

Código derepresentación

•Números enteros⇒ Complemento a 2

•Texto⇒ ASCII

•Gráficos⇒ Bitmap, vectorial, metafile

1.2.1. Soportes de la Información

Es el medio que permite· almacenamiento· transmisión de la información.

Soportes

•Niveles de tensión⇒ dispositivos s/c

•Campo Magnético⇒ Disco duro, disquete

•Óptica⇒ CD, DVD

•Frecuencia⇒ Transmisión de información en canales.

Page 11: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 9/10JJ J N I II 9/10

1.3. Estructura de Von NeumannEstructura funcional de la computadora digital.

•Memoria Principal: Conjunto de células asociadas para almacenar información.•Unidad Aritmético Lógica: Conjunto de circuitos capaz de realizar operaciones Aritméti-

cas y Lógicas•Unidad de Control: Envía señales de control a la UAL, la memoria y los periféricos, para

realizar operaciones con datos (memoria) según instrucciones de programa (memoria).

Unidad

Aritmético

Lógica

Tema 5 del Libro

Unidad

de Control

Tema 6 del Libro

Memoria

Principal

Tema 4 del Libro

U

n

i

d

a

d

d

e

E

n

t

r

a

d

a

/

S

a

l

i

d

a

Periférico 1

señales de control

información

Page 12: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 10/10JJ J N I II 10/10

1.4. Manejo de la Computadora DigitalEjecutar un programa: Hacer uso de un programa.

Los programas se pueden almacenar en la memoria principal o en periféricos.

Para ejecutar un programa hay que cargarlo previamente en memoria.

El sistema Operativo se encarga de cargar los programas.

1.4.1. Sistema Operativo

Programa básico que se introduce en memoria automáticamente al poner enmarcha el ordenador.

Funciones•Gestiona y pone a disposición del usuario los recursos

de la máquina•Permite al usuario ejecutar otros programas.

1.4.2. Aplicaciones

Programa que resuelve un problemaconcreto.

Page 13: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 1/8JJ J N I II 1/8

Álgebra de Boole y circuitoscon puertas lógicas

Fundamentos de Informática - [T 2]

Page 14: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 2/8JJ J N I II 2/8

2.1. Álgebra de Boole

Antecedentes históricos:

Teoría matemática presentada en 1854 por George Boole:”Investigaciónsobre las leyes del pensamiento”

−→ Las variables toman dos valoresFalso −→ 0Verdadero −→ 1

Aplicación en, áreas. . . . Shannon lo aplica acircuitos eléctricos con in-terruptores.

Variables lógicas(2 valores)1 bit

=⇒

Ej: 0 1interruptor abierto cerradolámpara apagada encendida

Las computadoras digitales utilizan codificación binaria

=⇒* Estudio con el álgebra de Boole* Construccióncon técnicas de Shannon

Page 15: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 3/8JJ J N I II 3/8

2.1.1. Elementos básicos

Los elementos básicos son lasvariables lógicasy lasoperaciones lógicas(queson las encargadas de relacionar las variables entre sí).

Operacioneslógicas (2.1.2)

*Suma lógica

Operación lógica ”O” (OR)

0 1

0 0 1

1 1 1

0 1

0 0 1

1 1 1

aa

bb

aa

bb

f =a+bf =a+b

*Producto lógico

Operación lógica ”Y” (AND)

0 1

0 0 0

1 0 1

0 1

0 0 0

1 0 1

aa

bb

aa

bb

f =a·bf =a·b

*Negación o complementaciónOperación lógica ”NO” (NOT)

a a

0 1

1 0

a a

0 1

1 0

aa

f =af =a

Page 16: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 4/8JJ J N I II 4/8

2.1.3. Propiedades

Propiedades de lasoperaciones lógicas

* ∃ de elemento neutroa+0=aa*1=a

* Asociatividad(a+b)+c=a+(b+c)a*(b*c)=(a*b)*c

* Conmutatividada+b=b+aa*b=b*a

* Distributividad(a+b)*c=a*c+b*c(a+b)*(a+c)=a+b*c

* Leyes de Morgan(a ∗ b) = a+ b(a+ b) = a ∗ b

Page 17: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 5/8JJ J N I II 5/8

2.1.4. Funciones Boolenas

Composición de operaciones con Variables Booleanas expresadas de 4 formasdistintas: Por ejemplof = c ∗ (a+ b)

* Expresión analítica =⇒ f = c ∗ (a+ b)

* Expresión explícita oTabla de Verdad

a b c f

0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 1

1 0 0 0

1 0 1 1

1 1 0 0

1 1 1 1

a b c f

0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 1

1 0 0 0

1 0 1 1

1 1 0 0

1 1 1 1

Entradas

Salidas

2

3

* Circuito de interruptores

aa

bb

cc

* Puertas lógicas =⇒ (corresponde alapartado 2.2que se va a ver)

Lo máscomplicadoes pasar de la formaexplícita a la analítica.

Page 18: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 6/8JJ J N I II 6/8

2.1.5. Obtención de las funciones boolenas a partir de tablas de ver-dad

1. Identificar las entradas y las salidas del problema.

2. Para cada salida:

a) Señalar las filas cuyo valor es 1

b) Para cada fila, escribir el producto de cadaentrada que valga 1 y decadaentrada negadaque valga 0.

c) La función que gobierna la salida es lasumade los productos.

3. Escribir la tabla de verdad de todas las salidas que acabamos de obtenerpara comprobar que está bien.

Por Ejemplo . . .

Page 19: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 7/8JJ J N I II 7/8

2.2. Puertas lógicas

Desventajas de los interruptores* Velocidad↓↓↓* Potencia disipada↑* Dificultad miniaturización↑↑↑

=⇒ Uso de transistores y diodos≡ Puertas lógicas

Tipos depuertas lógicas

* Suma lógica ”O” (OR)a

b

c

f = a+b+c

* Producto lógico ”Y” (AND)a

b

c

f = a*b*c

*Suma exclusiva”O exclusi-vo” (XOR)

a

b

c

f = a+b+c

a b a+b

0 0 0

0 1 1

1 0 1

1 1 0

a b a+b

0 0 0

0 1 1

1 0 1

1 1 0

*Negación o complementación”NO” (NOT)

a

a

a

a

a

a

Entrada

Salida

Page 20: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 8/8JJ J N I II 8/8

2.3. Ejemplos de circuitos lógicos

Los circuitos construidos con puertas lógicasconstituyen la lógica cableada

=⇒ Son la base de las computadoras

- Memorias- Unidades arit-mético lógicas

- etc . . .

2.3.1. Paridad

Activa la salida en caso de que los dos bits sean iguales.

2.3.2. Comparador

Circuito que compara dos bits (a y b) activando una señal segúna sea mayor,igual o menor queb.

2.3.3. Mayoría

La salida toma el valor de la mayoría de las tres entradas.

Page 21: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 1/10JJ J N I II 1/10

Codificación Binaria de laInformación

Fundamentos de Informática - [T 3]

1o Ingeniería QuímicaManuel López Martínez

José Ángel Acosta RodríguezIsmael Alcalá Torrego

Page 22: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 2/10JJ J N I II 2/10

Índice3.1.Sistemas de numeración 3

3.1.1.Conversiones . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3.2.Codificación de Números Enteros 7

3.3.Números fraccionarios 8

3.4.Codificación de caracteres 9

3.5.Formatos Gráficos 10

Page 23: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 3/10JJ J N I II 3/10

3.1. Sistemas de numeraciónNosotros utilizamos el sistema decimal que utiliza 10 dígitos (0,1,2,. . . ,9)

Octal ⇒ 8 dígitos (0,1,2,. . . ,7)

Hexadecimal ⇒ 16 dígitos (0,1,2,. . . ,9,A,B,C,D,E,F)

BINARIO ⇒ 2 dígitos (0 y 1)

Un número en una base cualquiera estará dado por una sucesión de dígitos:

N|base = gpgp−1 . . . g2g1g0.g−1g−2 . . . g−m|base

⇒ Para pasar un número de cualquier base a decimal se utiliza el Teoremafundamental de la numeración:

N |10 =∑p

i=−m gi(base)i

Page 24: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 4/10JJ J N I II 4/10

Por ejemplo:

Dec Hex Oct Bin0 0 000 000000001 1 001 000000012 2 002 000000103 3 003 000000114 4 004 000001005 5 005 000001016 6 006 000001107 7 007 000001118 8 010 000010009 9 011 00001001

10 A 012 0000101011 B 013 0000101112 C 014 0000110013 D 015 0000110114 E 016 0000111015 F 017 0000111116 10 020 0001000017 11 021 00010001

Page 25: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 5/10JJ J N I II 5/10

3.1.1. Conversiones

¿En qué consiste?⇒ Pasar un número de una base a otra. Por ejemplo

15|10 = 1111|2 = 17|8 = F|16

La conversión que nos va a interesar es la de Decimal a Base 2 y viceversa.

* Binario⇒ Decimal⇒ Teorema fundamental de la numeración* Decimal⇒ Base 2 (N|2)⇒ Potencias de 2 conocidas

Si queremos pasar de otra base que no sea Decimal a Base 2 ⇒ primero lopasamos a Decimal y después a Base 2.

Page 26: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 6/10JJ J N I II 6/10

Conversión de decimal a base 2 por Potencias de 2 conocidas

Número binario de n bits

2

0

2

1

2

2

2

n-1

g

n-1

g

2

g

1

g

0

2

=N

1. Empezar por el bit i = n − 1:

2. Para el bit i,

Si el número decimal es mayor o igual que 2i⇒ poner gi a 1. El nuevonúmero decimal a codificar es el número decimal anterior menos 2i

Si el número decimal es menor que 2i⇒ poner gi a 0.

3. Decrementar i

4. Si i no es negativo volver a la línea 2.

Page 27: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 7/10JJ J N I II 7/10

3.2. Codificación de Números EnterosSi el número entero sólo puede ser positivo: ⇒ Base 2 directamente.

Si también se consideran números negativos ⇒ Complemento a 2

n-1

bit de

Signo

Si N>=0, 0

Si , 1N<0

Si N>=0, N

Si , (||N|| )+1N<0

2

2

Complemento a 2:

Número binario de n bits

¿Cómo se representa el cero? Sólo como 000. . . 0¿Qué representa el 100. . . 0? el 100. . . 0 corresponde a −2n−1

¿Cuál es el rango de números enteros que caben en n bits? [−2n−1, 2n−1 − 1]

Page 28: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 8/10JJ J N I II 8/10

3.3. Números fraccionariosEjemplo 101,11|2 = 1 ∗ 22 + 1 ∗ 20 + 1 ∗ 2−1 + 1 ∗ 2−2 = 5,75|10

* Punto Fijo: se supone que hay un punto en una posición fijada.bit de

Signo

parte entera

0 0 0

parte fraccionaria

Aquí se supone

que está el punto

1 1 1 1 0

* Punto Flotante: Se construye expresando el número N en dos partes: mantisay exponente.

N |2 = M|22E|2

Existen∞ descomposiciones . . . Ejemplo: 5,75 = 0,575∗101 = 0,0575∗102

Pero se toma por convenio justo el valor del exponente a partir del cual0,5 ≤ M < 1

bit de

Signo

Mantisa

Mantisa

en base 2

0 1 0

Exponente

en base 2

0 1 0 0 1

bit de

Signo

Exponente

Page 29: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 9/10JJ J N I II 9/10

3.4. Codificación de caracteres

Se utiliza para codificartexto del tipo:

* Letras mayúsculas y minúsculas del alfabeto* Dígitos. ”1”,”2”,. . .* Signos. ¿ ? [ ] ( ) . . .* Códigos sin representación gráfica que realizan fun-

ciones de control. retorno de carro, . . . .

Código ASCII extendido American Standard Code for Information Inter-change. A cada signo le corresponde un número de 8 bits ⇒ 256 signos.Por ejemplo (A-Z) del alfabeto inglés (sin ñ)⇒ 65 al 90, y (a-z)⇒ 97 al 123.

UNICODE 65000 caracteres. Permite gran cantidad de caracteres en diversosidiomas.

Page 30: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 10/10JJ J N I II 10/10

3.5. Formatos Gráficos•Matriz de Puntos (BitMap):

• Imagen Binaria 1 bit1 pixel toma valores 0 ó 1)⇒

• Imagen Escala de grises 8 bits1 pixel toma valores (0, 28 − 1)⇒

• Imagen Color 24 bits(3 mapas de 8 bits)1 pixel toma para cada mapa valores (0, 28 − 1)⇒

• Gráficos Vectoriales:

Imagen Vectorial PostScript⇒

Page 31: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 1/10JJ J N I II 1/10

La Unidad de MemoriaFundamentos de Informática - [T 4]

1o Ingeniería QuímicaManuel López Martínez

José Ángel Acosta RodríguezIsmael Alcalá Torrego

Page 32: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 2/10JJ J N I II 2/10

Índice4.1.Conceptos y definiciones 3

4.2.Clases de Memoria 6

4.3.Organización matricial de la memoria 84.3.1.Direcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

4.4.La unidad de memoria central 10

Page 33: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 3/10JJ J N I II 3/10

4.1. Conceptos y definiciones

Memoria ≡ Dispositivo de almacenamientode información binaria

•Datos•Programa en código máquina

Características

•Tiempo de acceso: El que transcurre entre el instante en que seordena la lectura/escritura de información y se realiza la tarea.

•Modo de acceso:- Secuencial Para llegar a un dato hay que irbuscando desde el principio

- Directo o Aleatorio Directamente al dato

•Volatilidad: Si se pierde la info al quitar la energía.•Capacidad: Cantidad de información que puede almacenar.

Page 34: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 4/10JJ J N I II 4/10

S C ́ en bits en Bytes o caracteres Abreviatura

celda elemental 1 - bocteto 8 1 B

registro 8,16,32,64 1,2,4,8 palabra≡Wmemoria de 1 KiloByte 8 ∗ 210 210 1KBmemoria de 1 MegaByte 8 ∗ 220 220 1MBmemoria de 1 GigaByte 8 ∗ 230 230 1GBmemoria de 1 TeraByte 8 ∗ 240 240 1TB

Page 35: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 5/10JJ J N I II 5/10

Unidad

Aritmético

Lógica

Unidad

de Control

Memoria

Principal

U

n

i

d

a

d

d

e

E

n

t

r

a

d

a

/

S

a

l

i

d

a

Periférico 1

Memoria

Auxiliar

Disco Duro

CD-ROM

Disco Flexible, etc

Órdenes de la UC a lamemoria

•Direccionamiento: Seleccionar la info que está enuna determinada posición de la memoria.•Leer: Obtener una copia de la info seleccionada•Escribir: Introducir info en la posición selecciona-

da (machaca los datos antiguos en esa posición).

Page 36: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 6/10JJ J N I II 6/10

4.2. Clases de Memoria

Clasificación segúnestructura deVon Neumann

•MemoriaPrincipal

Contiene el programaen el momento de laejecución

•Tacceso ↓↓

•Acceso Aleatorio•Volátil

•MemoriaAuxiliar

Memorias que seconectan comoperiféricos

•Tacceso ↑

•No Volátil•Capacidad ↑↑↑

Page 37: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 7/10JJ J N I II 7/10

Clasificación segúncaracterísticas

•RAMMemorias de acceso aleato-rio. Utilizadas como memo-ria principal

•Tacceso ↓↓

•Acceso aleatorio•Volátil•Admite l/e

•ROM Memorias sólo paralectura

•Sólo admite lectura•No Volátil•Necesita programador

•EPROMMemorias repro-gramables sólo paralectura

•Sólo admite lectura•No Volátil•Necesita progra-

mador•Se borra con UV•Utilizada en las

BIOS

Page 38: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 8/10JJ J N I II 8/10

4.3. Organización matricial de la memoriaUn registro por fila.(N≡ no de registros o filas)

⇒ las columnas son las célulaselementales del registro.

Hilos de

Selección

N registros

( 2 )Un número del tipo

m

n células

Hilos de

lectura/escritura

Page 39: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 9/10JJ J N I II 9/10

4.3.1. Direcciones

Cada registro tiene asignado un número llamado dirección que van desde 0hasta N − 1.⇒ para referirnos a un registro hay que escribir la dirección del registro enbase 2 y se activa el registro correspondiente.

A esta operación se le llama direccionamiento y ya sólo faltaría leer o escribir.

N = 2

m

n células

0

1

N-1

m

bits

Registro de selección de

direcciones = S

Decodificador de direcciones

Page 40: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 10/10JJ J N I II 10/10

4.4. La unidad de memoria central

Formadapor:

•Matriz de celdas elementaleso fila de registros.•Decodificador de direcciones.•Pequeña lógica de control.

S

.

.

.

.

LECM

ESCM

T

Bus deDirecciones(tamaño m)

Bus deDatos

(tamaño n)

Lectura:1) Direccionamiento⇒ dirección en el registro S2) Ordenar la lectura activando LECM= 13) Copiar la información en el registro T

Escritura:1) Direccionamiento⇒ dirección en el registro S2) Disponer de información en el registro T3) Ordenar la escritura activando ESCM= 1

Page 41: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 1/9JJ J N I II 1/9

La unidad aritmético lógicaFundamentos de Informática - [T 5]

1o Ingeniería QuímicaManuel López Martínez

José Ángel Acosta RodríguezIsmael Alcalá Torrego

Page 42: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 2/9JJ J N I II 2/9

Índice5.1.Biestables y Registros 3

5.1.1.Registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

5.2.Circuitos operadores con enteros 45.2.1.Semisumador . . . . . . . . . . . . . . . . . . . . . . . . . . . 55.2.2.Sumador completo (o con acarreo) . . . . . . . . . . . . . . . . 6

5.5.La unidad artimético lógica 7

Page 43: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 3/9JJ J N I II 3/9

5.1. Biestables y Registros

Célula de memoriao

Celda de memoria⇒

biestable ≡ Dispositivo electrónico condos estados estables (y = 0 y y = 1).

Tiene memoria

S

y

R

Biestable

Funcionamiento

•Nunca puede activarse a la vez R y S•Si S=1⇒ el estado y vale 1•Si R=1⇒ el estado y vale 0•Si S=0 y R=0⇒ el estado y ”recuerda”

su valor

5.1.1. Registro

Conjunto de células de memoria que almacenan información binaria.

S

Q

n

R

S

R

S

R

Q

1

Q

0

Señal de Sincronismo

Page 44: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 4/9JJ J N I II 4/9

5.2. Circuitos operadores con enteros

Objetivo⇒ Construir circuitos lógicos para hacer operacionesAritméticas con números enteros en binario.

Vamos a ver dos ejemplos:

5.2.1) Semisumador: Suma aritmética de dos números de 1 bit cada uno.

5.2.2) Sumador Completo o con acarreo: Suma aritmética de dos números de1 bit cada uno y un acarreo

Acarreo ≡ ”Lo que me llevo” de una operación anterior.

Page 45: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 5/9JJ J N I II 5/9

5.2.1. Semisumador

Suma aritmética de dos números de 1 bit cada uno.b

sa

c

SS

Semisumador

a b c s0 0 0 00 1 0 11 0 0 11 1 1 0

b

s=a+b

a

c=a×b

SS

s=a+b

c=a×b

c ≡ Acarreo⇒ ”Lo que me llevo” de la operación anterior.

Page 46: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 6/9JJ J N I II 6/9

5.2.2. Sumador completo (o con acarreo)

Suma aritmética de dos números de 1 bit cada uno y elacarreo anterior. b

s

a

c

2

SC

c

1

Sumador completo

a b c1 c2 s0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

s = a ⊕ b ⊕ cc = c1(a ⊕ b) + a · b

SS

b

s

a

c

2

c

1

SS

SC

Page 47: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 7/9JJ J N I II 7/9

5.5. La unidad artimético lógica (UAL o ALU)Unidad que realiza las operaciones aritméticas y lógicas requeridas por la UC(sumar, multiplicar, restar, . . . )

Está construida con semisumadores, sumadores completos, etc.

La UC activa una señal de control para indicarle la operación a realizar.

Necesita dos operandos que almacena en dos registros de n bits.

1. A: Primer operando, y almacena el resultado2. Operando: Almacena el segundo operando.

Dispone de un registro de que indica:

• Si el resultado ha sido positivo, negativo o cero.

• Si hubo desbordamiento en la operación anterior.

Page 48: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 8/9JJ J N I II 8/9

SUMA

MULT

Estado

A = Acumulador

Primer operando

Señales de control

de la UC

Registro del

primer operando

Operaciones que realiza la ALU:

Cargar un dato de la memoria al A

Almacenar en memoria el A

Operaciones Artiméticas.

Operaciones Lógicas.

Incrementos/Decrementos, desplazamientos, rotaciones, . . .

Page 49: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 9/9JJ J N I II 9/9

Ejemplo: Suma de 2 + 3 + 1

Estado inicial de la ALU

? ? ? ? ? ? (?)

(2)

Carga el primer dato en A

0 0 0 0 1 1 (2)

(2)

CARGAR

Suma del número 3

0 0 0 1 0 1 (5)

(3)

SUMAR

Suma del número 1

0 0 0 1 1 0 (6)

(1)

SUMAR

Page 50: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 1/13JJ J N I II 1/13

Modelo Simple deComputadora Digital

Fundamentos de Informática - [T 6 7]

1o Ingeniería QuímicaManuel López Martínez

José Ángel Acosta RodríguezIsmael Alcalá Torrego

Page 51: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 2/13JJ J N I II 2/13

Índice7.1. Modelo Simple de Computadora Digital 3

7.2.Microórdenes 4

7.3.Descripción de C 5⇒ 7.6 Modos de Direccionamiento . . . . . . . . . . . . . . . . . . . 7

7.4.El programa traductor 11

7.5.Transferencias entre Registros 13

Page 52: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 3/13JJ J N I II 3/13

7.1. Modelo Simple de Computadora Digital

P

I

S

CO MD D

SUMA

MULT..

EA

A

EOSA

EPSP

SD ES

S

M

.

.

.

.

LECM

ESCM

ETSTEI

T

EESE

Teclado Pantalla

E

ESCPLEET

Page 53: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 4/13JJ J N I II 4/13

7.2. MicroórdenesMicroórdenes ≡ Órdenes dadas por la UC para ejecutar una instrucción

* Órdenes a la UAL (SUMA,RESTA,. . . ).* Órdenes a la Memoria (LECM y ESCM).* Órdenes a la unidad de entrada/salida (LEET y ESCP)* Señales de gobierno a los enlaces (SP, ET, ST, EA,. . . ).* Incremento del contador del programa INCP.

Page 54: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 5/13JJ J N I II 5/13

7.3. Descripción de C¿Qué es?⇒Máquina ficticia con estructura de Von Neumann.

Tiene un enlace o Bus de datos (M) de 16 bits, y un enlace o Bus de direcciones(S) de 11 bits.

⇒ 211 direcciones de memoria⇒ [0, 2047]

Características

- Unidad Aritmético Lógica⇒ A=16 bits- Unidad de Control⇒ I=16 bits y P=11 bits

- Unidad de memoria principal.

* S= 11 bits* T= 16 bits* Registros de Memoria

M(S)= 16 bits

- Unidad de Entrada/Salida⇒ E=16 bits

Page 55: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 6/13JJ J N I II 6/13

Almacenamientoen memoria

* Datos- Nos enteros⇒ Complemento a 2- Nos flotantes⇒ NO SE MANEJAN- Caracteres⇒ Código ASCII

* Instrucciones en código máquina

4 bits

1 bit

11 bits

CO

MD

D

2

4

instrucciones. (7.1.1) Juego de instrucciones

2 7.6posibilidades. ( ) Modos de direccionamiento

Page 56: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 7/13JJ J N I II 7/13

7.6 Modos de DireccionamientoModos de localizar una posición en memoria.

Modo Directo (absoluto o normal). CO

0

D

D indica directamente la posición de memoria⇒ el dato está en M(D)

Modo Indirecto

D indica la posición dememoria donde está guardadala dirección del dato. ⇒ eldato está en M(M(D))

CO

1

16

8

9

15

16

3

8

NOTA: Toda la

información de los

registros está en binario

NOTA: Existe otro modo de direccionamiento (Inmediato).

Page 57: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 8/13JJ J N I II 8/13

7.1.1 Juego de Instrucciones de C

Parar 0000 termina la ejecución del programaAlmacenar 0001 Guarda una copia de A en la memoriaCargar 0010 Carga un dato de la memoria en AEscribir 0011 Escribe un dato de la memoria en la pantallaLeer 0100 Leer un dato del teclado y guardarlo en la memoriaSumar 0101 Suma a A un dato de la memoriaRestar 0110 Resta a A un dato de la memoriaMultiplicar 0111 Multiplica a A un dato de la memoriaDividir 1000 Divide A entre un dato de la memoria

y se queda con la parte enteraMódulo 1001 Halla el resto de dividir A entre un dato de la memoriaSalto incondicional 1010 Introduce en P un dato de la memoriaSalto si A negativo 1011 Idem si A es negativoSalto si A nulo 1100 Idem si A es ceroSalto si A positivo 1101 Idem si A es positivoEscribir Caracter 1110 Escribe un dato de la memoria como caracter

ASCII en la pantallaLeer Caracter 1111 Leer un caracter ASCII del teclado y guardarlo

en la memoria

Page 58: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 9/13JJ J N I II 9/13

7.1.2 Ejemplo de programa en código máquina

Escribir la suma de dos números introducidos por elusuario.

Número A ≡ Dirección 10⇒M(10)Número B ≡ Dirección 11⇒M(11)Número C ≡ Dirección 12⇒M(12)

inicio programa

final programa

Leer A y B

Escribir C

C A+B

MEMORIADirección CO MD D

20 0100 0 0000000101021 0100 0 0000000101122 0010 0 0000000101023 0101 0 0000000101124 0001 0 0000000110025 0011 0 0000000110026 0000 0 00000000000

Page 59: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 10/13JJ J N I II 10/13

Inconvenientes

* Hay que saberse de memoria los CO* Hay que codificar los datos en binario* Hay que reservar manualmente el espacio para Variables y

constantes.

⇒ Solución: Escribir el programa en un lenguaje legible utilizando una apli-cación para traducirlo a código máquina.

⇒ el programa traductor

Page 60: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 11/13JJ J N I II 11/13

7.4. El programa traductorPermite traducir el programa en lenguaje legible a código máquina.

Elementosdel

lenguajesimbólico

*Sentencias

deInstrucción

- Operación=código mnemotécnico de tres letras

- Modo deDireccionamiento

MD≡ 0⇒ NadaMD≡ 1⇒ I

- Operando⇒ Decimal

* Directivas oPseudoinstrucciones

- Organización del programa en memoria- Reserva de memoria- Indicar al traductor el final del programa

* Comentarios. Permiten aclarar el programa (el traductor losignora)⇒ Por Ejemplo: CAR 11 ’cargar el número B

Tipos de lenguajessimbólicos en C

* 7.3 Lenguaje simbólico de 1 paso (LS1)* 7.4 Lenguaje simbólico de 2 pasos (LS2)

Page 61: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 12/13JJ J N I II 12/13

Sentencias de Instrucción y las transferencias que representan

Page 62: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 13/13JJ J N I II 13/13

7.5. Transferencias entre Registros

Page 63: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 1/3JJ J N I II 1/3

Algoritmosy

Diagramas de flujoFundamentos de Informática - [T 8]

1o Ingeniería QuímicaManuel López Martínez

José Ángel Acosta RodríguezIsmael Alcalá Torrego

Page 64: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 2/3JJ J N I II 2/3

Índice8.1. Algoritmos y pseudocódigo 3

8.2. Objetos y operaciones 3

8.3. Fases del proceso de resolución de problemas 3

8.4. Diagramas de flujo 3

Page 65: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

8 Algoritmos y diagramas de flujo

8.1) Algoritmos y pseudocódigo

Información deun problema

Para procesar Algoritmo

Conjunto ordenado yfinito de operaciones

para resolver unproblema concreto

De cómoprocesar

Programa

programación

Lista deTareas

Expresiónen un

lenguajenatural

Expresióngráfica

Pseudocódigo

1. Hallar el cociente c de a/b2.Tomar la parte entera del conciente d=[c]3. Obtener el resto como a - bd4. Fin

1. Si x es positivo, el resultado es x2. Si no, el resultado es -x3. Fin

1. Iniciar suma parcial sp a cero2. Iniciar índice i a uno3. Hacer:

3.1 Dar a sp el valor sp + vi2

3.2 Incrementar i3.3 Si i < 10 ir al punto 3

4. El resultado es la raíz de sp5. Fin

E j e m

p l o s

AlgoritmoSecuencial

Algoritmocon

bifurcación

Algoritmocon bucle

Diagrama deflujo

Page 66: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

8.2) Objetos y operaciones

Objeto nombre valor tipoíndice i variable nº enteroletra Li variable carácter

sumando a variable nº enterosumando b variable nº entero

media m variable nº realdos 2 constante nº entero

1. Iniciar índice i a 12. Tomar Li letra i-ésima de la palabra3. Reemplazar por Li+1, siguiente en el alfabeto4.Si Li es la última letra de la palabra, entonces ir a a 65. Sumar uno a i e ir a 26. Fin

Objetos Elementos del lenguaje algorítmico que contienen datos

Tienen atributos

nombre

clase de valor

tipoEjemplos de objetos en dos algoritmos

1. Preguntar el valor de a2. Preguntar el valor de b3. La media es m = (a+b)/24. Fin

En principio todas las que se pueden realizar conuna calculadora muy simple: suma, resta, ..

La operación "=" indica una asignación dela parte de la izquierda al objeto de la

derecha

Operaciones

Page 67: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

Análisis del problema: Conocer los datos de entrada y los resultados quedeseamos obtener.

Intentar identificar las partes que se sospecha se pueden resolver. Espreciso asegurarse de que al resolver los trozos, se resuelve el problema.

Resolución de los subproblemas y prueba de validez de los mismos.

Construcción del algoritmo: Se puede expresar mediante gráficos (diagramasde flujo) o mediante lenguaje común (pseudocódigo).

1)

2)

3)

4)

8.3) Fases del proceso de resolución de problemas

8.4) Diagrama de flujo u organigrama

Es un tipo de descripción gráfica de un algoritmo que utiliza el siguiente conjuntode símbolos

Inicio de bloque Proceso Bifurcación Entrada o Salida

Fin de bloque Subprograma Módulo Actualización

Page 68: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

8.6 Ejemplos de diagramas de flujo

Diagrama de Flujo

1.

2.

3.

4.

Leer primer sumando a

Leer segundo sumando b

Hallar la suma de lossumandos c=a+b

Escribir c

Pseudocódigo

Leer dos números del teclado yescribir la media aritmética

EJ 1.1) Media de dos valores

Leer un número del teclado yescribir su valor absoluto

EJ 1.2) Valor absoluto

Diagrama de flujo

R

8.6.1 Programa Lineal

8.6.2 Programa con bifurcación

Page 69: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

Diagrama de Flujo

1.

2.

3.

4.

Dadas las componentes de un vector de R2, escribir el número del cuadrante en elque se haya

EJ 1.3) Cuadrante

8.6.2 Programa con bifurcación

Page 70: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 1/10JJ J N I II 1/10

Introducción al Lenguaje CFundamentos de Informática - [T 10]

1o Ingeniería QuímicaManuel López Martínez

José Ángel Acosta RodríguezIsmael Alcalá Torrego

Page 71: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 2/10JJ J N I II 2/10

Índice10.1. Introducción 3

10.2. Visión General 4

10.3. Componentes del Lenguaje C 510.3.1. Palabras Reservadas . . . . . . . . . . . . . . . . . . . . . . 6

10.4. Ejemplos 710.4.1. Ejemplo main y printf . . . . . . . . . . . . . . . . . . . . . 810.4.1. Ejemplo main y printf(cont) . . . . . . . . . . . . . . . . . . 910.4.2. Ejemplo scanf . . . . . . . . . . . . . . . . . . . . . . . . . 10

Page 72: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 3/10JJ J N I II 3/10

10.1. Introducción

CaracterísticasLenguaje C

ANSI C

•Lenguaje de propósito general⇒ Lenguaje alto nivel

•Conciso, sencillo, operadores potentes

•Portable⇒ Otros ordenadores

•Modular⇒ funciones⇒ bibliotecas

•Flexible

• alto nivel ⇒ permite definir tipos de datoscomplejos• bajo nivel⇒ permite acceso a direcciones de

memoria

Page 73: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 4/10JJ J N I II 4/10

10.2. Visión General

1.- Escritura

2.- Compilación

3.- Montaje

4.- Ejecución

Tema 0: Introducción al lenguaje C

2

funciones matemáticas, de entrada-salida, de gráficos, etc. En el caso del ejemplo anterior, la función printf() es un elemento de la biblioteca estándar. A diferencia del lenguaje LS-2, el lenguaje C no guarda ninguna relación entre las instrucciones de la máquina y el código fuente. Cada proposición del lenguaje C puede dar lugar a muchas instrucciones una vez compilado. Esta es una característica común a los lenguajes llamados de alto nivel. La ventaja de estos lenguajes es clara: escribiendo poco código se pueden hacer muchas cosas. Por ejemplo, para acceder a un elemento individual de una matriz en memoria es preciso en LS2 realizar varias operaciones, en lenguaje C esta tarea ocupa solo una sentencia simple como a[i][j] que además de cómodo es mucho más legible. 0.2.3 Montaje El montaje permite crear un archivo ejecutable a partir de trozos de código de máquina. Estos trozos son los ficheros objeto creados al compilar y los ficheros que se hayan en la biblioteca de funciones. El montaje es realizado por un programa del sistema de explotación. A menudo el montaje y la compilación se realizan conjuntamente mediante un solo programa. El resultado, como es sabido, es un fichero llamado ejecutable que será guardado en disco o cinta para tenerlo disponible para ser ejecutado. 0.2.4 Ejecución La ejecución del programa es el paso final y se produce simplemente indicando al sistema de explotación que se desea cargar el fichero ejecutable y dar paso al programa que contiene. En UNIX la ejecución se realiza sin más que escribir el nombre del fichero ejecutable. En el caso del ejemplo anterior se obtiene por pantalla los dos mensajes. Después de la ejecución el sistema de explotación queda a la espera de nuevas órdenes. En el diagrama siguiente se muestra el proceso seguido mostrándose los ficheros involucrados y los programas usados. Bajo el sistema de explotación UNIX la secuencia a seguir para generar el ejecutable del programa ejemplo es la siguiente: Se crea el fichero de texto ejemplo.c con un editor, (se utilizará en este ejemplo el editor vi, pero podría utilizarse cualquier otro disponible).

COMPILADOR

fichero fuente con código en C, (.c)

MONTADOR DE ENLACES

fichero de código objeto (.o)

Funciones de biblioteca (.lib,.dll)

EDITOR DE TEXTO

fichero ejecutable, (.exe)

Page 74: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 5/10JJ J N I II 5/10

10.3. Componentes del Lenguaje CSentencias terminadas en ;

/* inicio comentarios y fin de comentarios */

Variables, constantes, operadores, expresiones, funciones.

Bloques (bifurcaciones, bucles y funciones) entre llaves {}.

NombresVariables

•Distinción Mayúsculas/minúsculas.

•No usar tildes ni la letra ñ.

• Declaración de variables al principio de la función(Reserva de Memoria)

Page 75: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 6/10JJ J N I II 6/10

10.3.1. Palabras Reservadas

Tema 0: Introducción al lenguaje C

4

0.3.1 Palabras reservadas en C Son componentes léxicos definidos con un significado para el compilador de C. No podrán utilizarse ninguna de estas palabras para denominar variables o funciones. Indicar algunas, por ejemplo las resaltadas. auto default float register struct volatile break do for return switch while char double goto short typedef case else int signed union const enum if sizeof unsigned continue extern long static void 0.4 Ejemplos En estos ejemplos se proporcionan ideas que se describen con detalle en temas posteriores. 0.4.1 Ejemplo 1

El proceso de compilación, montaje y ejecución se ha descrito de forma gráfica en la figura siguiente. Se ha de tener en cuenta que: � Una sentencia C puede dar lugar a muchas instrucciones de código de máquina � Algunas funciones pertenecen a la biblioteca, por lo ya están compiladas y se incluyen en el montaje � Las variables ocupan lugares en memoria cuyo valor se modifica durante la ejecución � El espacio en memoria para las variables x e y se toma durante la ejecución y se desocupa al finalizar

la función main. En el ejemplo anterior las letras H y M resultan de interpretar los números 72 y 77 como código ASCII.

main()

{

int x; /* declaración variable x de tipo entero */

char y; /* declaración variable y de tipo carácter */

x = -50; /* asignación de valores a variables */

y=72;

printf(“ x es %d, y es %c \n”, x,y); /* salida por pantalla */

x=90;

y=77;

printf(“ ahora x = %d, e y= %c”, x,y);/* salida por pantalla */

}

Page 76: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 7/10JJ J N I II 7/10

10.4. EjemplosFunción main: Imprescindible para realizar un fichero ejecutable (.exe).

Funciones deEntrada/Salida

•Función printf: Escritura en pantalla

•Función scanf: Lectura de teclado

•Especificadoresde formato

%c: carácter

%d: número entero

%f: número real

Page 77: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 8/10JJ J N I II 8/10

10.4.1. Ejemplo main y printf

Tema 0: Introducción al lenguaje C

4

0.3.1 Palabras reservadas en C Son componentes léxicos definidos con un significado para el compilador de C. No podrán utilizarse ninguna de estas palabras para denominar variables o funciones. Indicar algunas, por ejemplo las resaltadas. auto default float register struct volatile break do for return switch while char double goto short typedef case else int signed union const enum if sizeof unsigned continue extern long static void 0.4 Ejemplos En estos ejemplos se proporcionan ideas que se describen con detalle en temas posteriores. 0.4.1 Ejemplo 1

El proceso de compilación, montaje y ejecución se ha descrito de forma gráfica en la figura siguiente. Se ha de tener en cuenta que: � Una sentencia C puede dar lugar a muchas instrucciones de código de máquina � Algunas funciones pertenecen a la biblioteca, por lo ya están compiladas y se incluyen en el montaje � Las variables ocupan lugares en memoria cuyo valor se modifica durante la ejecución � El espacio en memoria para las variables x e y se toma durante la ejecución y se desocupa al finalizar

la función main. En el ejemplo anterior las letras H y M resultan de interpretar los números 72 y 77 como código ASCII.

#include <stdio.h>

void main(void)

{

int x; /* declaración variable x de tipo entero */

char y; /* declaración variable y de tipo carácter */

x = -50; /* asignación de valores a variables */

y=72;

printf(“ x es %d, y es %c \n”, x,y); /* salida por pantalla */

x=90;

y=77;

printf(“ ahora x = %d, e y= %c”, x,y);/* salida por pantalla */

}

Al declarar una variable se reserva espacio en memoria para ella.

El espacio en memoria para las variables declaradas se libera al finalizar lafunción main

Page 78: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 9/10JJ J N I II 9/10

10.4.1. Ejemplo main y printf(cont)Tema 0: Introducción al lenguaje C

5

main(){ int x; /* declaración variable x de tipo entero */ char y; /* declaración variable y de tipo carácter */ x = -50; /* asignación de valores a variables */ y=72; printf(“x es %d, y es %c \n”, x,y); /* salida por pantalla */ x=90; y=77; printf(“ahora x = %d, e y= %c”, x,y);/* salida por pantalla */}

0000100001011101101001111010100010

: :: :

00001000011111011

0000100001011101101001111010100010

: :: :

00001000011111011

0000100001011101101001111010100010 01001111010100010 01001111010100010

: :: :

00001000011111011

01 ... ... 10

01 ... ... 10

: :

01 ... ... 10

?

?

01 ... ... 10

01 ... ... 10

: :

01 ... ... 10

72

90xy

01 ... ... 10

01 ... ... 10

: :

01 ... ... 10

?

-50xy

01 ... ... 10

01 ... ... 10

: :

01 ... ... 10

?

?

x es -50, y es Hahora x= 90, e y= M

fuen

te

obje

to

ejec

utab

le

1

2

3

4

1 2

3 4

0.4.2 Ejemplo 2 La función de salida de información por pantalla más utilizada es printf(), que de forma muy resumida, podemos decir que lo que hace es presentar por pantalla la información que se le pasa como argumento. printf(“Cadena de control”, lista de datos separados por comas); La cadena de control puede contener un texto para presentar por pantalla y los especificadores de formato que determinan la forma en que aparecerán los valores, (debe haber tantos especificadores de formato como datos haya). Los especificadores de formato más usuales son: � %c formato de carácter � %d formato decimal � %f formato en coma flotante Ejemplos:

printf(“ El número %d ”, 18); Por pantalla aparece:

printf(“la suma de %d y de %d es %d”, 6, 2, 6+2);

El número 18

la suma de 6 y de 2 es 8

Page 79: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 10/10JJ J N I II 10/10

10.4.2. Ejemplo scanf

Tema 0: Introducción al lenguaje C

7

0.4.3 Ejemplo 3 El programa siguiente tiene cuatro funciones: main(), scanf(), suma() y printf(). La función main() es la función principal, la que contiene a todo el programa. La función scanf() es de biblioteca y sirve para leer del teclado e introducir valore en la memoria. La función suma() calcula la suma y devuelve el resultado. Esta función ha sido realizada junto con main() en el código fuente que se muestra. La función printf() es de biblioteca y sirve para escribir en la pantalla.

#include <stdio.h>

void main(void)

{

int x; /* declaración variable x de tipo entero, primer sumando */

int y; /* declaración variable y de tipo entero, segundo sumando */

int z; /* declaración variable z de tipo entero, para el resultado */

scanf(“ %d ”, &x); /* Para leer del teclado un entero */

scanf(“ %d ”, &y); /* ídem */

z = x+y; /* suma */

printf(“ La suma vale %d”, z); /* salida por pantalla */

}

Page 80: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 1/7JJ J N I II 1/7

Variables, constantes,operadores y expresionesFundamentos de Informática - [T 11]

1o Ingeniería QuímicaManuel López Martínez

José Ángel Acosta RodríguezIsmael Alcalá Torrego

Page 81: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 2/7JJ J N I II 2/7

Índice11.1. Variables y punteros 3

11.1.1. Vigencia y alcance de las variables locales y globales . . . . . 311.1.2. Especificadores de variables: static . . . . . . . . . . . . . . . 311.1.3. Parámetros formales . . . . . . . . . . . . . . . . . . . . . . 3

11.2. Sentencias de asignación 5

11.3. Expresiones 511.3.1. Conversiones de tipo . . . . . . . . . . . . . . . . . . . . . . 511.3.2. Moldes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511.3.3. Abreviaturas . . . . . . . . . . . . . . . . . . . . . . . . . . 5

11.4. Constantes 6

11.5. Operadores 711.5.1. Aritméticos . . . . . . . . . . . . . . . . . . . . . . . . . . . 711.5.2. Relacionales y lógicos . . . . . . . . . . . . . . . . . . . . . 711.5.3. Operadores de bits . . . . . . . . . . . . . . . . . . . . . . . 711.5.4. Prioridad de operadores . . . . . . . . . . . . . . . . . . . . . 7

Page 82: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

PROPIEDADESo

CARACTERÍSTICASde una Variable

1 byte2 bytes4 bytes8 bytes

-128:127-32768:32767

-3.4*1038:3.4*1038

-1.7*10308:1.7*10308

Tamaño Rango aprox.char

intfloat

double

Tipo

TIPO

De datos quealmacena

Consideraciones

1º Siempre unaLetra del Alfabeto +

CualquierCombinación deDígitos y Letras

Case Sensitive

NOMBREo

IDENTIFICADORPara distinguirla

de las demás

VIGENCIA Durante toda laejecución del programa

VIGENCIA Durante laejecución de la funcióndonde está declarada

VIGENCIA¿Cuándo se puedehacer uso de una

variable?

ALCANCE¿Dónde se puedeutilizar la variable?

VARIABLE GLOBALAccesible por cualquier

función del programa

VARIABLE LOCALAccesible sólo en la función

donde está declarada

Page 83: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

VIGENCIA Sólo durante laejecución de la función

donde se declara

INICIALMENTEestá a 0Dentro de una función

= VARIABLE LOCALAccesible sólo en lafunción donde está

declarada

(3) Sin Especificador.Se llaman Variables Dinámicas

o Automáticas

(4) Con EspecificadorStatic

Accesible por cualquierfunción del programa

PROPIEDADESDE UNA VARIABLESEGÚN DONDESE DECLARA

(1) FUERA de todaslas funciones.

Se llaman Variables Globales

(2) En la declaración de losparámetros de la Función.

Se llaman Parámetros Formales

Al declararlacontiene basura

A continuaciónde las llaves

INICIALMENTEtoma el valor del

parámetro de llamadacorrespondiente

VIGENCIA Durantetoda la ejecución de

del programa

Page 84: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

SENTENCIA DEASIGNACIÓN

Sentencia que da unvalor a una Variable

.

.

.

.

Valor de laVariable

&NombreVariable(es la Dirección de

memoria de laVariable)

.

.

.

.

Tamaño dela Variablesegún el

TIPO que sea

Puede existirpérdida de datos

Se evalúa primero laEXPRESIÓN

Variable = EXPRESIÓN

Se convierte alTIPO de Variable

INICIALIZACIÓNCuando la asignación sehace en la declaración

Cualquier combinación de variables, operadores

y constantes

moldes(tipo) expresión

ABREVIATURAScon + - * / % << >> & ^ |

Generan código máseficiente

x=x+10 x+=10y=y-2 y-=2

EJEMPLO

Page 85: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

CONSTANTES

No se pueden alteraren el programa

TIPOS de Constantes

Número dedoble

precisión

Enteros

Caracteres

NúmeroReal

ASCII

caracteresespeciales

\n Nueva Linea \r Retorno de Carro \t Tabulador

\' \" \\

Page 86: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

OPERADORES

Símbolos que indican unaoperación a realizar

OperadoresAritméticos - resta y cambio de Signo

+ suma* multiplicación/ división% módulo (resto de división entera,

no aplicable a float y double) -- decremento++ incremento

OperadoresRelacionales

yLógicos

Operadoresde Bits

OperadoresEspeciales

& Operación AND | Operación OR ^ Operación XOR ~ Negación bit a bit >> Desplazamiento a la derecha << Desplazamiento a la izquierda

Relacionales: Comparanvalores entre sí y devuelven 1 si

es cierto y 0 si es falso

>, >=, <, <=, == y !=

Lógicos: Permiten realizaroperaciones lógicas.Devuelven

1 si es cierto y 0 si es falso

&&, || y !

Operador Ternario Condicional:Expresion_1 ? Expresion_2 : Expresion_3

Operadores de Puntero: & "Dirección de"

"Contenido apuntado por"*

Precedencia: Indica que operador tiene prioridad en una operación sin paréntesis

( ) [ ] -> . Prioridad máxima! ~ ++ -- - (type) * & sizeof* / %+ -<< >>< <= > >=== !=&^|&&||? := += -= *= /=, Prioridad mínima

Page 87: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 1/3JJ J N I II 1/3

Sentencias de control en CFundamentos de Informática - [T 12]

1o Ingeniería QuímicaManuel López Martínez

José Ángel Acosta RodríguezIsmael Alcalá Torrego

Page 88: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 2/3JJ J N I II 2/3

Índice12.1. Operaciones en secuencia 3

12.2. Operaciones condicionales 3

12.3. Procesos iterativos 3

12.4. Ejemplos 3

Page 89: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

B

A

{ sentencia_1 ; sentencia_2 ; . . }

sentencia_1 ;

El lenguaje C dispone de sentencias de control adaptadasa los diagramas de flujo estructurados

Estructuras básicasde un diagrama de flujo

OPERACIONESEN SECUENCIA

OPERACIONESCONDICIONALES

OPERACIONESITERATIVAS

TEMA 12: SENTENCIAS DE CONTROL DE LOS PROGRAMAS

12.2. Operaciones en Secuencia

Consiste en realizar una operación trasotra sin bifurcaciones ni saltos.

Page 90: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

I F

if (condición) /* No lleva ";" */{.........; /* Bloque de

sentencias A */}

Cond ?

A

SI

NO

1º) Se evalúa una condición.

2º) Dependiendo del resultado, el flujo de ejecución seguirá una de las dos bifurcaciones.

I F - ELSE

if (condición) /* No lleva ";" */{.........; /* Bloque de

sentencias A */}

else{.........; /* Bloque de

sentencias B */}

B

Cond ?

A

NO

SI

12.3. OPERACIONES CONDICIONALES

Page 91: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

EJEMPLOS:Operaciones

Condicionales"ANIDADAS"

NO

NO

SI

B

Cond2 ?

A

SI

Cond1 ?

NO

NO

SI

Cond2 ?

A

SI

Cond1 ?

B

EJEMPLOOperaciones

Condicionalesen

"ESCALERA"

NO

NOSI Cond2 ?

SI

B

Cond3 ?

CA

Cond1 ?

SI

NO

12.3. OPERACIONES CONDICIONALES (CONT)

Page 92: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

• Caso de decisión con bifurcación múltiple (Ej. Menús)• FUNCIONAMIENTO: Se compara una variable con una lista deconstantes enteras o carácter, y cuando sea igual a alguno de los elementosde la lista, se ejecuta una sentencia (o bloque) y todas las siguientes.

BREAKLa sentencia break indica que termina la ejecución del bloque switch. Si noapareciera se ejecutaríatodo lo que viene después, hasta la llave final del switch.

SWITCHSWITCH

switch (variable) {case const_1: sentencia_1;case const_2: sentencia_2;:case const_n: sentencia_n;default: sentencia; /* se ejecuta si no se encuentran igualdades */}

switch (variable) {case 1:case 2:case 3: sentencia1; break;case 4: sentencia2;}

Page 93: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

PROCESOSITERATIVOS

Para realizar un conjuntode sentencias repetidas

veces.

¿Se conoce a priori el nº de iteraciones ?

SI

NO

SENTENCIA for

SENTENCIAS:- while- do..while

FOR

for( Valores iniciales; Condición; Actualización ){ Bloque de sentencias; }

SINTAXIS

VALORES INICIALES: Es la parte quese usa normalmente para dar un valorinicial a la variable decontrol del bucle. Admite cualquiersentencia, y sólo se ejecuta una vez.

CONDICIÓN : Expresión relacional quedetermina cuando se sale del bucle. Seejecuta el bucle siempre que la condiciónse cumpla.

ACTUALIZACIÓN: Define cómo cambiala variable de control cada vez.

ValoresIniciales

Actualización

Bloque desentencias

Condición

SI

NO

12.4. PROCESOS ITERATIVOS: FOR, WHILE, DO WHILE

Page 94: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

WHILE

while ( condición ) { bloque de sentencias; }

SINTAXIS

La condición ha de ser cierta para pasar aejecutar el cuerpo del bucle.

...¿Y SI SE DESCONOCE EL NUMERO DE ITERACIONES?

LA REPETICIÓN TERMINA CUANDO SE CUMPLE CIERTA CONDICIÓN

DO ...WHILE

do { bloque de sentencias; }while ( condición );

SINTAXIS

Es un bucle con comprobación de lacondición a la salida, por tanto, el bloquede sentencias se ejecuta al menos una vez.

Bloque desentencias

Condición

SI

NO

Bloque desentencias

CondiciónSI

NO

12.4. PROCESOS ITERATIVOS (CONT)

Page 95: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

{int numero, divisor;printf("Introduzca el número \n");scanf("%d", &numero);divisor = 2;while (numero%divisor != 0) divisor++;if (divisor == numero) printf("%d es primo\n", numero);

else printf("%d no es primo\n", numero);}

EJEMPLOS

WHILE

void main(void){int x, y, z, var;printf(“Deme datos x e y \n”);scanf(“ %d %d”, &x, &y);printf(“Elija opcion: \n 1-sumar x + y \n 2 –restar x – y \n ");printf("3–multiplicar x * y \n”);scanf("%d", &var);switch(var) {

case 1: z = x + y ;break;case 2: z = x – y ;break;case 3: z = x * y ;break;default: printf( "No eligió bien la opción\n" );

}}

{int x, y;for( x = 0, y = 5; x + y < 7; ++x){ z = x - y; printf(“%d \t”, z);}for( x = 0, y = 10; x < y ; x++, y--) printf("\n %d \t %d \n", x, y);}

FOR

SWITCH

void main(void)

void main(void)

#include <stdio.h>

#include <stdio.h>

#include <stdio.h>

Page 96: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 1/6JJ J N I II 1/6

Funciones en CFundamentos de Informática - [T 13]

1o Ingeniería QuímicaManuel López Martínez

José Ángel Acosta RodríguezIsmael Alcalá Torrego

Page 97: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 2/6JJ J N I II 2/6

Índice13.1. Formato de una función: Prototipo, definición y llamada 3

13.2. Argumentos de las funciones:Paso de parámetros por valor y referencia 4

13.3. Recursividad 5

13.4. Ejemplos 6

Page 98: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

Tema 13: Funciones en C

FUNCIÓN

Proporciona unaforma conveniente de

encapsular tareas

Definición

Desde el punto de vista del código quellama a una función:

1.- No hace falta saber cómo hace la tarea.2.- Sólo hay que saber qué hace

Utilización

sum(x,y)=4;

No se puede asignar unvalor a una función:

El valor devuelto por una funciónpuede ignorarse en el código dellamada

Indica: - El tipo de datos que devuelve. - Los parámetros que utiliza. - Declaraciones y sentencias para la tarea que realiza.

La llamada a la función se realizainvocando su nombre e incluyendo entreparéntesis los argumentos concretos deesa llamada.

El prototipo de la función sirve para indicar alcompilador el tipo de dato devuelto y el tipo delos parámetros.No es necesario escribir el nombre de losparámetros en el prototipo o declaración.

Se realiza donde se vayaa utilizar la función

Para comprobar la consistenciadel código del programa

Declaracióno

Prototipo

13.1 Formato de una función: Prototipo, definición y llamada

Page 99: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

Recordatorio:Las variables que reciben lacopia del valor son: - Locales. - Vigencia hasta que termina

la función.

int potencia ( int base , int *exponente ){ int i, p; p=1; for ( i=1; i <= *exponente; i++ ) p=p*base ; return p; /* Devuelve el entero p */}

Ejemplo de definición de una función

cuando se encuentre un return:1.- se pasa el resultado al tipo de dato que devuelve lafunción.2.- se devuelve el resultadodonde se llamó a la función3.- se termina la ejecución dela función

Declaración de parámetros otambién llamados argumentos

Nombre dela funciónTipo de dato

devuelto(Si no devuelve nada

se declaracomo tipo void)

Existen dos formas de pasarcada argumento de una función

Si una función tiene quemodificar el contenido de

la memoria

Se pasa porreferencia

Se pasa la dirección.Luego se utilizan

punteros

Si la función sólo necesitauna copia del valor

Se utilizan variablesdel tipo correspondiente

Se pasa porvalor

13.2 Argumentos de las funciones: Paso de parámetros por valor y por referencia

Definición de una Función

Page 100: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

#define

13.3 Recursividad

En C las funciones pueden llamarse a si mismas Una función es recursiva si ensu definición tiene llamadas

a la propia función

En cada llamada se crea un nuevoconjunto de variables locales

No ahorramemoriapueden

resultarmás claras

Normalmenteson más lentas

Recursividad comparadacon operaciones iterativas

int fact (int n){ int nuevo; if (n==1) return (1); nuevo=fact(n-1)*n; return (nuevo);}

Ejemplo 1

void main (void){ int n; printf ("Introduzca un número:"); printf (" se para con 0 \n"); scanf ("%d",&n); if (n!=0) main ();}

Ejemplo 2

#include

Permite incluir un fichero en el programa.

Normalmente es un fichero de cabecera(header) con extensión .h =

Fichero con declaracionesde funciones

Si el fichero estáen el mismodirectorio del

programa fuente

#include "fichero"

Si el fichero estáen una ruta

predefinida en elcompilador

#include <fichero>

#define ITERMAX 10

void main (void) { int i; for (i=0; i < ITERMAX ; i++)

printf ("Ejemplo\n"); }

Ejemplo

#define NOMBRE_CTE valor

Se sustituye el NOMBRE_CTE por el valor

Page 101: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 1/9JJ J N I II 1/9

Vectores, cadenas, matrices ypunteros

Fundamentos de Informática - [T 14]

1o Ingeniería QuímicaManuel López Martínez

José Ángel Acosta RodríguezIsmael Alcalá Torrego

Page 102: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 2/9JJ J N I II 2/9

Índice14.1. Vectores 3

14.2. Cadenas de caracteres 4

14.3. Punteros 5

14.4. Reserva dinámica de memoria 6

14.5. Matrices 7

14.6. Paso de tablas como argumento a funciones 8

14.7. Ejemplos 9

Page 103: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

14.1 VECTORES

Permiten almacenar tablas

Ejemplos de declaración con inicialización

14.0

15.0

16.0

Almacenamiento de vectores en memoria

char Letras[4]={'s','s','w','a'} ;

float vector[3]={14.0,15.0,16.0} ;

Declaración de vector

Numero de elementosdel vector

int nombre_vector[ 10 ] ;

vector[ 0 ] vector[ 1 ] vector[ 2 ] vector[0]

vector[1]

vector[2]

Nombre del vector

(Se puede utilizar como unaconstante con la dirección delprimer elemento del vector)

Tipo de datoalmacenadoen el vector

Page 104: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

14.1 MATRICES ALMACENADAS EN VECTORES

Una matriz puede almacenarse en forma de vector

Ejemplos de declaración con inicialización

Matriz 2x2

float vector[4]={14.0,15.0,16.0,17.0} ;

Declaración de vector

Numero de elementosde la matriz

int nombre_vector[ 10 ] ;

vector[ 0 ] vector[ 1 ]

Nombre del vector

(Se puede utilizar como unaconstante con la dirección delprimer elemento del vector)

Tipo de datoalmacenadoen el vector

vector[ 2 ] vector[ 3 ]

fila i=0

fila i=1

Columna j=0 Columna j=1

int i=0; /* índice para el número de fila */int j=0; /* índice para el número de columna */int nc=2; /* Número de columnas */ float vector[4]={14.0,15.0,16.0,17.0} ;

printf("%f",vector[i*nc+j]); /* elemento ij de la matriz */

Page 105: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

14.2 CADENA DE CARACTERES

Se almacenan en un vector de caracteres.

Ejemplos de declaración con inicialización

Almacenamiento en memoria igual que un vector

char cadena[5]={'c','a','s','a',0} ;

char cadena[5]="casa" ;

Declaración como vector de caracteres

Número de elementosde la cadena + el

carácter fin de cadena,cuyo código ASCII es el

0

char nombre_cadena[ 10 ] ;

Nombre de la cadena

(Se puede utilizar como unaconstante con la dirección delprimer elemento del vector)

Tipo de dato essiempre

char

Page 106: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

14.3 PUNTEROS

Variables que van a almacenar direcciones de memoria

Ejemplo de declaración con inicialización

Asignación de dirección de memoria

char * pcar=NULL ;

Declaración del puntero

int * pnombre_puntero;

Nombre del puntero

(Representa la dirección delelemento apuntado )

Tipo de datoapuntado Identificador

dePuntero

char car;char * pcar=NULL ;

pcar=&car;

Modificación del contenido de la variable apuntada

*pcar='a';

printf("%c", car);

Operaciones aritméticas permitidas con punteros

� Restar dos punteros� Comparar dos punteros.� Sumar o Restar un número entero a un puntero.

Page 107: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

#include <stdio.h>float ProdEsc(float *v1,float *v2,int dim);void leevector(float *v,int dim);void main(void){float vector1[100]; /* primer vector */float vector2[100]; /* segundo vector */float result; /* resultado */int dim; /* longitud del vector */do{printf("\nLongitud del vector:\t");

scanf("%d",&dim);} while (dim < 1 || dim > 100);/* Lectura de vectores */printf("\nLectura del 1º vector\n");leevector(vector1,dim);printf("\nLectura del 2º vector\n");leevector(vector2,dim);/* Calculo del producto escalar */result=ProdEsc(vector1,vector2,dim);/* Escritura de resultado */printf("\nProducto escalar: %f\n",result);}

ASIGNACIÓN DE MEMORIA DINÁMICA

Hasta el momento todos losvectores y cadenas ocupaban un tamaño fijo en memoria

Se desea trabajar contablas de longitud variable

(O desconocida)

OPCION 1 . Declarar tablas“suficientemente grandes” parautilizar sólo una parte de ellas OPCION 2

.Reserva dinámica de memoria

void leevector(float *v,int dim){int i; /* indice */printf("\n");for (i=0;i<dim;i++){

printf("Componente %d:\t",i);scanf("%f",&v[i]);

}}

float ProdEsc(float *v1,float *v2,int dim){int i; /* indices */float sp=0.0;for (i=0;i<dim;i++){

sp=sp+ v1[i]*v2[i];}return sp;}

14.4 RESERVA DINÁMICA DE MEMORIA (I)

Page 108: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

ASIGNACIÓN DE MEMORIA DINÁMICA (II)

DECLARACIÓNvoid * malloc( int )

LA SOLUCIÓN SE ENCUENTRAEN EL USO DE LA FUNCIÓN

MALLOC

Elprototipo se encuentra en alloc.h, por lo que se añade#include <alloc.h>

ARGUMENTO DE ENTRADAtamaño (en octetos)

que se necesita

ARGUMENTO DE SALIDAdirección del primer elemento o NULL en caso de error

EL TAMAÑO EN MEMORIA DE UN ELEMENTO DEL VECTOR SE DETERMINA CON

sizeof ( tipo )

El valor devuelto es unPuntero a void

(void * ) que se conviertecon un molde

El tamaño se especifica enOCTETOS

La memoria reservada ha de liberarse cuando yano se necesite

Free (direccion delbloque)

14.4 RESERVA DINÁMICA DE MEMORIA (II)

Page 109: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

#include <stdio.h>#include <stdlib.h>#include <alloc.h>

float ProdEsc(float *v1,float *v2,int dim);void leevector(float *v,int dim);float *pvect1; /* puntero al primer vector */float *pvect2; /* puntero al segundo vector */float result; /* resultado */int dim; /* longitud del vector */

printf("\nLongitud del vector: \t");scanf("%d",&dim);pvect1= (float*)malloc(dim*sizeof(float));

if (pvect1==NULL) exit();pvect2= (float*)malloc(dim*sizeof(float));if (pvect2==NULL) { free(pvect1) ; exit(); }

/* Lectura de vectores */printf("\nLectura del primer vector\n");leevector(pvect1,dim);printf("\nLectura del segundo vector\n");leevector(pvect2,dim);

/* Calculo del producto escalar */result=ProdEsc(pvect1, pvect2,dim);

/* En caso de que los vectores no vayan a ser utilizados más */

free(pvect1);free(pvect2);

/* Escritura de resultado */printf("\nEl producto escalar es %f\n",result);

}

ASIGNACIÓN DE MEMORIA DINÁMICA (III)

EJEMPLO: Producto escalar modificado (funciónmain)

...(añadir definiciones defunciones)

/* o vaya a terminar la ejecución del programa */

void main(void){

...(añadir definiciones defunciones)

14.4 RESERVA DINÁMICA DE MEMORIA (III)

Page 110: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

14.5 MATRICES

Permiten almacenar tablas bidimensionales.

Ejemplos de declaración con inicialización

Matriz [ 0 ] [ 0 ] Matriz [ 0 ] [ 1 ] Matriz [ 0 ] [ 2 ]

Matriz [ 1 ] [ 0 ] Matriz [ 1 ] [ 1 ] Matriz [ 1 ] [ 2 ]

11.0

12.0

13.0

14.0

15.0

16.0

Matriz[0][0]

Matriz[0][1]

Matriz[0][2]

Matriz[1][0]

Matriz[1][1]

Matriz[1][2]

Almacenamiento de matrices en memoria

char SopaLetras [4][6]={{'s','s','w','a','e','d'}, {'a','e','f','i','d','a'},

{'n','d','o','f','o','d'}, {'a','d','l','f','d','o'}} ;

float Matriz[2][3]={ {11.0,12.0,13.0} , {14.0,15.0,16.0} } ;

Nombre dela matriz

(Se puede utilizar como unaconstante con la dirección delprimer elemento de la matriz)

Tipo de datoalmacenadoen la matriz

Numero de filasde la matriz

Numero de columnasde la matriz

int nombre_matriz [ 10 ] [ 4 ] ;

Declaración de matrices

Page 111: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

Recordatorio:Las variables que reciben lacopia del valor son: - Locales. - Vigencia hasta que termina

la función.

Ejemplo de definición de una función

Tipo de datodevuelto

(Si no devuelve nadase declara

como tipo void)

Existen dos formas de pasarcada argumento de una función

Si una función tiene quemodificar el contenido de

la memoria

Se pasa porreferencia

Se pasa la dirección.Luego se utilizan

punteros

Si la función sólo necesitauna copia del valor

Se utilizan variablesdel tipo correspondiente

Se pasa porvalor

Paso de un vector como argumento

#include <stdio.h>

void suma ( int elemento, int * pvector, int vector[ ] );

void main (void){ int vector[3]={0,1,2}; suma(vector[0], &vector[0], vector);}

void suma ( int elemento, int * pvector, int vector[ ] ){ printf("%d, %d, %d", elemento, *pvector, vector[0]);}

14.6 PASO DE TABLAS COMO ARGUMENTO A FUNCIONES

Page 112: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 1/8JJ J N I II 1/8

Funciones de lectura y escrituraFundamentos de Informática - [T 15]

1o Ingeniería QuímicaManuel López Martínez

José Ángel Acosta RodríguezIsmael Alcalá Torrego

Page 113: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

JJ J N I II 2/8JJ J N I II 2/8

Índice15.1. Lectura y escritura con formato: printf, scanf 3

15.2. Ficheros de texto y binarios 4

15.3. Apertura y cierre de ficheros: fopen, fclose 5

15.4. Lectura y escritura en ficheros de texto: fprintf, fscanf 6

15.5. Lectura y escritura en ficheros binarios: fwrite, fread 7

15.6. Ejemplos 8

Page 114: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

Ficheros

fscanf

Tema 5: Funciones deLectura y Escritura

Lectura y escrituraen ficheros binarios

fwrite

fread

Salidaestándar

printf

Entradaestándar

scanf

fopen

fclose

fprintf

Funciones deapertura y cierre de

ficheros

Lectura y escrituraen ficheros de texto

Pantalla

Teclado

Page 115: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

Formato general de unparámetro de control

printf (escritura en pantalla con formato)

printf ("mensajes de texto y parámetros de control ", lista de argumentos);

%[Signo][Ajuste][Anchura][.Precisión]tipo

difecs

tipo

Constante numérica que indica elancho mínimo. Si no se alcanza serellena con espacios en blanco

Anchura

En float o double: Indica el númerode decimales a presentar.En cadena de caracteres: Indica elnúmero máximo de caracteres apresentar.

Precisión

Si lleva un signo - :Se ajusta a la izquierdaSi no aparece el signo - :Se ajusta a la derecha

Ajuste

Si lleva un signo + :Se presenta el signo delvalor (positivo o negativo)Si no aparece el signo +:Se presenta el signo delvalor sólo si es negativo

Signo

15.1 LECTURA Y ESCRITURA CON FORMATO (I)

enterosenterosreales con 6 decimalesexponencial 1.2e3carácter ASCI Icadena hasta encontrar elterminador '\0'

Page 116: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

Ejemplos con printf

#include<stdio.h>void main(void){ float df=3.14159; printf("\n Hola %f Adios", df); printf("\n Hola %f Adios", -df); printf("\n Hola %7.3f Adios", df); printf("\n Hola %7.3f Adios", -df); printf("\n Hola %-7.3f Adios", df); printf("\n Hola %+7.3f Adios", df); printf("\n Hola %+-7.3f Adios", df);}

Hola 3.141590 AdiosHola -3.141590 AdiosHola 3.142 AdiosHola -3.142 AdiosHola 3.142 AdiosHola +3.142 AdiosHola +3.142 Adios

Ejemplo 1

#include<stdio.h>void main(void){ int de=1492; float df=3.14159; char ca[]="un dos"; printf("\n\n\n %d %f %s fin1", de, df, ca); printf("\n %6d %6.4f %6s fin2", de, df, ca); printf("\n %10d %10.1f %10s fin3", de, df, ca); printf("\n %-10d %-10f %-10s fin4", de, df, ca); printf("\n %+10d fin5", de);}

Ejemplo 2

1492 3.141590 un dos fin1 1492 3.1416 un dos fin2 1492 3.1 un dos fin31492 3.141590 un dos fin4 +1492 fin5

Page 117: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

Los parámetros de controlson iguales que en printf

scanf (Lectura con formato desde teclado)

scanf ( " parámetros de control " , lista de argumentos ) ;

Esta función lee caracteres del teclado y los interpreta con el formato especificado.

Deben estar separados por espacios enblanco, tabuladores o cambios de línea

Direcciones de memoriadonde se almacenan los

datos

i

x

Manolo\0

5.43

25

nombre[0]nombre[1]nombre[2]nombre[3]nombre[4]nombre[5]nombre[6]

nombrenombre+1nombre+2nombre+3nombre+4nombre+5nombre+6

&x

&i

se introduce por teclado :w l,+b

Ejemplochar a, b, c, d, e, f;scanf("%c%c%c%c%c%c", &a, &b, &c, &d, &e, &f);

'w'' ''l'',''+''b'

abcdef

&a&b&c&d&e&f

En caso de que se leancaracteres seguidos, elespacio también se lee

int i; float x;char nombre[50];scanf("%d %f %s", &i, &x, nombre);

Ejemplo

se introduce por teclado :25 54.3E-1 Manolo

15.1 LECTURA Y ESCRITURA CON FORMATO (II)

Page 118: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

Agrupaciones de datos que se almacenan en dispositivos de grancapacidad (cintas, discos magnéticos, discos ópticos).

Los datos se almacenancodificados en códigoASCII

Caracteres del número = '1' '2' '9'Código ASCII en decimal = 49 50 57

Código ASCII en binario = 00110001 00110010 00111001

Ejemplo: Almacenamiento del número entero 129

Los datos se almacenanigual que en la memoria

Código en binario del entero de 2 bytes= 0000000010000001

Ejemplo: Almacenamiento del número entero 129

15.2 FICHEROS DE TEXTO Y BINARIOS

Ficheros

Ficherosde Texto

FicherosBinarios

Tipos de Ficheros

Page 119: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

Operaciones con los Ficheros

Desconexión entre elfichero y el programa

Permite que otrosusuarios/programaspuedan usar el fichero

Binarios

Texto

Obtenerinformaciónalmacenada

Modificar lainformaciónalmacenada

Existendos tiposde ficheros

15.3 APERTURA Y CIERRE DE FICHEROS

Apertura de fichero

Operaciones con losDatos

Lectura

Escritura

Cierre del fichero

Nuevo tipo de dato: puntero a ficheroFILE * (definido en <stdio.h>)

Vía de comunicaciónque permite accederal fichero.

Page 120: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

Apertura de un Fichero

Cadena de caracterescon el nombre y

extensión del fichero

Cadena decaracteres con elmodo de apertura

t = textob= binario+

r =w =

a =

LecturaEscritura (borrando elcontenido previo)Escritura (a partir delfinal del fichero)

FILE * fopen ( char * , char * );

Cierre de un FicheroPuntero del

fichero a cerrarint fclose ( FILE * ) ;

1) En caso de apertura correcta Devuelve un puntero al fichero

2) En caso de error de apertura Devuelve un puntero NULL

· En caso de cerrar correctamente el fichero Devuelve un 0· En caso de cerrar incorrectamente el fichero Devuelve un -1

Ejemplo: Apertura y cierrede un fichero de texto

para lectura#include <stdio.h>#include <stdlib.h>void main(void){FILE * pf;pf=fopen("prueba.txt","r t" ) ;if(pf==NULL) { printf("no se puede abrir el archivo\n") ; exit( 0 ) ; }..... /* Operaciones del programa */.....fclose ( pf ) ;}

Page 121: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

fprintf: Escritura en un fichero de texto

int fprintf ( FILE *,"texto y parámetros de control ", lista de argumentos);

Puntero al fichero(abierto previamente

con fopen)

Devuelve el número de bytes escritos.(Luego en caso de no poder escribir

ningún caracter devuelve un 0 )

#include <stdio.h>#include <stdlib.h>void main(void){FILE * pf;int nmat;float dni;char nombre[50]; pf=fopen("pru1.txt","wt"); if(pf==NULL) { printf("no se puede abrir el archivo\n"); exit(0); } printf("\nIntroduce tu nombre \n"); scanf("%s", nombre); printf("\n Introduce tu numero de matricula \n"); scanf("%d", &nmat); printf("\n Introduce tu DNI \n"); scanf("%f", &dni); fprintf( pf,"%s %d\nDNI %8.0f\n",nombre,nmat,dni); fclose (pf)}

Escribir en un fichero un mensaje consistente en:nombre del usuario (máximo 50 caracteres),

espacio, nro de matricula, salto de línea, el texto"DNI", espacio, el nro de DNI.

(El fichero tendrá por nombre "pru1.txt".)

Ejemplo:

Después de escribir el último valor en un fichero hay que escribirun caracter en blanco, un tabulador o un caracter de nueva línea

IMPORTANTE:

15.4 LECTURA Y ESCRITURA EN FICHERO DE TEXTO (I)

Page 122: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

Devuelve el número de argumentosasignados (luego en caso de no poder

asignar ningún argumento devuelve un 0 )

Direcciones de memoriadonde se almacenan los

datos

Puntero al fichero(abierto previamente

con fopen)

Condición para finalizar la lectura de ficheroswhile(fscanf(FILE * pf,"%d %d", &x,&y)==2)

La función fscanf devuelve un número entero correspondiente al númerode parámetros leídos.Si la proposición es cierta, se permanece dentro del bucle while

Resuelve el problema deleer un fichero quecontiene un númeroindeterminado de datos.

Programa que lee el fichero temp.txt conteniendoen cada línea: el nombre de una ciudad, espacio yla temperatura en grados Celsius.

Ejemplo:

Puntero al fichero(abierto previamente

con fopen)

15.4 LECTURA Y ESCRITURA EN FICHERO DE TEXTO (II)

fscanf: Lectura en un fichero de texto

int fscanf ( FILE * pfnombre,"parámetros de control ", lista de argumentos);

#include<stdio.h>#include<stdlib.h>void main(void){char ciudad[50];float temp, tempmax= -300;FILE * pf; pf=fopen("temp.txt", "rt"); if (pf==NULL) { printf("Error de apertura"); exit(0); } while(fscanf (pf, "%s %f", ciudad, &temp)==2) {

printf("\n %f %s", temp, ciudad);if(temp>tempmax) { tempmax=temp; }

} printf("\n temperatura máxima %f\n", tempmax); fclose (pf);}

Page 123: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

Puntero al fichero(abierto previamente

con fopen)

Tamaño de cadaelemento a escribir Número de

elementos aescribir

Puntero a laprimera dirección

de memoria dondese tomarán los

datos paraincluirlos en el

fichero.

fread: Lectura de un fichero binario

Puntero al fichero(abierto previamente

con fopen)

Tamaño de cadaelemento a leer Número de

elementos a leer

Puntero a laprimera dirección

de memoria dondese almacenarán

los datosobtenidos del

fichero.

15.5 LECTURA Y ESCRITURA EN FICHERO BINARIO (II)

fwrite: Escritura en un fichero binario

int fwrite ( void * mem_intermedia , int nro_octetos , int cont, FILE * pf);

int fread ( void * mem_intermedia , int nro_octetos , int cont, FILE * pf);

Devuelve el número de elementos leídos.Si no coincide con cont, la lectura no se ha realizado de forma completa

Page 124: Libro de Transparencias - esi2.us.esjaar/Datos/FIQ/LibroTransparencias.pdf · Los circuitos construidos con puertas lógicas constituyen la lógica cableada =⇒ Son la base de las

Ejemplos de lectura y escritura en ficheros binarios

Almacenamiento de un vector de 10números reales en un fichero binario.

Ejemplo 1:

Lectura del fichero binario anterior y salida porpantalla

Ejemplo 2:

#include <stdio.h>#include <stdlib.h>void main(void){ FILE *pf; float vector[10]; int i; for(i=0; i<10; i++) vector [ i ]= i * i ; pf=fopen("vdatos","wb"); if(pf==NULL) { printf("No se puede abrir fichero\n"); exit(0); } fwrite(vector, sizeof(float),10, pf);/* También se puede utilizar: fwrite(vector, sizeof(vector), 1, pf); */ fclose(pf);}

#include <stdio.h>#include <stdlib.h>void main(void){ FILE * pf; float x[10]; int i; pf=fopen("vdatos","rb"); if(pf== NULL) { printf("Error de apertura de fichero\n"); exit(0); } fread(x, sizeof(float), 10 , pf); /* También se puede hacer: fread(x, sizeof(x), 1, pf); */ for(i=0; i<10; i++) printf("%5.0f",x[ i ] ); fclose(pf);}