Sistema Sin Format i Cos

Embed Size (px)

Citation preview

  • 7/30/2019 Sistema Sin Format i Cos

    1/140

    SISTEMAS INFORMTICOS

    2 INGENIERAQUMICA

    Profesores Departamento Curso Acadmico

    F. Prez Ingeniera de Sistemas y Automtica 2003-04

    Isidro Calvo

  • 7/30/2019 Sistema Sin Format i Cos

    2/140

  • 7/30/2019 Sistema Sin Format i Cos

    3/140

    TITULACIN: INGENIERA QUMICAASIGNATURA: SISTEMAS INFORMTICOSAO ACADMICO: 2CREDITOS: 3 T y 3 P

    AO ACADMICO: 2003-2004

    OBJETIVOS:

    El objetivo de la asignatura es introducir a los alumnos en el mundo de la

    informtica ms all del punto de vista del usuario. Para ello se imparten conocimientos

    avanzados sobre arquitectura de computadores, sistemas operativos y lenguajes de

    programacin.

    TEMARIO TERICO:Tema 1. Introduccin a la informtica.

    Conceptos bsicos. Origen y evolucin de los sistemas de clculo. Ordenadores

    personales. Estudio comparativo. Sistemas inteligentes. El PC. Memorias.

    Tema 2. Estructura general de un sistema de computacin.Descripcin general. Elementos de almacenamiento. Unidad de control. Buses.

    Estructura general. Fases de ejecucin de instrucciones.

    Tema 3. Codificacin de la informacin.Conceptos generales. Codificacin. Sistemas de numeracin. Representacin

    numrica. Cdigos de alfanumricos. Deteccin y correccin de errores.

    Tema 4. Fundamentos de sistemas operativos.Elementos de un sistema de computacin. Tipos de sistemas operativos.

    Funcionamiento de los sistemas de computacin. Arquitectura de los sistemas

    operativos. Elementos de los sistemas operativos.

    Tema 5. Lenguajes de programacin.

    Objetivos de la programacin. Tipos de lenguajes. Herramientas deprogramacin. Desarrollo de programas.

    Tema 6. Programacin estructurada.Elementos del lenguaje. Estructura general de un programa. Comentarios. Pasos

    de programacin. Funciones bsicas.

    Tema 7. Elementos base de programacin.Identificadores. Palabras reservadas. Constantes. Operadores. Separadores.

    Comentarios.

  • 7/30/2019 Sistema Sin Format i Cos

    4/140

    Tema 8. Tipos de datos simples.Tipos simples: Enteros, reales y caracteres. Variables y constantes. Expresiones

    y sentencia de asignacin. Conversiones. Operaciones de lectura y escritura..

    Tema 9. Operadores.Operadores Aritmticos. Incremento y decremento. Operadores de relacin.

    Operadores de comparacin. Operadores lgicos. Operadores de acceso a los

    objetos. Direccin de un objeto. Tipos de direccionamiento. Conversin de tipos

    de variables. Prioridad de operadores. Evaluacin de expresiones.

    Tema 10. Instrucciones.Instrucciones simples y compuestas. Instrucciones de condicionales. Instrucciones

    repetitivas. Estructuras anidadas.

    Tema 11. SubprogramasConcepto de subprograma. Tiempo de vida y visibilidad de las variables. Paso

    de parmetros por valor y por referencia. Efectos laterales.

    Tema 12. FuncionesDefinicin, declaracin y llamada. Transmisin de informacin entre funciones.

    La funcin principal.

    Tema 13. Tipos estructuradosArrays unidimensionales y multidimensionales. Cadenas de caracteres. Funciones

    para el tratamiento de cadenas de caracteres. Estructuras. Estructuras anidadas.

    Punteros.

    Tema 14. ArchivosFicheros binarios y de texto. Entrada y salida estndar. Funciones para el manejo

    de ficheros.

    PRCTICAS:

    - Sesiones 12: Arquitectura del PC.- Sesiones 34: Entorno de programacin.- Sesiones 512: Programacin en C.- Sesiones 1315: Sistema operativo Linux.

  • 7/30/2019 Sistema Sin Format i Cos

    5/140

    Arquitectura del PC Estructura de Sistemas de Computacin

    Sistemas Operativos - Linux

    Lenguajes de Programacin

    Programacin en C

    Estructura de Programa

    Elementos del Lenguaje

    Sentencias de Control

    Modularidad

    Tipos de Datos Ficheros

    Sistemas Bsicos de Comunicacin

    Temario

    Sistemas OperativosSilberschatz, Galbin

    Ed. Pearson, Addison Wesley Longman

    Linux - Edicin EspecialTackett, Burnett

    Ed. Prentice Hall

    Programacin Estructurada en CAntonakos, Mansfield

    Ed. Prentice Hall

    Curso de Programacin C/C++Ceballos

    Ed. RA-MA

    Fundamentos de Programacin, Algoritmos y Estructura de DatosJoyanes

    Ed. McGraw Hill

    Bibliografa

    Programacin en CJoyanes, Zahonero

    Ed. McGraw Hill

  • 7/30/2019 Sistema Sin Format i Cos

    6/140

    SISTEMAS INFORMTICOSMTODO DE CALIFICACIN

    Examen Final Obligatorio (80% de la nota final). Nota mnima de aprobado 5.Calificacin por conocimiento demostrado. Dos partes:

    9 Terica: Preguntas tericas, modelo tipo test9 Prctica: Desarrollo de un programa en C

    Laboratorio Obligatorio (20% de la nota final). Nota mnima de aprobado 5. Lanota se mantiene durante el ao posterior a la calificacin. Dos tipos de calificacin:

    9 Asistencia + trabajos: Asistencia semanal y aprovechamiento. Entrega delos trabajos que se pidan. Disponibilidad de un disco con todas las prcticas

    desarrolladas.

    9 Examen: Uno por convocatoria

  • 7/30/2019 Sistema Sin Format i Cos

    7/140

    Sistemas Informticos

    Introduccin a losSistemas Computacin

    Fede Prez

    TEMA - Introduccin a los Sistemas de Computacin

    1. - Conceptos Bsicos

    2. - Origen y Evolucin de los Sistemas de Clculo

    2.1 Abaco

    2.2 Calculadoras Mecnicas2.3 Las Primeras Computadoras Mark I | ENIAC | ABC

    2.4 Las Calculadoras de Von Neuman

    3. - Generaciones de Ordenadores

    4. - El Ordenador Personal

    5. - Razones del xito de los Computadores

    6. Estudio Comparativo de la Evolucin de los Computadores

    7. Futuro de los Ordenadores

    ndice

  • 7/30/2019 Sistema Sin Format i Cos

    8/140

    Informtica: trata de la adquisicin, representacin, tratamiento y transmisin de lainformacin.(Segn la Real Academia Espaola de la Lengua) Es el conjunto de conocimientos

    cientficos y tcnicos para hacer posible el tratamiento automtico de lainformacin por medio de computadoras electrnicas

    Definiciones

    Computadora u Ordenador: Es una mquina electrnica capaz de aceptar unosdatos de entrada, efectuar con ellos una operaciones aritmticas y lgicas, y

    proporcionar la informacin resultante a travs de un medio de salida; todo ello sinintervencin de un operador humano y bajo el control de un programa deinstrucciones previamente almacenado en la propia computadora

    Calculadora: (acepcin actual) Es una mquina capaz de efectuar operacionesaritmticas bajo el control directo del usuario

    Datos: Son conjuntos de smbolos utilizados para expresar o representar un valor numrico,un hecho, un objeto o una idea, codificada en la forma adecuada para ser objeto detratamiento por medio de una computadora

    Informacin: Datos tratados y organizados, con significado desde el punto de vista delusuario

    DATOS + INTERPRETACION = INFORMACION UTIL

    Hardware vs. Software

    Hardware: Componentes fsicos, dispositivos de estado slido y similares, de unordenador

    Software: Programas que dirigen el funcionamiento de un ordenador

    Firmware: Ente intermedio entre el hardware y el software

  • 7/30/2019 Sistema Sin Format i Cos

    9/140

    Ordenadores Dedicados y de Propsito General

    Ordenador de Propsito General: Puede ejecutar un amplio rango detareas de proceso de informacin

    Ordenador Dedicado: Est diseado para una tarea especfica o para un rangoreducido de tareas

    Evolucin de los Sistemas de Calculo baco

    baco: Serie de alambres paralelos, sujetos por los extremos en un armaznrectangular, sobre los que se pueden desplazar una serie de bolas ofichas

    TIPOS DE BACOS

    Origen Nombre Caractersticas

    C hin a s uan p an C on st a d e 13 hi lera s d e c uen ta s, di vi di da s en do s p art es por una va ri ll a mo nta datransversalmente en el marco, en la parte superior cada hilera con 2 cuentas con un valor de 5unidades cada una, y en la parte de abajo 5 cuentas, cada una con el valor de una unidad

    Japn soroban Consta de 13 h il eras de cuen tas, divididas en dos pa rtes , en l a par te superior cada hi le ra con 1cuenta con valor de 5 unidades cada una, y en la parte de abajo 4 cuentas, cada una con el valorde una unidad

    R om a ? S e u ti li za p ied ra ca li za o m r mo l qu e s e d es li za ba n s ob re ra nu ra s d e su pe rfi ci e p la na , l as

    pequeas piedras se les denomincon el nombre de calculi.

    Rusia stchoty ?

  • 7/30/2019 Sistema Sin Format i Cos

    10/140

    Evolucin Calculadoras Mecnicas 1

    La Calculadora de SckickardEn 1623 Wilhelm Sckickard construye la

    primera mquina de calcular

    La Pascalina1.642 Blaise Pascal. Conjunto de discosdentados, cada uno de los cuales tiene 10divisiones, que representaban un dgito. Escapaz de realizar sumas y restas

    La Calculadora Universal1694 Gottfried W. Leibniz. Perfecciona lamquina de Pascal aadindole la

    multiplicacin y divisin.

    La Lgica MatemticaGeorge Boole (1815-1864), es el fundadorde la teora de la lgica matemtica.

    Evolucin Calculadoras Mecnicas 2El Padre de la Computadora

    Se considera a Charles Babbage (1791-1871), como el padre de los sistemasactuales de computacin. A CharlesBabbage se le atribuye el desarrollo de dosmquinas de clculo:

    La Mquina Diferencial: (1821) capaz decalcular polinomios de sexto grado y tabularmecnicamente hasta veinte cifras y ochodecimales

    La Mquina Analtica: (1833) sistemamecnico precursor de la computadora delsiglo XX. Dispona de:Dispositivo de entrada/salida de datos (tarjetas

    perforadas)Unidad de memoriaDispositivo de clculo llamado "Mill" (UnidadAritmtica)

    Mecanismo de barras y palancas que accionaba elconjunto (Unidad de Control), conducido por unprograma codificado sobre tarjetas perforadas

  • 7/30/2019 Sistema Sin Format i Cos

    11/140

    Evolucin Calculadoras Mecnicas 3

    La Mquina de TabularEn 1890 Herman Hollerith (1860-1929),invent su mquina tabuladora que utilizabacorriente elctrica para detectar los agujerosque estaban perforados y as hizo registrarla informacin en tarjetas, y el tiempo totaldel proceso se redujo. Sistema deautomatizacin del censo.

    Evolucin Las Primeras Computadoras 1

    La ComputadoraElectromecnica

    Z-1 (1935)Konrad Zuse en Berln desarroll su computadora Z-1

    Mark I Computer (ASCC) Automatic

    Sequence Controller Calculator (1944)Desde 1937 hasta 1944, IBM patrocin el proyecto delDr. Howard H. Aiken, profesor de la universidad deHarvard. En 1944 finaliz su objetivo con el nombre deMark I.

  • 7/30/2019 Sistema Sin Format i Cos

    12/140

    Evolucin Primer Bug

    Evolucin Las Primeras Computadoras 2

    La Computadora Electrnica

    ABC (Atanasoff Berry Computer)(1936/37)

    John Vicent Atanasoff y Clifford Berry. Principios de lasprimeras computadoras.

    ENIAC (Electronic Numerical Integratorand Computer) (1946)Construido en la universidad de Pennsylvania, por JohnW. Mauchly y John Presper Eckert

  • 7/30/2019 Sistema Sin Format i Cos

    13/140

    Evolucin Las Primeras Computadoras 3Calculadoras de Von Neuman

    John Von Neumann (1903-1957)

    1.946 "First Draft of a Report on to EdvacPrincipios ordenadores del tipo Von Neumann:Concepto de numeracin codificadaAlmacenamiento del programa en memoriaPerfeccionamiento de la ruptura de secuencia

    EDSAC (1.949)M. Wikes, de la Universidad de Cambridge

    UNIVAC (1.951)Eckert y Mauchly, primera computadora adquirida confines lucrativos.

    Babbage vs. Von Newman

    Entrada Salida

    Memoria

    C.P.U.

    U.A.Datos

    Programa

    Resultados

    Modelo deComputadorasegn

    Babage

    Modelo deComputadorasegnVon Newman

    Entrada Salida

    Memoria

    C.P.U.

    U.A.

    Datos

    Programa

    Resultados

  • 7/30/2019 Sistema Sin Format i Cos

    14/140

    Generaciones de Ordenadores 11 Generacin (1940-52)

    9 Tecnologa empleada: Vlvulas de vaco9 Uso: Cientfico y militar.9 Programacin: Modificando directamente los valores de los circuitos de la mquina. No

    existan los lenguajes de programacin, ni siquiera el ensamblador.9 Ordenadores caros, debido a la corta vida de la vlvulas de vaco y al gran calentamiento,

    as como al gran consumo de energa elctrica.9 Ordenadores lentos.9 Capacidad de almacenamiento muy pequea.9 Incapacidad de ejecutar ms de una tarea a la vez.

    Algunas de las realizaciones son: UNIVAC | EDSAC | EDVAC | ORDAC | ILLIAC |MANIAC | JHONIAK | WEIZAK

    Generaciones de Ordenadores 22 Generacin (1952-64)

    9 Tecnologa empleada: Transistor9 Dispona ya de una programacin previa, de un Sistema Operativo, capaz de interpretar

    instrucciones escritas en lenguajes de programacin como COBOL o FORTRAN.9 Comienza el desarrollo de perifricos de E/S (impresoras) y los Lenguajes de alto nivel

    (y el ensamblador).9 El modo de trabajo era generalmente el sistema por lotes.9 Aumento de la velocidad en el clculo

    9 Reduccin de tamao9 Reduccin del consumo a energa y potencia disipada9 Tiempo de vida media del transistor superior a la vlvula9 Abaratamiento

    Algunas de las realizaciones son: Sperry Rand 1207 | IBM 700 | IBM 1400 | 1700

  • 7/30/2019 Sistema Sin Format i Cos

    15/140

    Generaciones de Ordenadores 33 Generacin (1964-75)

    9 Tecnologa empleada: Circuito integrado (lmina de silicio embutida en plstico). Se

    utilizan materiales semiconductores en lugar de los ncleos de ferrita en la construccinde memorias.9 Se mejoran los lenguajes de programacin y empezaron a aparecer programas

    comerciales, con lo que un usuario no tena que programar sus aplicaciones.9 Capacidad de multiprogramacin, con lo cual los ordenadores son capaces de ejecutar

    varias tareas al mismo tiempo.9 Aumento en la velocidad de clculo9 Tamao disminuye

    Algunas de las realizaciones son: IBM System/360 | GE 600 | PDP-11

    Generaciones de Ordenadores 44 Generacin (1975-?)

    9 Tecnologa empleada: Circuitos de alta escala de integracin. Microprocesadores.9 Es el producto de una serie de avances tanto en el hardware, y su tecnologa de

    fabricacin, como en el software y sus posibilidades de aplicacin:o Nuevas tecnologas de fabricacin de semiconductores que conducen a velocidades de

    transmisin cada vez mayores y mayor capacidad de almacenamiento.o Aparicin de paquetes software, que obedecen a nuevas concepciones y situaciones

    especficas: bases de datos, diseo asistido, tratamiento de texto, ...o Nuevas memorias de al almacenamiento: tecnologas Winchester, y burbujas magnticao Aparicin de los ordenadores personaleso Ms lenguajes de alto nivel y herramientas informticas.o Desarrollo de perifricos inteligentes: descargan de trabajo a la CPU.o Hacia mediados de los 80, comienza el desarrollo de redes de computadoras personales que

    corren sistemas operativos en red y sistemas operativos distribuidos

  • 7/30/2019 Sistema Sin Format i Cos

    16/140

    Generaciones de Ordenadores 55 Generacin (?)

    9 Arquitectura diferente a la propuesta por Von Neumann9

    Ordenadores inferentes9 Ordenadores de transputers9 Ordenador ptico9 Mquinas neuronales9 Sistemas informticos distribuidos

    El Ordenador Personal9 Aos 70, primer microprocesador, el INTEL 4004, posibilidad de construccin de un

    ordenador utilizable por un solo usuario9 1977, S. Wozniaky S. Jobs, fundaron una empresa llamadaApple9 1.981, IBMPC(Personal Computer)9 Evolucin tanto en el microprocesador utilizado (8088, 8086, 80286, 80386, 80486,

    Pentium) y en el sistema operativo (UNIX para PC, el OS/2 de IBM y el Windows deMicrosoft)

    9 Mediados de los 80, comienza el desarrollo de redes de computadoras personales

  • 7/30/2019 Sistema Sin Format i Cos

    17/140

    Estudio Comparativo de la Evolucin de losComputadores

    Tiempo

    Potencia

    Tamao

    Precio

  • 7/30/2019 Sistema Sin Format i Cos

    18/140

  • 7/30/2019 Sistema Sin Format i Cos

    19/140

    Sistemas Informticos

    Fede Prez

    Arquitectura y Componentes delPC

    TEMA Arquitectura y Componentes del PC

    1. Componentes Bsicos

    1.1 Funcionalidad

    1.2 Emplazamiento

    1.3 Caractersticas ms Importantes2. Evolucin

    4. - Conclusiones

    ndice

  • 7/30/2019 Sistema Sin Format i Cos

    20/140

    El PC - Disposicin

    Chasis en disposiciChasis en disposicin de Torren de Torre

    MinitorreMinitorre SobremesaSobremesa

    Estructura Interna de un Microcomputador

  • 7/30/2019 Sistema Sin Format i Cos

    21/140

    La Placa Base (I)

    Elemento principal al quese conectan los restantescomponentes y perifricos.

    Formatos

    9 Baby AT

    8 Conector grueso del teclado.

    8 Dificultad al instalar tarjetas deexpansin largas.

    8 Mantenimiento farragoso.

    Esquema del formato Baby AT.Esquema del formato Baby AT.

    La Placa Base (II)

    9 ATX

    8 Mejora la flexibilidad,integracin y funcionalidad.

    8 Reorganizacin de ladistribucin de componentes.

    8 Disminucin de la longitud delos cables, mejora de laventilacin.

    8 Conectores PS/2

    8 USB

    Formato ATX.Formato ATX.

  • 7/30/2019 Sistema Sin Format i Cos

    22/140

    Componentes de la Placa Base

    Componentes de la Placa Base

  • 7/30/2019 Sistema Sin Format i Cos

    23/140

    La Fuente de Alimentacin

    Niveles de c.c.9 +/-12 V Amarillo.

    9 +/-5 V Rojo.

    9 GNDNegro.

    Convierte la energa alternade la red a dos niveles decontinua.

    La Fuente de Alimentacin - Conectores

    Conectores ATXConectores ATX

    Conectores ATX en Placa BaseConectores ATX en Placa Base

    Conectores P6Conectores P6

    Conectores en YConectores en Y

  • 7/30/2019 Sistema Sin Format i Cos

    24/140

    El Chipset

    Determina el rendimiento y caractersticas de la placa. Controla su modo de operacin e integra todas sus funciones.

    9 Velocidad del bus

    9 Controlador de IRQ

    9 Tipos de memoria

    9 Tipo de CPU

    9 N de CPUs

    9 Caractersticas PnP

    9 Puente PCI-ISA

    9 Controlador de DMA

    9 Tipo de cach L2

    9 ...

    La Memoria

    Memoria principal:

    9 Ms y mayores programas almismo tiempo.

    9

    SIMM (5V)-DIMM (3.3-5V), Nde contactos30, 72, 168.

    9 Bus de datos { bus dememoria. Organizacin enbancos.

    Memoria cach:

    9 Acelera los procesos de laCPU, almacn ltimos datostransferidos.

    9 Emplazamientosobre placa

    o mdulos COAST. MMdulo DIMM.dulo DIMM.

  • 7/30/2019 Sistema Sin Format i Cos

    25/140

    Papel de la memoria en un PC

    Al referirnos a memoriageneralmente nos referimos a lamemoria RAM.

    Un ordenador utiliza la memoria RAMpara guardar las instrucciones y losdatos temporales que se necesitanpara ejecutar las tareas. Esto permitea la CPU del ordenador (unidad centralde proceso), acceder rpidamente alas instrucciones de acceso y a losdatos almacenados en la memoria .

    Adems de la RAM en un PC

    encontramos otros muchos tips dememoria9 SDRAM (RAM)

    9 ROM FLASH (BIOS)

    9 SRAM (cache)

    9 etc

    TIPOS MEMORIA

    Voltiles No voltiles

    FIFO ROM

    PROM Y EPROM

    EEPROMFLASH

    MRAM

    RAM

    DINAMICA(DRAM)

    ESTATICA

    SRAMVIDEO SISTEMA

    FPM

    EDO

    SDRAM

    DDR

    RDRAM (RAMBUS)

    VRAM

    WRAM

    SGRAM

    SDRAM

    DDR-RAM

    Clasificacin de la Memoria por Tipos

  • 7/30/2019 Sistema Sin Format i Cos

    26/140

    BIOS Pila

    MemoriaROM, EPROM,FLASH que contiene lasrutinas necesarias paraarrancar el PC.

    Se apoya en una memoriaCMOS, alimentada por unabatera.

    Contiene el programa deconfiguracin del PC.

    BIOSBIOS--Pila.Pila.

    BIOS Pantalla de Configuracin

  • 7/30/2019 Sistema Sin Format i Cos

    27/140

    Pentium 4Pentium 4

    El Procesador (I)

    Es el chip ms importantede la placa base.

    Est formado por:

    9 ALU -Unidad AritmticoLgica.

    9 UC -Unidad Central.

    9 Memoria Central (R.A.M)

    8 Cach interna (L1).

    8 Cach externa (L2).

    El Procesador (II)

    Principales Caractersticas:

    9 Velocidad.

    9 Tipo de zcalo.

    9 Memoria Cach.

    9 Instrucciones Especiales.

    9 Bus de comunicacin.

    9 Tecnologa de fabricacin.

  • 7/30/2019 Sistema Sin Format i Cos

    28/140

    Buses de Expansin (I)

    Al conectar una tarjeta a un bus de expansin, stafunciona como si estuviera directamente conectada alprocesador. Caractersticas de las principales:

    PCI9 Independiente de la CPU

    9 Controlador de bus

    9 Plug & Play

    9 Color crema

    SCSI9 E/S Inteligente

    9 Necesita de otros buses

    9 Direccionamiento lgico

    9 Hasta 15 dispositivos

    AGP9 Apartado grfico

    9 Color marrn

    ISA9 1 en aparecer

    9 Color negro

    Buses de Expansin (II)

    Vesa Local BusVesa Local Bus

    PCI BusPCI Bus

  • 7/30/2019 Sistema Sin Format i Cos

    29/140

    Perifricos Internos

    Dispositivos que se conectan a la placa base pormedio de los buses o ranuras de expansin.

    Los ms comunes son:

    9 Unidades de almacenamiento.

    8 Disquetera

    8 Disco duro

    8 CD_ROM

    8 DVD

    8 Instalacin de varios dispositivos

    9 Tarjetas de vdeo

    9 Tarjetas de sonido

    El Disco Duro (I)

    Sistema de almacenamiento, en el se guardan losarchivos de los programas (SO,Word..)

  • 7/30/2019 Sistema Sin Format i Cos

    30/140

    El Disco Duro (II)

    Instalacin de Varios Disp. de Almacenamiento

    Las controladoras EIDE,disponen de dos canales IDEindependientes, pudiendoinstalar hasta 4 dispositivos, 2por canal.

    9 1->primario master.

    9 2->primario esclavo.

    9 3->secundario master.

    9 4->secundario esclavo.

    8 El primario master arranca elcomputador.

    Una controladora SCSI(lasms rpidas) se puedenconectar hasta 7 dispositivos

    o 15 si es WIDE SCSI.

  • 7/30/2019 Sistema Sin Format i Cos

    31/140

    Disquetera y CD-ROM

    DISQUETERA9 Slo han existido dos formatos

    considerados como estndar, elde 5 y el de 3 .

    CD-ROM - DVD

    9 Pueden almacenar graninformacin, aunque menor queun disco duro, pero la velocidadde recuperacin de informacin

    y la capacidad es menor.9 Hay lectores, grabadores y

    regrabadores

    Tarjetas de Vdeo y Sonido

    TARJETAS DE VDEO

    9 Los diferentes programas, envansus salidas a travs de lasllamadas tarjetas de vdeo a lapantalla.

    9 Hoy en da, son grficas eincluyen aceleracin porhardware.

    TARJETAS DE SONIDO

    9 Permiten escuchar msica ysonidos al ejecutar lasaplicaciones.

    9 Es conveniente que admitan lamodalidad full duplex, paraprogramas de videoconferencias.

    9 Se suele conectar al CD-ROMpara escuchar msica.

  • 7/30/2019 Sistema Sin Format i Cos

    32/140

    Puertos (I)

    Sirven para conectar al PC los dispositivos externosde E/S.

    Puerto serie (RS232C) COM 1,COM 2, etc.

    Puerto paralelo (CENTRONICS): LPT1 o PRN.

    Puerto USB

    Puertos (II)

  • 7/30/2019 Sistema Sin Format i Cos

    33/140

    Perifricos Externos

    Dispositivos que se conectan a la placa base pormedio de los puertos.

    Los ms comunes son:

    9 Teclados

    9 Ratones

    9 Monitores

    9 Impresoras

    9Scaners

    9 Modems

    Teclados y Ratones

  • 7/30/2019 Sistema Sin Format i Cos

    34/140

    Monitores

    CRT LCD (TFT)

    Impresoras

    Matriciales

    Agujas

    Inyeccin de Tinta

    Laser

  • 7/30/2019 Sistema Sin Format i Cos

    35/140

    Escaners

    Conclusiones

    Modularidad y caractersticas Plug & Play.

    La placa base contiene los elementos mnimosnecesarios.

    Las prestaciones de los computadores aumentan a unritmo vertiginoso.

    Las posibilidades de configuracin y ampliacionesposteriores son prcticamente ilimitadas.

    Por todo ello son computadores a la carta, creados algusto y necesidades del usuario.

  • 7/30/2019 Sistema Sin Format i Cos

    36/140

  • 7/30/2019 Sistema Sin Format i Cos

    37/140

    Sistemas Informticos

    Estructura Generalde un

    Sistema de Computacin

    Fede Prez

    TEMA 2 Estructura General de un Sistemas de Computacin

    1. - Introduccin

    2. - Seccin Primaria de Almacenamiento. Memoria Principal

    2.1 Estructura General

    2.2 Organizacin Interna de la Memoria

    2.3 Direccionamiento

    2.4 Operaciones de Lectura/Escritura en Memoria

    2.5 Propiedades Fundamentales de las Memorias

    2.6 Parmetros de Tiempo en Memoria

    2.7 Tipos de Memoria

    2.8 Jerarquas de Almacenamiento

    3. - Unidad de Control de Procesos - C.P.U.

    3.1 Unidad de Control

    3.2 Unidad Aritmtico-Lgica - A.L.U.

    4. - Buses

    4. - Descripcin General

    5. Fases de Ejecucin de una Instruccin

    5.1 Fase FETCH - Bsqueda o Lectura de una Instruccin

    5.2 Fase EXECUTE - Ejecucin

    ndice

  • 7/30/2019 Sistema Sin Format i Cos

    38/140

    Organizacin Bsica de un SC

    Estructura General de un SC Memoria

  • 7/30/2019 Sistema Sin Format i Cos

    39/140

    Memoria Principal Organizacin Interna

    Memoria Principal Direccionamiento

    Direccionamiento cableadoen dos dimensiones Direccionamiento cableadoen tres dimensiones

  • 7/30/2019 Sistema Sin Format i Cos

    40/140

    Memoria Principal Operaciones de Lectura y Escritura

    Lectura

    1- Direccin de la palabra solicitadaes recogida en registro dedirecciones

    2- Seal de control la operacindeseada (lectura)

    3- La memoria decodifica ladireccin, activa la celdacorrespondiente y deposita eldato en el registro de palabra; deah la informacin pasa al bus dedatos

    Escritura

    1- Direccin de la palabra solicitadaes recogida en registro dedirecciones

    2- En el bus de datos la informacina escribir en memoria, quedandoalmacenado en el registro dedatos de la memoria

    3- Seal de control la operacindeseada (escritura)

    4- El dato del registro de datos dela M.P. se almacena en la clulade memoria activada

    Memoria Principal Parmetros

    Propiedades Fundamentales

    1- Coste por Bit2- Tiempo de Acceso

    3- Capacidad de Almacenamiento

    Parmetros de Tiempo

    Ciclo de Lectura: Tiempo que transcurredesde que a la memoria llega la seal de

    lectura, hasta que aparece el dato en elbus de datos

    Ciclo de Escritura: Tiempo que transcurredesde que a la memoria llega la seal deescritura (se accede a la direccin)

    Tiempo de Acceso: Espacio mnimo detiempo requerido entre accesos sucesivos(lectura/escritura) a una memoria

  • 7/30/2019 Sistema Sin Format i Cos

    41/140

    Tipos de Memoria

    SRAM DRAM ROM/PROM EPROM/EEPROM FLASHR/W R/W R/W R R R/W

    Direccionamientoaleatorio

    Si Si Si Si Si

    Volatibilidad Si Si No No NoCapacidad Alta Muy Alta Baja Baja Muy Alta

    Tiempo de Acceso Alto Muy Alto Bajo Bajo Medio

    De Lectura y Escritura - RAM (Random Access Memory / Read-Write Memory)9Dinmicas (DRAM)9Estticas (SRAM)

    De Solo Lectura - ROM (Read Only Memory)9ROM (Read Only Memory)9PROM (Programmable Read Only Memory)9EPROM (Erasible Programmable Read Only Memory)9EEPROM (Electrically Erasible Programmable Read Only Memory)

    Jerarqua de Almacenamiento

    Registro

    Cach

    Memoria Principal

    Disco Electrnico

    Disco Magntico

    Disco Optico

    Cinta Magntica

    Almacenamiento

    deaccesodirecto

    Almacenamiento

    secundario

    ejepistasector

    cilindro

    accionador

    brazoplato

    Cabeza delectura yescritura

    Tasa de Transferencia: es la rapidez con quefluyen los datos de la unidad de disco a laCPU

    Tiempo de Posicionamiento o Tiempo de Acceso

    Aleatorio: es el tiempo que tarda en mover el

    brazo del disco al cilindro deseado

    Latencia Rotacional: es el tiempo que el sectordeseado tarda en girar hasta quedar debajo dela cabeza de disco

    Controladores de Disco: Se encargan de Latransferencia de datos por los buses

  • 7/30/2019 Sistema Sin Format i Cos

    42/140

    Unidad de Control Acepciones y Funciones

    Acepciones

    1- Microprocesador (P): la UnidadAritmtico-Lgica (ALU) y la Unidad Central(UC)

    2- Procesador Central: el P (UC y ALU)ms la Memoria Principal (MP)

    3- Ordenador personal (PC): la PlacaBase (P+MP+...), Unidad de Alimentacin,Dispositivos de Almacenamiento Internos(discos, cintas, ...), ...

    Funciones

    1- selecciona e interpreta lasinstrucciones del programa

    2- controla el flujo de datos desde yhacia la memoria

    3- supervisa el resto de componentes dela CPU

    Unidad de Control Estructura General

  • 7/30/2019 Sistema Sin Format i Cos

    43/140

    Unidad de Control Registro de Instrucciones

    Instruccin =Cdigo

    deOperacin

    +Modo

    deDireccionamiento

    +Campo

    deDirecciones

    C.O. M.D. C.D.

    Registro de Instrucciones

    Modos de Direccionamiento

    1- Directo: Absoluto Relativo

    2- Indirecto

    3- Inmediato

    Unidad Aritmtico-Lgica ALU

    Flag de CeroFlag de Acarreo

    Flag de Desbordamiento (Overflow)Flag de Paridad

    Flags de Estado

  • 7/30/2019 Sistema Sin Format i Cos

    44/140

    Buses

    Tipos de Buses

    1- Bus de Datos

    2- Bus de Direcciones

    3- Bus de Control Lneas de Control Lneas de Estado

    Descripcin General

  • 7/30/2019 Sistema Sin Format i Cos

    45/140

    Fases de Ejecucin de una Instruccin

    Fase Fetch- Lectura de una Instruccin

    1- Transferir direccin desdeContador de Programa

    2- Activacin de celda y paso aregistro de palabra

    3- Instruccin hasta registro de

    instrucciones

    Fase Execute- Lectura de operandos y

    decodificacin de la instruccin- Ejecucin de la operacin- Almacenamiento de resultados

    1.1- Impulsos al secuenciador1.2- Acciones del secuenciador1.3- Acceso a operandos2- Ejecucin de la instruccin3- Almacenamiento de resultados

  • 7/30/2019 Sistema Sin Format i Cos

    46/140

  • 7/30/2019 Sistema Sin Format i Cos

    47/140

    Sistemas Informticos

    Lenguajes de Programacin

    Fede Prez

    TEMA - Lenguajes de Programacin

    1. - Programacin

    2. - Objetivos de la Programacin

    3. Tipos de Lenguajes

    3.1 Lenguaje Mquina3.2 Lenguajes Ensambladores

    3.3 Lenguajes del Alto y Bajo Nivel

    4. - Procesadores de Lenguajes

    4.1 Compiladores

    4.2 Intrpretes

    5. - Herramientas de Programacin

    6. Desarrollo de Programa que Suma Dos Nmeros

    ndice

  • 7/30/2019 Sistema Sin Format i Cos

    48/140

    Programacin

    ProblemaEnunciado

    del Problema( algortmico )

    AlgoritmoPrograma

    ( en lenguaje deProgramacin )

    Anlisis Diseo Codificacin

    Objetivos1- Correccin2- Claridad3- Eficiencia

    Definicin

    Labor de desarrollar programas decomputador

    Ciclo de Vida del Software: Cascada de Behm

    Anlisis yEspecificacin

    Diseo

    Codificacin

    Validacin ypruebas

    Operacin yMantenimiento

    Documentacin

  • 7/30/2019 Sistema Sin Format i Cos

    49/140

    Lenguajes de Programacin

    Lenguaje Mquina

    Mquina Base2

    Lenguaje Mquina 2

    1111110001110000------------------------------------------------------------------------------------------

    ---------------------------------------------------------00000011110001110--------------------------------

    Programa Objeto 2Datos 1 Resultados 1

    Lenguaje Ensamblador

    Lenguajes de Alto Nivel

    1- Independientes de la arquitectura del computador2- Poseen instrucciones complejas3- Notacin cercana al lenguaje cientfico y natural

    Mquina Base1

    Lenguaje Mquina 1

    0101110111011001------------------------------------------------------------------------------------------

    ---------------------------------------------------------0111010101110001---------------------------------

    Programa Objeto 1Datos 1 Resultados 1

    Mquina Base

    Lenguaje Mquina

    0101110111011001------------------------------------------------------------------------------------------

    ---------------------------------------------------------0111010101110001---------------------------------

    Ensamblador

    MOV AX, --

    PUSH AX-------------------------ADD SP, 2-------------------------PUSH CX-------------------------END

    01011100---------------------------------------------------------------01110101

    Programa Objeto- Ejecutable -Programa Fuente

    Mquina Base

    Lenguaje Mquina

    01011100---------------------------------------------------------

    ---------------------------------------------------------01110101

    Prg. Objeto EjecutableDatos Resultados

    Lenguaje Mquina

    Mquina Base1

    Lenguaje Mquina 1Lenguaje Mquina 1

    0101110111011001------------------------------------------------------------------------------------------

    ---------------------------------------------------------0111010101110001---------------------------------

    Programa Ejecutable 1Datos 1 Resultados 1

    Mquina Base

    2

    Lenguaje Mquina 2Lenguaje Mquina 2

    1111110001110000------------------------------------------------------------------------------------------

    ---------------------------------------------------------00000011110001110--------------------------------

    Programa Ejecutable 2Datos 1 Resultados 1

  • 7/30/2019 Sistema Sin Format i Cos

    50/140

    Lenguaje Ensamblador

    Mquina Base

    Lenguaje MquinaLenguaje Mquina

    01011100---------------------------------------------------------

    ---------------------------------------------------------

    01110101

    Programa EjecutableDatos Resultados

    Mquina Base

    Lenguaje MquinaLenguaje Mquina

    0101110111011001------------------------------------------------------------------------------------------

    ---------------------------------------------------------0111010101110001---------------------------------

    Ensamblador

    MOV AX, --PUSH AX

    -------------------------ADD SP, 2-------------------------PUSH CX-------------------------END

    01011100

    ---------------------------------------------------------------01110101

    ProgramaEjecutablePrograma Fuente

    a) Obtencin delprogramaejecutable

    b) Ejecucin del programaejecutable

    Procesadores de Lenguajes

    Mquina Base 1

    Lenguaje Mquina 1

    0101110111011001------------------------------------------------------------------------------------------

    ---------------------------------------------------------0111010101110001---------------------------------

    Traductor 1

    /* PROGRA --#include ---

    void main ( ){

    int Cont, Edad -------------------------printf (El resul -

    }

    Programa FuentePROGRAMA.C

    Mquina Base 2

    Lenguaje Mquina 2

    0111101111011101------------------------------------------------------------------------------------------

    ---------------------------------------------------------1111010101010111---------------------------------

    Traductor 2

    01111111----------------------------------------------------------------------------------------------------------------------------------------------------------------11011011

    Programa Ejecutable( en la mquina 2 )

    01111010----------------------------------------------------------------------------------------------------------------------------------------------------------------11001000

    Programa Ejecutable( en la mquina 1 )

    NOTA: Un compilador (traductor) cruzado escapaz de Generar cdigo para unamquina diferente de aquella en laque se eje cuta

  • 7/30/2019 Sistema Sin Format i Cos

    51/140

    Intrpretes

    Programa FuentePROGRAMA.BAS

    REM PROGRAMA.BAS

    INPUT Introduce el valor : , ValorINPUT la cantidad : , CantTotal = Valor*CantPRINT El precio total es: , Total

    Datos Resultados

    Mquina Base

    Lenguaje MquinaLenguaje Mquina

    0101110111011001------------------------------------------------------------------------------------------

    ---------------------------------------------------------0111010101110001---------------------------------

    Intrprete

    Lenguaje FuenteLenguaje Fuente

    Compiladores

    Compilado

    Enlazado

    Ejecucin

    Mquina Base

    Lenguaje Mquina

    0101110111011001------------------------------------------------------------------------------------------

    ---------------------------------------------------------0111010101110001---------------------------------

    Compilador

    /* PROGRA --#include --

    void main ( ){

    int Cont, Edad -------------------------printf (El resul -

    }

    01011100---------------------------------------------------------------01110101

    Programa Objeto- No ejecutable -PROGRAMA.OBJ

    Programa FuentePROGRAMA.C

    RUTINAS.LIB

    PROGRAMA.OBJ

    Mquina Base

    Lenguaje Mquina

    0101110111011001------------------------------------------------------------------------------------------

    ---------------------------------------------------------0111010101110001---------------------------------

    Enlazador (Linker)

    01111010----------------------------------------------------------------------------------------------------------------------------------------------------------------11001000

    Programa Objeto- Ejecutable -

    PROGRAMA.EXE

    01011100---------------------------------------------------------------01110101

    01111000---------------------------------------------------------------11010001

    01111010

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------11001000

    Mquina Base

    Lenguaje Mquina

    Programa Objeto- Ejecutable -

    PROGRAMA.EXE

    ResultadosDatos

  • 7/30/2019 Sistema Sin Format i Cos

    52/140

    Compiladores

    Caso General

    /* PROGRA#include

    void main ( ){

    int A --printf (El res-

    }

    Programa FuentePROG_1.C

    .../...

    Mquina Base

    0101110111011001--------------------------------------------------

    -------------------------------------0111010101110001

    Compilador

    Lenguaje Mquina

    MquinaBase

    0101110111011001--------------------------------------------------

    -------------------------------------0111010101110001

    Enlazador (Linker)

    Lenguaje Mquina

    MquinaBase

    0101110111011001--------------------------------------------------

    -------------------------------------0111010101110001

    Compilador

    Lenguaje Mquina

    /* PROGRA

    void InterCamb (int{

    int Temp -----------------------

    return -----------}

    Programa FuentePROG_N.C 00010011

    ---------------------------------------------------------------01100001

    Programa ObjetoPROG_1.OBJ

    01011100---------------------------------------------------------------01110101

    Programa ObjetoPROG_2.OBJ

    11110000---------------------------------------------------------------01100111

    00010000---------------------------------------------------------------01011111

    Programa ObjetoPROG_N.OBJ

    Programa ObjetoRUTINAS.LIB

    Programa Objeto- Ejecutable -

    PROGRAMA.EXE

    01111010----------------------------------------------------------------------------------------------------------------------------------------------------------------11001000

    Libreras: Bibliotecas Estticas

    RUTINAS.LIB

    PROGR_1.OBJ

    Mquina Base

    Lenguaje MquinaLenguaje Mquina

    0101110111011001------------------------------------------------------------------------------------------

    ---------------------------------------------------------0111010101110001---------------------------------

    Enlazador (Linker)

    01011100------------------------------------------------------------01110101--------------------------------------------------------------------------------11001000

    Programa EjecutablePROGR_1.EXE

    01011100---------------------------------------------------------------01110101

    01111000---------------------

    ------------------------------------------11010001

    RUTINAS.LIB

    PROGR_2.OBJ

    Mquina Base

    Lenguaje MquinaLenguaje Mquina

    0101110111011001------------------------------------------------------------------------------------------

    ---------------------------------------------------------0111010101110001---------------------------------

    Enlazador (Linker)

    11100100--------------------01110000--------------------------------------------------------------------------------11001000

    Programa EjecutablePROGR_2.EXE

    11100100---------------------01110000

    01111000------------------------------------------

    ---------------------11010001

    Cdigo de las rutinas(copiado de la Biblioteca)

  • 7/30/2019 Sistema Sin Format i Cos

    53/140

    Libreras: Bibliotecas Estticas

    PROGR_1.EXE

    01111010------------------------------------------------------------01110101--------------------------------------------------------------------------------11001000

    Mquina Base

    Lenguaje MquinaLenguaje Mquina

    Cdigode las rutinas

    PROGR_1.EXE

    01111010------------------------------------------------------------01110101--------------------------------------------------------------------------------11001000

    11100100--------------------01110000--------------------------------------------------------------------------------11001000

    Mquina Base

    Lenguaje MquinaLenguaje Mquina

    PROGR_2.EXE

    Cdigode las rutinas

    Cdigode las rutinas

    Ejecucin utilizando bibliotecas estticas

    Libreras: Bibliotecas Dinmicas

    RUTINAS.DLL

    PROGR_1.OBJ

    Mquina Base

    Lenguaje MquinaLenguaje Mquina

    0101110111011001------------------------------------------------------------------------------------------

    ---------------------------------------------------------0111010101110001---------------------------------

    Enlazador (Linker)

    01011100---------------------------------------------------------------------------01110101-------------

    Uso de Librera

    Rutinas.DLL

    Programa EjecutablePROGR_1.EXE

    01011100---------------------------------------------------------------01110101

    01111000---------------------------------------------------------------11010001

    RUTINAS.DLL

    PROGR_2.OBJ

    Mquina Base

    Lenguaje MquinaLenguaje Mquina

    0101110111011001------------------------------------------------------------------------------------------

    ---------------------------------------------------------0111010101110001---------------------------------

    Enlazador (Linker)

    11100100--------------------01110000 -------

    Uso de Librera

    Rutinas.DLL

    Programa EjecutablePROGR_2.EXE

    11100100---------------------01110000

    01111000---------------------------------------------------------------11010001

    RUTINAS.DLL

    01111000---------------------------------------------------------------11010001

    Los programaejecutablesnecesitan el

    archivoRUTINAS.DLLpara poderse

    ejecutar

  • 7/30/2019 Sistema Sin Format i Cos

    54/140

    Libreras: Bibliotecas Dinmicas

    Ejecucin Utilizando Bibliotecas Dinmicas

    PROGR_1.EXE

    RUTINAS.DLL

    01011100---------------------------------------------------------------------------01110101-------------

    Uso de Librera

    Rutinas.DLL

    01111000---------------------------------------------------------------11010001

    Mquina Base

    Lenguaje MquinaLenguaje Mquina

    PROGR_1.EXE01011100---------------------------------------------------------------------------

    01110101-------------

    Uso de Librera

    Rutinas.DLL

    11100100--------------------01110000 -------

    Uso de Librera

    Rutinas.DLL

    01111000---------------------------------------------------------------11010001

    RUTINAS.DLL

    Mquina Base

    Lenguaje MquinaLenguaje Mquina

    PROGR_2.EXE

    Herramientas de Programacin

    Entornos de Programacin

    Depuradores

    Mquina Base

    Lenguaje Mquina

    0101110111011001------------------------------------------------------------------------------------------

    ---------------------------------------------------------0111010101110001---------------------------------

    Depurador

    01111010----------------------------------------------------------------------------------------------------------------------------------------------------11001000

    Programa EjecutablePROGRAMA.EXE

    Lenguaje Mquina

    DatosResultados

    TRAZA DEL

    PROGRAMA

    0101110111011001------------------------------------------------------------------------------------------

    ---------------------------------------------------------0111010101110001---------------------------------

    Editor

    1101110111011111------------------------------------------------------------------------------------------

    ---------------------------------------------------------0000010101110001---------------------------------

    Compilador

    /* PROGRA#include---

    void main ( ){

    int A--printf (El res-

    }

    ProgramaFuente

    PROGRAMA.C

    ProgramaObjeto

    PROGRAMA.OBJ

    01011100------------------------------------------01110101

    /* PROGRA#include ---

    voidmain ( ){

    int A --printf (El res-

    }

    ProgramaFuente

    PROGRAMA.C

    0001100110010001------------------------------------------------------------------------------------------

    ---------------------------------------------------------1111011101100001---------------------------------

    Enlazador (Linker)

    ProgramaObjeto

    PROGRAMA.OBJ

    01011100------------------------------------------01110101 Programa

    EjecutablePROGRAMA.EXE

    01111010--------------------------------------------------------------------------------11001000

    0001110000011000------------------------------------------------------------------------------------------

    ---------------------------------------------------------0100000101000001---------------------------------

    Depurador

    ProgramaEjecutable

    PROGRAMA.EXEResultados

    TRAZA DEL

    PROGRAMADatos

    01111101---------------------00000100

    01111010--------------------------------------------------------------------------------11001000

    Programa ObjetoLibreria de rutinas

    RUTINAS.LIB

  • 7/30/2019 Sistema Sin Format i Cos

    55/140

    Suma de dos Nmeros 1

    BasicREMREM Programa en BASIC: SUMA_BAS.BASREM

    INPUT "Introduce un N entero: ", iEntero_1INPUT "Introduce otro entero: ", iEntero_2

    iSuma = iEntero_1 + iEntero_2

    PRINT "La suma es: ", iSuma

    DiseoSumar

    dos nmeros

    ObtenerSumando 1

    PedirNmero

    LeerNmero

    ObtenerSumando 2

    PedirNmero

    LeerNmero

    Calcularla suma

    Mostrar valorde la suma

    Suma de dos Nmeros 2

    Pascal(* Programa en PASCAL: SUMA_PAS.PAS *)

    PROGRAM suma_pas ;VAR

    iEntero_1, iEntero_2, iSuma : Integer ;

    BEGINWrite ('Introduce un N entero: ') ;ReadLn (iEntero_1 ) ;

    Write ('Introduce otro entero: ') ;ReadLn ( iEntero_2 ) ;

    iSuma := iEntero_1 + iEntero_2 ;

    WriteLn ('La suma es: ', iSuma)END.

    C/* Programa en C: SUMA_C.C */

    #include

    void main (void)

    {int iEntero_1, iEntero_2, iSuma ;

    printf ("Introduce un N entero: ") ;scanf ("%d", &iEntero_1) ;

    printf ("Introduce otro entero: ") ;scanf ("%d", &iEntero_2) ;

    iSuma = iEntero_1 + iEntero_2 ;

    printf ("La suma es: %d", iSuma) ;}

  • 7/30/2019 Sistema Sin Format i Cos

    56/140

    Suma de dos NmerosRelacin entre Lenguajes

    ;|*** /* Programa en C SUMA_C.C */; Line 1;|***;|*** #include ; Line 3;|***;|*** void main (void);|*** {; Line 6

    PUBLIC _main_main PROC NEAR

    *** 000000 55 push bp*** 000001 8b ec mov bp,sp*** 000003 b8 06 00 mov ax,6*** 000006 e8 00 00 call __aNchkstk

    ; iEntero_1 = -2; iEntero_2 = -4; iSuma = -6;|*** int iEntero_1, iEntero_2, iSuma ;;|***;|*** printf ("Introduce un N entero: ") ;; Line 9

    *** 000009 b8 00 00 mov ax,OFFSET DGROUP:$SG168*** 00000c 50 push ax*** 00000d e8 00 00 call _printf*** 000010 83 c4 02 add sp,2

    ;|*** scanf ("%d", &iEntero_1) ;; Line 10

    *** 000013 8d 46 fe lea ax,WORD PTR [bp-2] ; iEntero_1*** 000016 50 push ax*** 000017 b9 17 00 mov cx,OFFSET DGROUP:$SG169*** 00001a 51 push cx*** 00001b e8 00 00 call _scanf*** 00001e 83 c4 04 add sp,4

    ;|*** printf ("Introduce otro entero: ") ;; Line 11

    *** 000021 b8 1a 00 mov ax,OFFSET DGROUP:$SG170*** 000024 50 push ax*** 000025 e8 00 00 call _printf*** 000028 83 c4 02 add sp,2

    ;|*** scanf ("%d", &iEntero_2) ;; Line 12*** 00002b 8d 46 fc lea ax,WORD PTR [bp-4] ; iEntero_2*** 00002e 50 push ax*** 00002f b9 31 00 mov cx,OFFSET DGROUP:$SG171*** 000032 51 push cx*** 000033 e8 00 00 call _scanf*** 000036 83 c4 04 add sp,4

    ;|***;|*** iSuma = iEntero_1 + iEntero_2 ;;|***;|*** printf ("La suma es %d", iSuma) ;; Line 16

    *** 000039 8b 46 fc mov ax,WORD PTR [bp-4] ; iEntero_2*** 00003c 03 46 fe add ax,WORD PTR [bp-2] ; + iEntero_1

    *** 00003f 89 46 fa mov WORD PTR [bp-6],ax ; iSuma

    *** 000042 50 push ax*** 000043 b8 34 00 mov ax,OFFSET DGROUP:$SG172*** 000046 50 push ax*** 000047 e8 00 00 call _printf

    ;|*** }; Line 17

    *** 00004a 8b e5 mov sp,bp*** 00004c 5d pop bp*** 00004d c3 ret

    _main ENDP_TEXT ENDSEND;|***

    Ensamblador

    Lenguaje mquina (hexadecimal)

    Direccin de memoria (relativa)

    Equivalencia de cdigos

    En C: iSuma = iEntero_1 + iEntero_2En Pascal: iSuma := iEntero_1 + iEntero_2

  • 7/30/2019 Sistema Sin Format i Cos

    57/140

    Sistemas Informticos

    Programacin en C

    Fede Prez

    TEMA - Lenguaje de Programacin C

    1. - Introduccin

    2. - Conceptos Bsicos

    2.1Tipos de Datos Base

    2.2Funciones de Entrada/Salida

    2.3Expresiones y Operadores3. - Sentencias de Control

    3.1 - Sentencias Selectivas

    3.2 - Sentencias Repetitivas

    4. - Funciones

    5. Datos Estructurados

    5.1Arrays

    5.2Cadenas de Caracteres

    5.3Estructuras

    6. Ficheros

    ndice

  • 7/30/2019 Sistema Sin Format i Cos

    58/140

    Historia9 Nacimiento aos 70 laboratorios Bell Telephone junto con UNIX9 UNIX Ken Thompson y Dennis Ritchie9 Transferencia PDP-7 PDP-9, PDP-119 1970 (Ken Thompson) definicin del lenguaje B (proviene del BCPL)9 1972 (Dennis Ritchie) definicin del lenguaje C9 1973 (UNIX versin 5) 90% en C para PDP-119 Aos 80 ANSI C estndar ISO9 Mediados de los 80 C++ estndar ISO 1998

    Historia del Lenguaje C

    Caractersticas9 Lenguaje de propsito general9 Poco tipificado9 Cercano a la mquina9 Variado juego de operadores9 Reemplaza ventajosamente al ensamblador9 Recursividad y reentrabilidad9 Utilizacin natural de las funciones primitivas del sistema de explotacin

    Carencias9 Manejo de tablas y cadenas de caracteres9 Multiprogramacin, control de procesos, sincronizacin9 Entrada/Salida, ficheros

    Programoteca Librera estndar

    Solucin

    Caractersticas del Lenguaje C

  • 7/30/2019 Sistema Sin Format i Cos

    59/140

    9Compilador: software que traduce a lenguaje demquina el programa C contenido en uno o msficheros fuente

    9Preprocesador: software que acta siempre pordelante del compilador facilitando su tarea y la del

    programador

    9Librera Estndar: funciones agrupadas en unconjunto de libreras de cdigo objeto preprogramadasque se venden o se entregan junto con el compilador

    Componentes del Lenguaje

    Componentes del Lenguaje C

    Ventajas de la Utilizacin de Funciones

    1. Modularizacin2. Ahorro de memoria y tiempo de desarrollo3. Independencia de datos y ocultamiento de informacin

    Programa

    Conjunto de instrucciones que se ejecutan ordinariamente de modosecuencial

    Funcin

    Divisin un programa muy grande en una serie de mdulos mucho mspequeos y manejables. A estos mdulos se les ha slido denominar de

    distintas formas (subprogramas,subrutinas,procedimientos,funciones, etc.)segn los distintos lenguajes.

    Programa PrincipalFuncin concreta que juega el papel principal y que empieza a actuar

    Esta funcin en el lenguaje C ha de llevar por titulo o nombre el de "main"

    Estructura General de un Programa I

  • 7/30/2019 Sistema Sin Format i Cos

    60/140

    Funciones de Usuario - Definicin de funciones

    Programa Principal main()

    Declaraciones Globales- Prototipos de funciones- Variables globales

    Estructura General de un Programa II

    Directivas de Preprocesador#include#define

    #include

    main()

    {

    ...

    f1(...);

    ...

    }

    f1(...)

    {

    ...

    f2(...);

    ...

    }

    f2(...)

    {

    ...

    }

    ...

    stdio.h principal.c

    Ficheros Estndar Fichero Principal

    Ficheros Fuente en C Un Mdulo

  • 7/30/2019 Sistema Sin Format i Cos

    61/140

    #include

    main()

    {

    ...

    f1(...);

    f5(...);

    ...

    }

    f1(...)

    {

    ...

    f3(...);

    ...

    }f2(...)

    {

    ...

    }

    #include aux3.c

    f3(...)

    {...

    f4(...);...

    }

    f4(...)

    {

    ...

    f2(...);

    ...

    }

    f5(...){

    ...}

    ...

    stdio.h principal.c aux1.c

    aux2.c

    aux3.c

    Ficheros Estndar Fichero Principal Ficheros Secundarios

    Ficheros Fuente en C Varios Mdulos

    Editor

    principal.C

    Compilador

    .LIB Enlazador(Linker)

    principal.EXE

    Realizacin de un Programa en C No Modular

  • 7/30/2019 Sistema Sin Format i Cos

    62/140

    Edito

    r

    .LIB

    principal.C

    auxiliar.C

    objeto.O

    libreria.LIB

    Compila

    dor

    principal.O

    auxiliar.O

    Enlazador(Linker)

    principal.EXE

    Realizacin de un Programa en C Modular

    Caractersticas9 Sensible a maysculas y minsculas9 Indentacin y espacios en blanco9 Sentencias (terminan en punto y coma ; )9 Bloques (delimitados entre llaves {} )9 Elementos de un programa

    Palabras reservadasFunciones de librera estndarVariables y funciones definidas por el programador

    Caractersticas de Edicin de un Programa C

  • 7/30/2019 Sistema Sin Format i Cos

    63/140

    Nombres de Ficheros y ExtensionesEl nombre de un fichero consta de dos partes: el nombre base y la extensin.

    Extensiones ms Comunes.c fichero fuente C.h fichero de cabeceras.o (.obj) fichero objeto resultante de la compilacin de un fichero fuente. No es ejecutable.out (.exe) fichero ejecutable.lib librera esttica.dll libreras dinmicas

    Caractersticas de Edicin de un Programa C

    Errores9 Errores de Sintaxis Edicin9 Errores Lgicos Algoritmo incorrecto9 Errores de Regresin Solucin de errores9 Errores de Ejecucin Situaciones imprevistas

    Depuracin de un Programa

    Mensajes de Error9 Error Fatal Sistema Operativo9 Error de Sintaxis Compilador/enlazador9 Advertencias (warnings) Compilador/enlazador (no traba)

  • 7/30/2019 Sistema Sin Format i Cos

    64/140

    El Programa Principal

    Declaraciones de la Funcin Mainmain()

    intmain()

    voidmain()

    voidmain(void)

    intmain(intargc, char*argv[])

    Programa PrincipalFuncin concreta que juega el papel principal y que empieza a actuar

    Esta funcin en el lenguaje C ha de llevar por titulo o nombre el de "main"

    argc representa el nmero total de argumentosargv es el puntero que seala una tabla en cuyos registros estn

    contenidos los argumentos bajo la forma de serie de caracteres

    #include

    main()

    {

    printf(Hola mundo!!\n);

    }

    Edicin (Fichero hola.c)

    CompiladoEjecucin

    Primer Programa C

  • 7/30/2019 Sistema Sin Format i Cos

    65/140

    #include

    main()

    {printf(Esto s se ejecuta\n);

    }

    Ejemplo 1

    1. Se llega al final del programa principal (funcinmain)2. La funcin main realiza una llamada a la sentencia return()

    3. Cualquier funcin realiza una llamada a la funcin exit()

    Modos de Finalizacin de un Programa

    #include

    main()

    {

    printf(Esto s se ejecuta\n);

    return(0);

    printf(Esto no se ejecuta\n);

    }

    Ejemplo 2

    #include

    #include /* necesario para

    exit() */

    main()

    {

    printf(Esto s se ejecuta\n);

    exit(0);

    printf(Esto no se ejecuta\n);}

    Ejemplo 3

    Finalizacin de un Programa

    Existen seis clases de componentes sintcticos otokens en el vocabulario del lenguaje C:

    1. Identificadores

    2. Palabras Reservadas3. Constantes4. Operadores5. Separadores6. Comentarios

    Elementos Base

    Elementos Base del Lenguaje C

  • 7/30/2019 Sistema Sin Format i Cos

    66/140

    1. Un identificador se forma con una secuencia de letras (minsculas de la a a la z; maysculas dela A a la Z; y dgitos del 0 al 9).

    2. El carctersubrayado o underscore (_) se considera como una letra ms.

    3. Un identificador no puede contener espacios en blanco, ni otros caracteres distintos de los citados,como por ejemplo (* , ; . : - + etc.)

    4. El primer carcter de un identificador debe ser siempre una letra o un (_), es decir, no puede serun dgito.

    5. Se hace distincin entre letras maysculas y minsculas. As, Masa es considerado como unidentificador distinto de masa y de MASA.

    6. ANSI C permite definir identificadores de hasta 31 caracteres de longitud.

    Reglas ANSI C

    Los identificadores son nombres que permiten sealar, mencionar, hacerreferencia a los diferentes objetos tratados por el programa. En particular a:

    las variables las funciones las constantes simblicas

    Definicin

    Identificadores I

    Ejemplos

    Identificadores Correctos Identificadores IncorrectosI 8080BUFFER 1erDirecci6n_Memoria Bus de datoscas_01 cas:01Z80 CP/M

    Identificadores II

  • 7/30/2019 Sistema Sin Format i Cos

    67/140

    Palabras clave necesarias para la sintaxis y semntica del lenguaje:

    especificadores de tipo de objeto especificadores de clase de memoria instrucciones de control operador simblico etiquetas de control

    Definicin

    Lista de Palabras Reservadas

    Tipo Clase Instruccin Operador Etiqueta

    intcharshortlong

    signed

    unsignedfloat

    doublevoidstructunionenum

    autoexternstatic

    registervolatile

    consttypedef

    ifelse

    whiledofor

    switchbreak

    continuegoto

    return

    sizeof casedefault

    Palabras Reservadas

    Valores que permanecen fijos durante la ejecucin de un programa:

    nmeros enteros nmeros reales caracteres serie de caracteres expresiones con constantes

    constantes simblicas

    Definicin

    1. Constantes numricas. Son valores numricos, enteros o de punto flotante. Se permitentambin constantes octales (nmeros enteros en base 8) y hexadecimales (base 16).

    2. Constantes carcter. Cualquier carcter individual encerrado entre apstrofos (tal como 'a', 'Y',')', '+', etc.) es considerado por C como una constante carcter.

    3. Cadenas de caracteres. Un conjunto de caracteres alfanumricos encerrados entre comillas estambin un tipo de constante del lenguaje C, como por ejemplo: "espacio", "Esto es una cadenade caracteres", etc.

    4. Constantes simblicas. Las constantes simblicas tienen un nombre (identificador) y en esto se

    parecen a las variables. Sin embargo, no pueden cambiar de valor a lo largo de la ejecucin delprograma. En C se pueden definir mediante el preprocesador (#define) o por medio de lapalabra clave const.

    Tipos de Constantes

    Constantes

  • 7/30/2019 Sistema Sin Format i Cos

    68/140

    Una expresin real puede darse en notacin decimal (2.56) como cientfica (2.56E-4) En una expresin tipo long se aade una L al final (200L)

    Una expresin tipo carcter se define entre comillas simples (A) Una expresin de cadena de caracteres se define entre comillas dobles (expresin)

    Base Decimal: Expresin en formato normal. Ejemplo: 230 Base Octal: Comienza por cero. Ejemplo: 0346 Base Hexadecimal: Comienza por cero-x. Ejemplo: 0xE6

    Expresin de Nmeros Enteros en Diferentes Bases

    Tabla de Caracteres de Control

    nueva lneatabulaci6nretrocesoretorno de carroavance de pginaantibarraap6strofecomillassonido de alertacarcter nuloocteto binario

    NL o LFTAB o HTBSCRFF\BELLNULLddd

    \n\t\b\r\f\\\\\a\0\ddd

    Es posible definir constantes asociadas a un identificador por medio dela directiva #defineEjemplo:#define PI 3.141593#define MAXIMO 255

    #define MAXINT 32767

    Definicin de Constantes Mediante Directiva de Preprocesador

    Formato Bsico de Expresiones Constantes

    Expresiones Constantes

    Los operadores pueden estar representados por uno o por dos caracteresespeciales, por una palabra reservada, o por un especificador de tipo puestoentre parntesis.

    Definicin

    Operadores Mondicos o Unarios: preceden a un identificador, a una expresin o a una constante

    Operadores Didicos o Binarios: establecen la relacin entre dos trminos o expresiones Operadores Tridicos o Ternarios: ponen en relacin tres trminos o expresiones

    Categoras de Operadores

    Tabla de Operadores

    Unarios Binarios Ternarios

    -

    *

    &

    !

    ~

    ++

    --

    (tipo)

    sizeof

    +

    -

    *

    /

    %

    |

    &

    >>

    >=

    >=

  • 7/30/2019 Sistema Sin Format i Cos

    69/140

  • 7/30/2019 Sistema Sin Format i Cos

    70/140

    DefinicinTres tipos fundamentales, que se expresan con la ayuda de palabras clavereservadas en el lenguaje:

    1. Nmeros enteros (int)2. Nmeros reales (float)3. Caracteres (char)

    ModificadoresCalificacin para adaptarse mejor a los diversos tamaos de la palabrainterna del microprocesador, con el fin de mejorar la precisin o de reducir elespacio ocupado en memoria :

    1.short para un entero corto2.long para un entero largo3.unsigned para un entero sin signo4.double para un nmero real flotante de doble precisin

    unsigned intsigned char

    long int

    unsigned long int

    Ejemplo

    Tipos de Datos Bsicos Definicin y Modificadores

    Tipos de Datos Bsicos Notaciones

    Tipos de datos fundamentales (notacin completa)

    char signed char unsigned char

    signed short int signed int signed long int

    Datos enteros

    unsigned short int unsigned int unsigned long int

    Datos reales float double long double

    Tipos de datos fundamentales (notacin abreviada)

    char signed char unsigned char

    short int long

    Datos enteros

    unsigned short unsigned unsigned long

    Datos reales float double long double

  • 7/30/2019 Sistema Sin Format i Cos

    71/140

    Tipo Tamao de palabra

    16 bits 32 bitscharintshortlongunsignedfloatdouble

    8 bits16 bits16 bits32 bits16 bits32 bits64 bits

    8 bits32 bits16 bits32 bits32 bits32 bits64 bits

    Operadorsizeof()

    El operador sizeof se utiliza para determinar el nmerode bytes de un variable o un tipoint a;

    sizeof(a); sizeof(unsigned int);

    Tipos de Datos Bsicos Tamaos y Rangos

    Tipos de Datos Bsicos Rangos

    Tipo Rango

    charunsigned char

    intshortlong

    unsignedfloatdouble

    long double

    -128..1270.255

    -32768..32767-32768..32767-232..232-10..65535

    3.4E-38..3.4E+381.7E-308..1.7E+308

    3.4E-4932.. 1.1E+4932

    Rangos para mquina de 16 bits

  • 7/30/2019 Sistema Sin Format i Cos

    72/140

    char ccar;unsigned int inum;

    float freal;

    Declaracin Simple

    char ccar, cdat;unsigned int inum, icoorx;

    float freal, fnum;

    Declaracin Mltiple

    char ccar = A;

    unsigned int inum = 12432, icoorx = 5;float freal = 0.14, fnum = -4.2812e-4;

    Declaracin y Asignacin

    Tipos de Datos Bsicos Declaracin de variables

    Declaracin [tipo de dato] [[Identificador], ...];

    Las variable de tipo puntero representan direcciones dondealmacenar valores. Es importante diferenciar entre puntero(espacio de memoria donde se almacena la direccin) y la

    propia direccin del puntero.

    Se declaran con un asterisco delante del identificador devariable

    main()

    {

    int *px, x = 3;

    px = &x; // px apunta a x

    *px = 5; // x vale 5}

    Definicin Si px es un puntero (direccin): *px es el

    contenido del puntero (el valor almacenadoen la direccin)

    Si x es la variable: &x es la direccin dememoria donde est almacenada la variable

    Operadores de Punteros

    ? ? ? ?px35;0x39;

    ?px

    x0 0 3 3

    Direccin Contenido Grf ica

    0 0 0 39px35;0x39;

    39 x0 0 3 3

    0 0 0 39px35; 0x39; 39 x0 0 5 5

    px

    px

    int *px, x; /* px es un puntero a entero y

    x es un entero */

    Ejemplo

    La declaracin de punteros genricos adirecciones se asocian al tipo void

    Declarar un variable que no sea punterode tipo void no tiene sentido

    El Tipo void

    void *pv, v; /* La variable v

    est mal declarada */

    Ejemplo

    Punteros

  • 7/30/2019 Sistema Sin Format i Cos

    73/140

    La declaracin de las variables lleva asociado un mbito, dentro del cual lavariable es visible:

    mbito Global: La variable es visible en todas las funciones delprograma

    mbito Local: La variable es visible dentro del bloque o funcin en elque encuentra definida. (Tiene prioridad sobre el mbito global)

    int x, y; // variables glogales

    main()

    {

    float x, z; // variables locales

    /* Aqu x, z son reales e y un entero */}

    /* Aqu x e y son variables enteras */

    /* La variable z no existe fuera de la funcindonde est definida */

    Ejemplo

    mbito de las Variables

    A menudo es necesario convertir valores de variables o expresiones de un tipo a otrodiferente. Hay dos tipos de conversiones:

    Conversiones Implcitas (Promocin): Las realiza automticamente el programa.Variables o expresiones de menor rango promocionan a rangos superiores.

    Conversiones Explcitas (Casting): Conversin forzada por el programador. Seutiliza el tipo a convertir entre parntesis.

    int inum;float rnum;

    char ccar;

    rnum = 65.0

    inum = (int)rnum; //inum vale 65

    ccar = (char)inum; //ccar vale 65 (cdigo ASCII de A)

    Ejemplo de Casting

    Definicin

    long double > double > float > unsigned long > long > unsigned int > int > char

    Rangos de Conversiones Implcitas

    Conversiones de Tipo Casting

  • 7/30/2019 Sistema Sin Format i Cos

    74/140

    Cdigo ASCII

    American

    Standard

    CodeInformation

    Interchange

    ASCII

    Cdigo ASCII Caracteres imprimibles y no imprimibles

  • 7/30/2019 Sistema Sin Format i Cos

    75/140

    Cdigo ASCII Caracteres extendidos

    Los operadores pueden estar representados por uno o por dos caracteres especiales, por una palabrareservada, o por un especificador de tipo puesto entre parntesis.

    Definicin

    Operadores Mondicos o Unarios: preceden a un identificador, a una expresin o a una constante Operadores Didicos o Binarios: establecen la relacin entre dos trminos o expresiones Operadores Tridicos o Ternarios: ponen en relacin tres trminos o expresiones

    Categoras de Operadores

    Tabla de OperadoresUnarios Binarios Ternarios

    -

    *

    &

    !

    ~

    ++

    --

    (tipo)

    sizeof

    +

    -

    *

    /

    %

    |

    &

    >>

    >=

    >=

  • 7/30/2019 Sistema Sin Format i Cos

    76/140

    Operadores Aritmticos

    + la adicin

    - la sustraccin y e l menos mondico

    * la multiplicacin

    / la divisin

    % el residuo o resto de la divisin

    #include

    main() /* comprobaciones de prioridad */{

    int c = 2, d = 3, y = 4;

    printf(c * d %%y = %d\n, c * d % y);printf((c * d) %%y = %d\n, (c * d) % y);

    printf(c * (d %%y) = %d\n, c * (d % y));

    }

    Ejemplo

    Depende de los operandos:

    4 / 3 1 Entero4.0 / 3 1.3333 Real4/ 3.0 1.3333 Real4.0 / 3.0 1.3333 Real

    Divisin Entera vs Real

    c * d % y = 2

    (c * d) % y = 2

    c * (d % y) = 6

    Solucin

    El operador de asignacin bsico es el igual (=)

    Nota

    Operadores Aritmticos

    #include

    main()

    {

    long n = 0x12345678; // entero sobre 32 bits

    printf(%lx & 0X0F0F0F0F = %lx, n, n & 0x0f0f0f0f);

    }

    Ejemplo

    Solucin

    Operadores de Manipulacin de Bits

    & Y lgico inclusivo (AND)

    | O lgico inclusivo (OR)

    ^ O lgico exclusivo (XOR)

    negacin, complementos a uno

    > desplazamiento hacia la derecha

    12345678 & 0X0F0F0F0F = 02040608

    Operadores de Manipulacin de Bits

  • 7/30/2019 Sistema Sin Format i Cos

    77/140

    Operadores de Asignacin

    = Asignacin

    += Suma y asignacin

    = Resta y asignacin

    *= Producto y asignacin

    /= Divisin y asignacin

    %= Resto y asignacin

    |= OR y asignacin

    &= AND y asignacin

    ^= XOR y y asignacin

    >>= Desplazamiento a izquierdas y asignacin

  • 7/30/2019 Sistema Sin Format i Cos

    78/140

    Operadores de Comparacin

    > Mayor que

    >= Mayor o igual a< Menor que

    7; // a vale 0 (falso)

    a = (3 > 2 || 5 == 4) && !1 // a vale 0 (falso)

    (index < MAX - 1 && (c = getchar()) != '\n') && c != EOF)

    Ejemplos

    Operadores de Relacin

    Clasificacin de los Operadores segn sus Prioridades

    ( ) [ ] -> .

    ! ++ -- - * & (type) sizeof

    * / %

    + -

    >

    < >=== !=

    &

    |

    &&

    ||

    ? :

    = += -= *= /= %= >>=

  • 7/30/2019 Sistema Sin Format i Cos

    79/140

    Las funciones de E/S en C no pertenecen a las palabras reservadas del lenguaje. Son funciones de la librera estndarcuyo formato se encuentra en el fichero de cabecera stdio.h.

    Las funciones de E/S bsicas recogen/insertan variables o constantes en los ficheros de E/S(stdin/stdout teclado/monitor)

    Definicin

    Funciones de E/S Bsicas

    TiposLas principales funciones de E/S se dividen por su propsito:

    Funciones de E/S de caracteres: recoger/insertar un carcter del fichero de E/S9 getchar()/putchar()

    Funciones de E/S de cadenas de caracteres: recoger/insertar una cadena de caracteres del fichero de E/S9 gets()/puts()

    Funciones de E/S con formato: leer/escribir con formato del fichero de E/S9 scanf()/printf()

    Leer un carcter desde techado: caracter = getchar();getchar()

    Funciones de E/S Bsicas E/S de Caracteres

    Presenta un carcter en pantalla: putchar(caracter);putchar()

    #include // necesario para utilizar funciones de E/S

    main()

    {

    char ccar; // variable caracter

    ccar = getchar(); // recoge carcter de teclado

    putchar(ccar); // escribe carcter en monitorputchar(A); // escribe una A en monitor

    putchar(getchar()); // escribe lo ledo

    }

    Ejemplo de getchar/putchar

  • 7/30/2019 Sistema Sin Format i Cos

    80/140

    Leer una cadena de caracteres desde techado: gets(cadena);gets()

    Funciones de E/S BsicasE/S de Cadenas de Caracteres

    Presenta una cadena de caracteres en pantalla: puts(cadena);puts()

    #include // necesario para utilizar funciones de E/S

    main()

    {

    char cadena[100]; // variable cadena de caracteres

    gets(cadena); // recoge la cadena de tecladoputs(cadena); // escribe la cadena en monitorputs(Hola socio); // escribe la cadena constante en monitor

    puts(gets(cadena)); // escribe lo ledo

    }

    Ejemplo de gets/puts

    Escribir en pantalla con formato: printf (formato, arg1, arg2, ..., argn);

    formato: cadena de formato de salida de datos.

    argi

    : argumentos a incluir dentro del formato (pueden ser variables o expresiones).

    printf()

    Formato Expresin Resultado%d, %i entero Entero decimal con signo%u entero Entero decimal sin signo%o entero Entero octal sin signo%x, %X entero Entero hexadecima l sin signo%f real Real en notacin punto%e, %E real Real en notacin cientfica%g, %G real Real en notacin ms corta%c carcter Carcter%s string Cadena de caracteres%p puntero Direccin de memoria%ld, %lu, entero largo Entero largo (distitos formatos)

    Signo : ajuste a la izquierda.

    nmero: longitud mnima en caracteres

    punto decimal: precisin de la parte fraccionaria

    Otras Opciones de Formato

    #include

    #define PI 3.141593

    main()

    {int inum = 3;

    char ccar = A;

    printf(Hola mundo !!\n);

    printf(El nmero %8d\n, inum);

    printf(Un nmero %d y un carcter %c\n,

    inum + 2, ccar);

    printf(El valor de PI es %6.4f\n, PI);

    }

    Ejemplo

    Funciones de E/S Bsicas printf()

  • 7/30/2019 Sistema Sin Format i Cos

    81/140

    Leer de teclado con formato: scanf (formato, dir1, dir2, ..., dirn);

    formato: cadena de formato de entrada de datos.

    diri

    : argumentos a incluir dentro del formato (direcciones de variables donde se almacenaran valores ledos).

    scanf()

    #include

    main()

    {int inum, *pinum;

    float rnum;char ccar;

    scanf(%d, &inum); // lee un entero y lo almacena en inum

    scanf(%f %c, &rnum, &ccar); // lee un rnum y ccar

    scanf(%d, pinum); // PELIGROSO

    pinum = &inum;

    scanf(%d, pinum); // CORRECTO, lee inum

    }

    Ejemplo

    Es importante destacar que los argumentos son direcciones. Cuando se utilizan variables base es necesarioutilizar el operador de indireccin &.

    Nota

    Funciones de E/S Bsicas scanf()

    #include

    main()

    {

    char *pstr, str[100], cad[20];

    scanf(%s, pstr); // PELIGROSO

    scanf(%s, str); // CORRECTO, lee str hasta blanco o fin de lnea

    pstr = str;

    scanf(%s, pstr); // CORRECTO, lee str hasta blanco o fin de lnea

    scanf(%[^\n], str); // Lee toda la lnea sobre str

    scanf(%s %*s %s, cad, str); /* Lee cad hasta blanco, deja una palabra y la

    siguiente palabra sobre str hasta blanco o fin de lnea */

    }

    Ejemplo

    Funciones de E/S Bsicas scanf() Lectura de strings

  • 7/30/2019 Sistema Sin Format i Cos

    82/140

    #include

    #define DIAS_ANIO 365

    main()

    {

    char nombre[100];

    int dias, anios;

    printf(Cual es tu nombre? );

    scanf(%s, nombre);

    printf(Y tu edad? );scanf(%d, &anios);

    dias = anios * DIAS_ANIO;

    printf(%s tienes aproximadamente %d das, nombre, dias);

    }

    Ejemplo

    Cual es tu nombre? Jose

    Y tu edad? 20

    Jose tienes aproximadamente 7300 das

    Solucin

    Funciones de E/S Bsicas printf()/scanf() Ejemplo

    Las sentencias de control van a determinar la cadena de ejecucin de las instrucciones.

    Definicin

    Sentencias Condicionales o Selectivas: permiten la bifurcacin de la cadena de ejecucin9 Sentencia if9 Sentencia if ... else9 Sentencia switch

    Sentencias Repetitivas o Iterativas: permiten la repeticin de un conjunto de instrucciones9 Sentencia while9 Sentencia do ... while9 Sentencia for

    Tipos de Sentencias de Control

    Sentencias de Control

  • 7/30/2019 Sistema Sin Format i Cos

    83/140

    condicin?

    expresin(es)

    falso

    verdadero

    #include

    #define MAXIMO 100

    main(){int inum;

    printf(Dame un nmero -> );scanf(%d, &inum);

    if(inum > MAXIMO)

    {

    printf(El nmero introducido es mayor que el mximo\n);}

    }

    Ejemplo

    if(condicin){

    expresin(es)

    }

    Ejecucin

    Diagrama de Flujo

    Sentencia if

    #include

    #define MAX_EDAD_JOVEN 25

    main()

    {

    int edad;

    printf(Dime tu edad -> ");

    scanf(%d, &edad);

    if(edad

  • 7/30/2019 Sistema Sin Format i Cos

    84/140

    if(condicin1){

    if(condicin2){expresin(es) if condicin 2

    if(condicin3)

    {expresin(es) if condicin 3

    }}

    else{expresin(es) else condicin 2

    }}

    else{if(condicin4)

    {expresin(es) if condicin 4

    }else

    {expresin(es) else condicin 4

    }}

    Ejemplo de Ejecucin

    Sentencia if...else Anidadas

    #include

    main()

    {char letra;

    printf(Dame una inicial y te dar un animal -> );scanf(%c, &letra);

    switch(letra)

    {case a:printf(antlope\n);

    break;case b:

    printf(buitre\n);break;

    case c:

    printf(cocodrilo\n);break;

    default:

    printf(No se me ocurre\n);}

    }

    switch(variable_opcin)

    {

    case opcion_1:

    expresin(es) opcion_1;

    break;

    case opcion_2:

    expresin(es) opcion_1;break;

    ...

    case opcion_N:

    expresin(es) opcion_N;

    break;

    default:

    expresin(es) default;}

    Ejecucin

    Ejemplo

    Sentencia switch

  • 7/30/2019 Sistema Sin Format i Cos

    85/140

    Equivalencia a Sentencia Condicional if..else

    #include

    main(){

    float num, abs;

    printf(Dame un nmero -> );

    scanf(%f, &num);

    abs = num > 0 ? num : -num;

    printf(El valor absoluto de %6.4f es %6.4f\n, num, abs);

    }

    Ejemplo

    Operador Condicional

    " : Condicionalidad

    si (expresin1) entonces expresin2 en_caso_contrario expresin3

    expresin1 ? expresin2 : expresin3

    if(num > 0){

    abs = num;}else

    {

    abs = -num;}

    equiv

    alen

    te

    El Operador Condicional

    #include

    #define TOPEMINIMO 250

    main(){

    int total = 0, nuevas;

    while(total < TOPEMINIMO){

    printf(Tienes %d piezas acumuladas\n, total);printf(Cuantas piezas nuevas tienes -> );

    scanf(%d, &nuevas);total += nuevas;}

    printf(Has acumulado %d piezas.\n, total);}

    Ejemplo

    while(condicin)

    {

    expresin(es)

    }

    EjecucinDiagrama de Flujo

    condicin?

    expresin(es)

    falso

    verdadero

    Sentencia while

  • 7/30/2019 Sistema Sin Format i Cos

    86/140

    #include

    #define ESCAPE \x1b //escape = ASCII(27), octal(33)//hexadecimal(1b)

    main(){

    char caracter;

    do

    {printf(Dame un caracter -> );caracter = getchar();

    }while(caracter != ESCAPE);}

    Ejemplo

    do

    {

    expresin(es)}

    while(condicin);

    EjecucinDiagrama de Flujo

    condicin?

    expresin(es)

    falso

    verdadero

    Sentencia do...while

    for(expresin inicial; condicin; expresin bucle){

    expresin(es)}

    EjecucinDiagrama de Flujo

    condicin?

    expresin(es)

    falso

    verdaderoexpresin bucle

    expresin inicial

    #include

    main(){

    int i;

    for(i = 0; i < 10; i++)

    {printf(Nmero -> %5d Cuadrado -> %5d\n,

    i, i * i);

    }}

    Ejemplo

    Sentencia for

  • 7/30/2019 Sistema Sin Format i Cos

    87/140

    break: permiten la salida del bucle sin tener en cuenta la expresin que lo controla continue: permiten la vuelta a la cabecera del bucle sin ejecutar las sentencias restantes

    #include

    main(){char car;

    while((car = getchar()) != X)

    {if(car == \x1b){

    break;

    }printf(Has introducido %c\n, car);}

    }

    Ejemplo break

    #include

    main()

    {char car;

    while((car = getchar()) != X &&ccar != \x1b)

    {

    printf(Has introducido %c\n, car);}

    }

    Solucin estructurada

    #include

    main(){char car;

    while((car = getchar()) != X)

    {if(car == \x1b){

    continue;

    }printf(Has introducido %c\n, car);}

    }

    Ejemplo continue

    #include

    main()

    {char car;

    while((car = getchar()) != X)

    {

    if(car != \x1b)

    {

    printf(Has introducido %c\n, car);

    }

    }

    }

    Solucin estructurada

    Sentencias break, continue

    #include

    main(){int i;

    for(i = 0;

    (i < 100) && (i % 17 != 0);i++)

    {if(i % 2 != 0)

    {printf(Nuestro nmero es %d\n, i);}

    }}

    Solucin estructurada#include

    main(){int i;

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

    {if(i % 2 == 0)

    {continue; // comienza la iteracin

    }

    if(i % 17 == 0)

    {break; // sale del bucle

    }

    printf(Nuestro nmero es %d\n, i);

    }

    }

    Ejemplo break/continue

    Sentencias break, continue Ejemplo

  • 7/30/2019 Sistema Sin Format i Cos

    88/140

    for(expresin inicial; condicin1; expresin bucle){

    while(condicin2){expresin(es) while condicin 2

    for(expresin inicial;

    condicin3;expresin bucle)

    {expresin(es) for condicin 3

    do{

    expresin(es) do..while condicin 4}

    while(condicin4)}

    }

    expresin(es) for condicin 1

    }

    Ejemplo de Ejecucin

    Sentencias Repetitivas Anidadas

    #include

    main(){int base, linea, columna;

    printf(Nmero de asteriscos en base -> );scanf(%d, &base);

    linea = 0;

    while(linea < base){for(columna = 0;

    columna < linea;columna++)

    {printf(*);

    }

    printf(\n);linea++;}

    }

    Ejemplo

    #include

    main(){int base, linea, columna;

    printf(Nmero de asteriscos en base -> );

    scanf(%d, &base);

    for(linea = 0; linea < base; linea++){

    for(columna = 0; columna < linea; columna++){printf(*);

    }

    printf(\n);}

    }

    Ejemplo

    Generar un tringulo de asteriscos, indicando elnmero de asteriscos en la base:

    *

    *********

    *****

    Enunciado

    Los dos ejemplos expuestos son equivalentesNota

    Sentencias Repetitivas Anidadas Ejemplo

  • 7/30/2019 Sistema Sin Format i Cos

    89/140

    Subrutinas9Procedimientos: son mdulos de programa que no ofrecen ningn tipo de valor asociado al

    nombre de la subrutina

    9 Funciones: son mdulos de programa que ofrecen un valor asociado al nombre de la subrutina

    FuncinParte de cdigo independiente, que puede ser llamada envindole unos datos (o sin enviarle nada),

    para que realice una determinada tarea y/o proporcione unos resultados

    Definicin, Declaracin y Llamada de una Funcin9Definicin: cuerpo de la funcin en donde reside el cdigo de la misma.

    9Declaracin: presentacin de la funcin donde se expresa su nombre, parmetros y tipo de valordevuelto.

    9Llamada: utilizacin de la funcin desde un punto de programa referenciada por su nombre,indicando el valor de los parmetros de trabajo y utilizacin del valor devuelto.

    Parmetros Formales vs. Parmetros Actuales9Parmetros Formales: lista de declaraciones de variables, precedidas por su tipo correspondiente

    y separadas por comas (,) declarados en el encabezamiento de la funcin.

    9Parmetros Actuales: lista de constantes, variables y expresiones de un tipo determinado, queaparecen en la llamada a una funcin.

    Funciones

    Una funcin se invoca provocando valores a los argumentos de la llamada.

    9 Los argumentos se pasansiempre por valor

    9 El valor se devuelve por medio de la sentencia return()

    9 Los procedimientos son funciones de tipo void

    9 El control del nmero y tipo de argumentos es mnimo

    9 Las funciones en C permiten recursividad y reentrabilidad

    #include

    int factorial(int numero);

    main()

    {int factor;

    printf("Introduzca un nmero -> ");scanf("%d", &factor);

    printf("El factorial de %d es %d\n",factor, factorial(factor));

    }

    Ejemplo

    int factorial(int numero)

    {int i, out;

    for(i = 1, out = 1; i

  • 7/30/2019 Sistema Sin Format i Cos

    90/140

    Definicin de una FuncinConsiste en la definicin del cdigo necesario para que sta realice las tareas para las que ha sido

    prevista. La definicin de una funcin se debe realizar en alguno de los ficheros que forman parte del

    programa.

    La primera lnea recibe el nombre de encabezamiento (header) y el resto de la definicin encerradoentre llaves es el cuerpo (body) de la funcin.

    Formato General[clase] [tipo] nombre_funcion([lista de argumentos con tipos])

    {

    [declaracin de variables y/o de otras funciones]

    codigo ejecutable // sentenciasreturn (expresin); // optativo

    }

    9

    clase: define el mbito de la funcin, esto es, desde dnde puede ser llamada. La clase puede serextern ostatic.

    9 tipo: indica el tipo de valor devuelto por la funcin.

    9 nombre: es el identificador que indica el nombre de la funcin.

    9 lista de argumentos: secuencia de declaracin de parmetros separados por comas y encerradosentre parntesis. Son los llamados parmetros formales.

    Funciones Definicin de una Funcin

    Declaracin de una FuncinToda funcin debe ser declarada antes de ser utilizada en la funcin o programa que realiza lallamada.

    Formato General[clase] [tipo] nombre_funcion([lista de tipos de argumentos]);

    Formas de Declarar una Funcin

    9Mediante una llamada a la funcin: Se supone int como tipo del valor de retorno, y el tipo de losargumentos actuales como tipo de los argumentos formales

    9Mediante una definicin previa de la funcin

    9Mediante una declaracin explcita, previa a la llamada

    Ejemploint factorial(int numero);

    int factorial(int);

    int factorial();

    Funciones Declaracin de una Funcin

  • 7/30/2019 Sistema Sin Format i Cos

    91/140

    Llamada de una FuncinLa llamada a una funcin se hace incluyendo su nombre en una expresin o sentencia del programa

    principal o de otra funcin. Este nombre puede ir seguido de una lista de argumentos separados por

    comas y encerrados entre parntesis, losparmetros actuales.

    Cuando se llama a una funcin se ejecuta el cdigo correspondiente a la funcin hasta que se llega auna sentencia return o al final del cuerpo de la funcin, y entonces se devuelve el control al

    programa que realiz la llamada, junto con el valor de retorno si es que existe.

    Formato Generalvariable = expresin([parmetros actuales]);

    9 variable: especifica la variable en donde va a ser almacenado el valor devuelto por la funcin. Lallamada puede prescindir del valor devuelto por la funcin.

    9 expresin: especifica la direccin que referencia a la funcin. En general se corresponde con el

    nombre de la funcin.9parmetros actuales: lista de expresiones separadas por comas. Las expresiones son evaluadas,

    pasadas a la funcin y asignadas a los parmetros formales. El nmero de parmetros actualescoincide con el parmetros formales, a no ser que especifique un nmero variable de parmetros.

    Funciones Llamada de una Funcin

    #include

    double valor_abs(double); /* declaracin */

    void main (void)

    {

    double z, y;

    y = -30.8;

    z = valor_abs(y) + y * y; /* llamada enuna expresin */

    printf("El valor calculado es %g\n", z);}

    double valor_abs(double x)

    {if (x < 0.0)

    return -x;else