SlideShare une entreprise Scribd logo
1  sur  46
Introducción a la Programación


              ISC-206
              Prof. Clariza Rosario
Unidad I Introducción
1.1 Breve historia sobre la
     Computación

A lo largo de la historia el hombre fue resolviendo sus necesidades de registro,
    para llevar la cuenta de sus bienes y efectuar las operaciones necesarias para
    la permuta o la venta de los mismos. Fue ideando métodos ágiles de cálculos,
    tales como contar con los elementos que les proporcionaba la naturaleza, por
    ejemplo: dedos, piedras, nudos en la soga, etc. Partiendo de la idea de contar
    con los dedos, los pueblos primitivos tomaron como base de sus cálculos el
    número 10, pero no todos tomaron el mismo sistema, los mayas calculaban en
    base al 20, los babilonios en base al 60, y los esquimales en base al 5, etc. En
    la medida que el hombre acumulaba un mayor número de posesiones,
    aumentaba la tarea de contar. El mundo antiguo iniciaba su expansión y los
    comerciantes compraban, vendían, efectuaban trueques, inventariaban,
    necesitaban un dispositivo para recoger información y obtener resultados
    exactos.
Uno de los dispositivos mecánicos primitivos de cálculos fue el contador de arena
    de los egipcios, que consistía en surco en la arena donde colocaban piedras o
    guijarros.
Todo el desarrollo de las computadoras suele divisarse
  por generaciones y el criterio que se determinó para
  determinar el cambio de generación no está muy
  bien definido, pero resulta aparente que deben
  cumplirse al menos los siguientes requisitos:
   – La forma en que están construidas.
   – Forma en que el ser humano se comunica con
     ellas.
Primera Generación de Computadores
En esta generación había un                  Características:
  gran desconocimiento de las          Estaban construidas por
  capacidades de las                    medio de tubos de vacío.
  computadoras, puesto que             Eran programadas en
  se realizó un estudio en esta         lenguaje de máquina.
  época que determinó que
  con veinte computadoras se           Grandes y costosas (aprox.
  saturaría el mercado de los           de ciento de miles de
  Estados Unidos en el campo            dólares).
  de procesamiento de datos.

Esta generación abarco la
   década de los cincuenta.

 Computadoras: IBM 701, IBM 650, UNIVAC 80 y 90, las IBM 704 y 709,
 Burroughs 220 y UNIVAC 1105.
Segunda Generación de Computadores.

                                                  Características :
Cerca de la década de 1960, las             Están construidas con circuitos de
   computadoras seguían                      transistores.
   evolucionando, se reducía su             Se programan en nuevos lenguajes
   tamaño y crecía su capacidad de           llamados lenguajes de alto nivel.
   procesamiento. También en esta           Mayor adaptación al equipo.
   época se empezó a definir la forma
   de comunicarse con las                   Posibilidad de obtener la máxima
   computadoras, que recibía el              velocidad con mínimo uso de
   nombre de programación de                 memoria
   sistemas.
Las computadoras representativas de
   esta generación fueron: la Philco
   212, UNIVAC M460, la Control
   Data Corporation modelo
   1604, seguida por la serie 3000, la
   IBM 7090 y la NCR 315.
Tercera generación de Computadores

Tecnológicamente, la tercera                     Características :
  generación de computadores             Su fabricación electrónica esta
  se caracteriza por la utilización       basada en circuitos integrados
  de circuitos integrados SSI             (chips).
  (pequeña escala de                     Su manejo es por medio de los
  integración) y MSI (media               lenguajes de control de los
  escala de                               sistemas operativos.
  integración), reemplazando a
  los circuitos de transistores
  directos, y consiguiéndose así
  una reducción significativa en
  coste y tamaño físico. También
  poco a poco se fueron
  imponiendo las memorias
  realizadas con circuitos
  integrados, desplazando a las
  memorias de núcleos de ferrita.
Cuarta Generación de Computadores


La época se refiere principalmente             Características :
   a las computadoras de 1980 y          Microchips
   continúa hasta la fecha.
   Aparecen los                          Difusión de sistemas operativos
   microprocesadores, un gran             estándar, no dependientes
   adelanto de la microelectrónica,       directamente de los
   que son circuitos integrados de        constructores del hardware
   alta densidad y con una                (Unix, MS-DOS y OS-DOS)
   velocidad impresionante.

Surge el concepto de <sistemas
  abiertos>, donde el usuario
  puede configurar su sistema
  prácticamente a medida,
  adquiriendo software,
  impresoras, unidades de disco,
  etc. de <terceros> fabricantes.
Quinta Generación de Computadores.

El termino quinta generación fue                Características :
    acuñado por los japoneses
    para describir las potentes e         Procesamiento en paralelo
    "inteligentes" computadoras            mediante arquitecturas y
    que deseaban producir a                diseños especiales y circuitos
    mediados de los noventa. La            de gran velocidad.
    meta es organizar sistemas de         Manejo de lenguaje natural y
    computación que produzcan              sistemas de inteligencia
    inferencias y no solamente             artificial.
    realicen cálculos. En el proceso
    se han incorporado muchos
    campos de investigación en la
    industria de la
    computación, como la
    inteligencia artificial, los
    sistemas expertos y el lenguaje
    natural.
1.2 Evolución de los lenguajes de
programación

Con la llegada de las computadoras aparecen las
   secuencias de posiciones de llaves eléctricas que debían
   conectarse para obtener una acción determinada, una
   llave conectada era un 1 y una llave desconectada era un
   0. Una sucesión de llaves en cualquiera de sus dos
   posiciones definía una secuencia de ceros y unos (por
   ejemplo: 0100011010011101...) que venía a representar
   una instrucción o un conjunto de instrucciones
   (programa) para el computador en el que se estaba
   trabajando.
A esta primera forma de especificar programas para una
   computadora se la denomina lenguaje máquina.
La necesidad de recordar secuencias de programación para las
   acciones usuales llevó a denominarlas con nombres fáciles de
   memorizar y asociar: ADD (sumar), SUB (restar), MUL
   (multiplicar), CALL (ejectuar subrutina), etc.
A esta secuencia de posiciones se le denominó
   "instrucciones", y a este conjunto de instrucciones se le llamó
   lenguaje ensamblador.

Posteriormente aparecieron diferentes lenguajes de
  programación, los cuales reciben su denominación porque
  tienen una estructura sintáctica similar a los lenguajes escritos
  por los humanos.
e

l
e
n
g
       Las cinco generaciones de lenguajes
u      de programación
a
j
e
s Generación         Nombre                             Particularidad

d Primera                             Específico para cada microprocesador, uso de
               De máquina
e                                     código binario
                                      Uso de nemotécnicos que abstraen del
p Segunda      Ensamblador
                                      lenguaje máquina.
r
o                                     Lenguajes estructurados con comandos
  Tercera      De procedimientos
g                                     cercanos al lenguaje común.
r
a Cuarta                              Programas orientados a problemas
               Orientados a objetos
m                                     específicos.
a                                     Incluye inteligencia artificial y sistemas
c Quinta       Natural
                                      expertos.
i
Muestra de código de máquina y lenguaje assembler del Intel 8088.
El código de máquina se resalta en rojo, el código assembler en magenta y
las direcciones de memoria donde se encuentra el código, en azul.
Entre los lenguajes de tercera
generación se incluyen:

FORTRAN (Formula TRANslator), diseñado específicamente para programas matemáticos y
    de ingeniería.
COBOL (Common Business Oriented Languaje) desarrollado en 1960, ganó amplia aceptación
    como lenguaje estandarizado llegándose a utilizar ampliamente en los negocios.
BASIC (Begginners Allpurpose Symbolic Instruction Code) Fue desarrollado por Jhon Kemeny
    y Thomas Kurtz en 1964. Por su simplicidad se volvió ampliamente popular y usado en
    educación y entre los programadores aficionados.
PASCAL, nombrado en honor del inventor francés Blas Pascal, es introducido por Niklaus
    Wirth en 1971. El Pascal, buscaba superar las limitaciones de los otros lenguajes de
    programación y demostrar la manera adecuada de implementar un lenguaje de cómputo.
C, desarrollado a principios de los sesenta por Brian Kernighan y Dennis Ritchie. El C es
    poderoso, puesto que brinda la libertad de conseguir que se realice casi cualquier cosa en
    una computadora.
C++, Es un lenguaje de principios de los ochenta desarrollado por Bjarne Stroustrup. Es
    extremadamente poderoso y eficiente igual que el C.
Java (1991) es desarrollado por Sun Microsistema. Cuando Internet comenzó a ganar
    popularidad como red de comunicaciones a mediados de los noventa, Sun redirige a
    Java para convertirlo en un ambiente de programación que permitiese crear sistemas
    interactivos y dinámicos (denominados applets) para las páginas Web.
Entre los programas de cuarta
generación se tienen:

   Los programas de ambientes visuales:
    Existen versiones de programas populares
    como el Visual BASIC o el Visual
    C, PHP, Java, los cuales, soportan
    características y métodos orientados a
    objetos y que permiten crear programas en
    un ambiente visual.
Clasificación de los lenguajes de
programación

   Según el nivel de abstracción,
   Según la forma de ejecución, y
   Según el paradigma de programación que
    poseen cada uno de ellos.
Según su nivel de abstracción
   Lenguajes de bajo nivel
    Los lenguajes de bajo nivel son lenguajes de programación que se acercan al
    funcionamiento de una computadora. El lenguaje de más bajo nivel es, por
    excelencia, el código máquina. A éste le sigue el lenguaje ensamblador.
   Lenguajes de medio nivel
    Tal es el caso del lenguaje C, entre otros, que tiene ciertas características
    que lo acercan a los lenguajes de bajo nivel pero, al mismo tiempo, ciertas
    cualidades que lo hacen un lenguaje más cercano al humano y, por tanto, de
    alto nivel.
   Lenguajes de alto nivel
    Los lenguajes de alto nivel son normalmente fáciles de aprender porque están
    formados por elementos de lenguajes naturales, como el inglés.
    En BASIC, el lenguaje de alto nivel más conocido, los comandos como "IF
    CONTADOR = 10 THEN STOP" pueden utilizarse para pedir a la computadora
    que pare si CONTADOR es igual a 10.
Ejemplo Lenguaje de Alto nivel
Según la forma de ejecución
   Lenguajes compilados
    Los compiladores son aquellos cuya función es traducir un programa escrito en un
    determinado lenguaje a un idioma que la computadora entienda (lenguaje máquina con
    código binario).
    Al usar un lenguaje compilado (p. e. los lenguajes del popular Visual Studio de Microsoft),
    el programa desarrollado nunca se ejecuta mientras haya errores.
   Lenguajes interpretados
    Una alternativa diferente para traducir lenguajes de alto nivel. En vez de traducir el
    programa fuente y grabar en forma permanente el código objeto que se produce durante la
    corrida de compilación para utilizarlo en una corrida de producción futura, el programador
    sólo carga el programa fuente en la computadora junto con los datos que se van a
    procesar.
    A continuación, un programa intérprete, almacenado en el sistema operativo del disco,
    convierte cada proposición del programa fuente en lenguaje de máquina conforme vaya
    siendo necesario durante el proceso de los datos. No se graba el código objeto para
    utilizarlo posteriormente.
    La siguiente vez que se utilice una instrucción, se le debe interpretar otra vez y traducir a
    lenguaje máquina. lo cual hace que el programa sea más lento en tiempo de ejecución
    (porque se va revisando el código en tiempo de ejecución) pero más rápido en tiempo de
    diseño (porque no se tiene que estar compilando a cada momento el código completo).
Proceso de compilación
Según el paradigma de programación

Un paradigma de programación representa un enfoque particular o filosofía para la
   construcción del software.
No es mejor uno que otro sino que cada uno tiene ventajas y desventajas.
   También hay situaciones donde un paradigma resulta más apropiado que otro.
Atendiendo al paradigma de programación, se pueden clasificar los lenguajes en :
  Lenguajes imperativos
   BASIC,C ,C++ ,Java ,C# ,Perl
  Lenguajes Funcionales
     – Puros: Haskell ,Miranda
     – Híbridos: Lisp ,Scheme ,Ocaml ,Standard ML ,ML
  Lenguajes Logicos
   Prolog
  Lenguajes orientados a objetos
   Action Script, Ada ,C++ , C# , VB.NET ,Visual FoxPro , Clarion , Delphi ,
   Harbour , Eiffel ,Java , JavaScript , Lexico (en castellano) , Objective-C, Ocaml
   , Oz , Perl ,PHP, PowerBuilder , Python.
1.4 Origen del Lenguaje C. El sistema
operativo UNIX

   C es un lenguaje de programación creado en 1969 por Ken Thompson
    y Dennis M. Ritchie en los Laboratorios Bell como evolución del
    anterior lenguaje B, a su vez basado en BCPL. Al igual que B, es un
    lenguaje orientado a la implementación de Sistemas Operativos,
    concretamente Unix. C es apreciado por la eficiencia del código que
    produce y es el lenguaje de programación más popular para crear
    software de sistemas, aunque también se utiliza para crear
    aplicaciones.
   Se trata de un lenguaje débilmente tipado de medio nivel pero con
    muchas características de bajo nivel. Dispone de las estructuras
    típicas de los lenguajes de alto nivel pero, a su vez, dispone de
    construcciones del lenguaje que permiten un control a muy bajo nivel.
    Los compiladores suelen ofrecer extensiones al lenguaje que
    posibilitan mezclar código en ensamblador con código C o acceder
    directamente a memoria o dispositivos periféricos.
C se desarrolló originalmente (conjuntamente con el sistema
   operativo Unix, con el que ha estado asociado mucho tiempo)
   por programadores para programadores. Sin embargo, ha
   alcanzado una popularidad enorme, y se ha usado en
   contextos muy alejados de la programación de sistemas, para
   la que se diseñó originalmente.
La versión original de Unix se desarrolló en lenguaje
   ensamblador. Más tarde, el lenguaje C se desarrolló para
   poder reescribir el sistema operativo.
En 1973, el lenguaje C se había vuelto tan potente que la mayor
   parte del kernel Unix, originalmente escrito en el lenguaje
   ensamblador PDP-11/20, fue reescrita en C. Éste fue uno de
   los primeros núcleos de sistema operativo implementados en
   un lenguaje distinto al ensamblador.
Programación


Se conoce como programación de computadoras a
  la implementación de un algoritmo en un
  determinado lenguaje de
  programación, conformando un programa.
Mientras que un algoritmo se ejecuta en una máquina
  abstracta que no tiene limitaciones de memoria o
  tiempo, un programa se ejecuta en una máquina
  real, que sí tiene esas limitaciones.
Objetivos de la programación
   Corrección: un programa es correcto si hace lo que debe hacer. Para
    determinar si un programa hace lo que debe es muy importante especificar
    claramente qué debe hacer el programa antes de desarrollarlo y una vez
    acabado compararlo con lo que realmente hace.
   Claridad: es muy importante que el programa sea lo más claro y legible
    posible para mejorar el mantenimiento del software.
     Cuando se acaba de escribir el código del programa, se deben buscar errores
    y corregirlos. Más luego, cuando el programa está concluido, es necesario
    hacerle ampliaciones o modificaciones, según la demanda de los usuarios.
   Eficiencia: debe consumir la menor cantidad de recursos posible.
    Normalmente al hablar de eficiencia se suele hacer referencia al consumo de
    tiempo y/o memoria.
La eficiencia y la claridad de un programa pueden ser objetivos contrapuestos: se
    puede conseguir mayor claridad sacrificando parte de la eficiencia o viceversa.
    Pero hay que tener en cuenta que el tiempo del programador es caro, y que
    hoy en día el precio de los ordenadores es razonable y cada vez son más
    baratos.
¿Qué es un programador de
computadoras?

Existen muchas definiciones para los programadores de
   computadoras, la mayoría de las cuales tienen que ver con
   conocimientos técnicos para diseñar, escribir, probar y
   documentar programas de software orientados a resolver
   problemas usando un lenguaje de programación y una
   computadora como herramientas.
Pero además, él o ella poseen la capacidad de resolver problemas
   y se deleitan al buscar soluciones particulares y toman como
   reto o juego intelectual el hacerlo. Explotan al máximo las
   capacidades de las computadoras, convirtiéndose en agentes
   de cambio en sus ambientes de trabajo al automatizar tareas
   manuales, repetitivas, tediosas, lentas o complejas.
Características de un buen
programador

   Capacidad analítica para comprender los problemas que se le
    planteen.
   Lógica y buen sentido común.
   Capacidad de observación.
   Espíritu autodidacta e investigativo.
   Habilidad para estructurar una serie de pasos que conduzcan a
    la solución de los problemas tomando en cuenta las
    capacidades y limitantes de la computadora.
    Podemos mencionar además de las anteriores otras
    características adicionales igualmente importantes que un
    programador debe poseer, tales como la constancia, la
    dedicación, la disciplina y el deseo de superación.
La actitud del programador es vital, pero las habilidades lo son más. Tener la
actitud no es lo mismo que ser competente, por tanto existen un cierto
conjunto de herramientas básicas que debes dominar



   Conocer y dominar conceptos básicos de informática (ordenador, hardware, software y
    su clasificaciones, datos, información, sus unidades de medida y los diferentes medios de
    almacenamiento de datos ).
   Aprender cómo aprovechar al máximo tu sistema operativo, sus capacidades y las del
    ordenador, en particular cómo administrar archivos, cómo ejecutar programas y utilizar los
    periféricos; debes además conocer cómo utilizar sus herramientas (utilerías de discos,
    editores de texto, calculadoras, programas de gráficos, administradores de impresión, etc.)
    y las facilidades que ofrece (multitarea, modos gráficos y modo texto, uso de ventanas,
    etc.).
   Consigue un inglés funcional, la mayoría de los lenguajes de programación incorporan
    en su sintaxis una gran cantidad de palabras inglesas, además, más de la mitad del
    contenido de la Red se encuentra en este idioma.
   conocer y dominar conceptos teóricos fundamentales de la programación tales como
    variables, constantes, tipos de datos, algoritmo, sentencias de control, flujogramación,
    programa, lenguajes de programación, estructuras de datos, compilación, traducción,
    además de tópicos relacionados tales como el ciclo de vida de los programas, estrategias
    de diseño y métodos de prueba de programas.

   Obtén el compilador de un lenguaje y aprende a programar en él. Estudia un lenguaje
    de programación. Aprende a programar en él. Usa las herramientas que ofrece y los
    conceptos de programación que implementa. Lee los ejemplos que traen los libros para
    comprenderlos y practica modificándolos.
Características de un buen programa.

   Confiabilidad, es decir, el programa debe funcionar
    en prácticamente cualquier situación.
   Debe advertir los errores de entrada comunes y
    obvios.
   Debe ser bien estructurado, es decir, que utilicen
    organizaciones de la programación estructurada.
   Estar adecuadamente documentado y ser
    comprensible, no sólo para quien lo crea, sino para
    otros programadores. Esto es para facilitar las
    futuras y muy posibles modificaciones que requiera.
Pasos para la creación de programas
Pasos de la Programación
                    Pasos                               Descripción

                                           Determinar objetivos, salida, entrada y
1.   Especificación
                                           requerimientos del programa

                                           Delinear los componentes y sus
2.   Diseño
                                           interfaces

                                           Generar el programa en un lenguaje
3.   Codificación
                                           de programación
                                           Verificar desempeño del programa,
4.   Prueba                                determinar errores de sintaxis y lógica


                                           Redactar documentación para
5.   Documentación                         usuarios y programadores


                                           Corrección de errores, ajustes por
6.   Mantenimiento                         nuevos cambios
Unidad II:
Conceptos Básicos de Programación.
Definición y descripción de algoritmos

Se denomina algoritmo a una serie finita de pasos o instrucciones mediante los
   cuales se resuelve un problema o se ejecuta una tarea específica. Más
   formalmente los algoritmos se caracterizan por:
      • Ser finitos, porque tienen un número determinado de pasos.
      • Ser definidos, lo que implica que cada vez que se siga se obtendrá
         invariablemente el mismo resultado.
      • Ser precisos, pues cada paso tiene un orden a seguir.
   Los algoritmos especifican los pasos (instrucciones) que permiten llegar a la
   solución de un problema, sin importar si el proceso es manual o automatizado.
   De modo que no se encuentran exclusivamente relacionados con la
   computación.
    En la vida cotidiana son empleados en diversas ocasiones. Por ejemplo, los
   pasos seguidos para retirar dinero de un cajero automático de un banco o
   cuando se sigue una receta de cocina. Se puede entenderlos entonces, como
   una especie de “receta” que indica los pasos que permiten alcanzar la solución
   de un problema.
Diagrama de flujo

"Es un esquema para representar gráficamente un
  algoritmo. Se basan en la utilización de diversos
  símbolos para representar operaciones específicas.
Se les llama diagramas de flujo porque los símbolos
  utilizados se conectan por medio de flechas para
  indicar la secuencia de operación.
Se utiliza principalmente en programación, economía y
  procesos industriales.
Simbología

     Inicio / Terminación. Este símbolo se utiliza para señalar el
     comienzo así como el final de un diagrama. Tradicionalmente
     se colocan las palabras “INICIO” ó “FIN” dentro de la figura para
     hacerlo más explícito.
     Es el único símbolo que solamente tiene una conexión (flecha)
     ya sea de salida, en el de inicio, o de entrada, para el de fin.


     Entrada de datos. En este símbolo se indican los valores
     iniciales que deberá recibir el proceso. Esto se hace
     asignándoles letras o nombres de variables para cada uno de
     los valores y anotando estas letras en el interior de la figura.
     Este símbolo siempre deberá tener al menos una conexión
     entrante (generalmente del inicio) y una de salida.
Proceso de datos. Este símbolo lo utilizaremos para señalar operaciones
matemáticas, aritméticas o procesos específicos que se realicen con nuestros datos.
La manera de anotar dichos procesos, puede ser mediante una descripción breve de la
operación o mediante una asignación de dicha operación hacia una variable como por
ejemplo: R ← A + B
Este símbolo siempre deberá tener al menos una conexión de entrada y una de salida.

 Decisión. Este símbolo nos representa una disyuntiva lógica o decisión. En su interior
se anota una instrucción o pregunta que pueda ser evaluada como cierta o falsa y que
determine el flujo del programa.
Este símbolo es el único que puede contener dos salidas y en cada una de las salidas
se suele poner un rótulo de “si/no” o “cierto/falso” indicando con esto cual de ellas se
tomará según el resultado de la evaluación de la función.
Es una buena práctica de diagramación utilizar siempre el mismo lado para los
positivos siempre que esto sea posible.
Desplegado de información. Este símbolo se utiliza
para mostrar un resultado, el cual puede representar la
solución al problema que se pretende resolver y que fue
conseguida a través del resto del diagrama.
Dentro de su interior se anotará la variable con el
resultado final o el mensaje que represente el resultado
del algoritmo.
Generalmente veremos este símbolo muy cerca del final
del proceso y precedido por el símbolo de terminación.
Este símbolo siempre deberá tener al menos una
conexión de entrada y una de salida.
Ejemplo de un diagrama de flujo simple

                                 diferentes
Ejercicios propuestos
1.   Hacer un diagrama para calcular el área de un triángulo.

2.   Hacer un diagrama para convertir de grados centígrados a grados Fahrenheit.

3.   Hacer un diagrama para imprimir la suma de los números del 1 al 100.

4.   Hacer un diagrama que te pida un número y te diga si es par, es non y/o es primo.

5.   Hacer un diagrama para imprimir la sucesión de Fibonacci.

6.   Hacer un diagrama que pida 10 números y muestre el promedio.

7.   Hacer un diagrama que pida 3 números y diga cual es el mayor.

8.   Hacer un diagrama que pida la edad y despliegue si es menor de edad (<18), mayor
     (>=18) o si pertenece a la 3ª edad.(>=60)
Ejercicios propuestos (cont.)

   Hacer un diagrama para calcular el factorial de un número.

   Hacer un diagrama que calcule e imprima N números primos.

   Hacer un diagrama que solicite 4 calificaciones y diga si está
    reprobado o no, según las reglas de tu escuela.

   Hacer un diagrama que pida un número N y despliegue todas
    las combinaciones de dos números que sumados den N.

   Hacer un diagrama que despliegue la tabla de multiplicar de un
    número X.
Ejercicio No. 1

Diseñar un diagrama de flujo para calcular y mostrar el área de un triángulo.
El diagrama deberá de solicitar los datos necesarios y mostrar el resultado.
Ejercicio No. 2

Diseñar un diagrama de flujo para convertir de grados centígrados a grados
Fahrenheit.
El diagrama deberá de solicitar los datos necesarios y mostrar el resultado.
Ejercicio No. 4

Diseñar un diagrama de flujo que solicite un número y determine si este es
par o es non.
Variables
Las variables son los “contenedores” de los datos que se van a
   procesar, son un elemento común en la mayor parte de los lenguajes
   de computación. Físicamente, las variables son áreas designadas de
   memoria en donde se guarda el valor del dato. Supongamos que se
   escribe un programa en el cual se solicitan sueldos de empleados. Se
   debe contar con una variable que guarde ese dato. Puede escogerse
   nombrarla, por ejemplo, v_sueldo.
   Cuando, a solicitud del programa, el usuario introduce un número, ese
   dato se convierte en el valor de la variable v_sueldo. Entonces de
   manera semejante como en álgebra o física, las variables pueden ser
   usadas en programación para realizar operaciones de informática. Si
   el programa indica la declaración v_sueldo + 500 y el valor en
   v_sueldo = 1.000, el resultado para esta declaración va a ser 1.500.
c
i
A continuación se presenta como ejemplo un sencillo programa fuente, escrito en C, y justo al lado se
ó
explica la acción que realizará la computadora en respuesta a los comandos del programa.
n
El programa tiene como finalidad el cálculo del promedio de una lista de cinco números.
 q
           Instrucciones en Lenguaje C                            Acción de la computadora
 u
                                            1.- Define una matriz (datos) de números enteros y le asigna los
 e
int datos[ ] = { 25, 88, 20, 75, 62 };
                                                 valores 25, 88, 20, 75, 62.

int nDatos = 5;                             2.- Define la variable (nDatos) de tipo entero y le asigna el valor 5.
 r
                                            3.- Define la función (promedio) que devuelve un número entero.
 e
int promedio ()

{a
 l int suma;                                4.- Define la variable (suma) de tipo entero.
 i int prom;                                5.- Define la variable (prom) de tipo entero.
 zint cont;                                 6.- Define la variable (cont) de tipo entero.
 asuma = 0;                                 7.- Asigna a suma el valor 0.
 r                                          8.- Para cada elemento de la matriz datos, añade su valor a la
   for (cont=0; cont<nDatos; cont++)
 á                                               variable suma.
    {

l   suma += datos [cont];

a   }
                                            9.- Asigna a prom el resultado de dividir la variable suma por la
 prom=suma/nDatos;
                                                 variable nDatos.
c
                                            10.- Devuelve como resultado de la función el contenido de la variable
oreturn (prom);                                  prom.
m
}

Contenu connexe

Tendances

Generaciones del computador
Generaciones del computadorGeneraciones del computador
Generaciones del computador
galarzac
 
Generaciones de-la-computadora1
Generaciones de-la-computadora1Generaciones de-la-computadora1
Generaciones de-la-computadora1
Omal Ewe Perez
 

Tendances (17)

Quinta y Sexta Generacion
Quinta y Sexta GeneracionQuinta y Sexta Generacion
Quinta y Sexta Generacion
 
Informatica
InformaticaInformatica
Informatica
 
Del abaco al ordenador
Del abaco al ordenadorDel abaco al ordenador
Del abaco al ordenador
 
O.segovia generaciones
O.segovia generacionesO.segovia generaciones
O.segovia generaciones
 
Generaciones de las computadoras
Generaciones de las computadorasGeneraciones de las computadoras
Generaciones de las computadoras
 
Desarrollo de aplicaciones móviles
Desarrollo de aplicaciones móvilesDesarrollo de aplicaciones móviles
Desarrollo de aplicaciones móviles
 
wordutpl2010
wordutpl2010wordutpl2010
wordutpl2010
 
Generaciones del computador
Generaciones del computadorGeneraciones del computador
Generaciones del computador
 
Generaciones de-la-computadora1
Generaciones de-la-computadora1Generaciones de-la-computadora1
Generaciones de-la-computadora1
 
Generaciones de-la-computadora1
Generaciones de-la-computadora1Generaciones de-la-computadora1
Generaciones de-la-computadora1
 
Generacion de computadoras
Generacion de computadorasGeneracion de computadoras
Generacion de computadoras
 
Evolucion
Evolucion Evolucion
Evolucion
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Computacion creativa
Computacion creativaComputacion creativa
Computacion creativa
 
Sis operativos
Sis operativosSis operativos
Sis operativos
 
Generaciónes
GeneraciónesGeneraciónes
Generaciónes
 
Historia del pc
Historia del pcHistoria del pc
Historia del pc
 

En vedette

02 Ejercicios Resueltos diagramas de flujo
02 Ejercicios Resueltos diagramas de flujo02 Ejercicios Resueltos diagramas de flujo
02 Ejercicios Resueltos diagramas de flujo
Tete Alar
 
Introducción a La Programación En C
Introducción a La Programación En CIntroducción a La Programación En C
Introducción a La Programación En C
painni
 
Tablas de multiplicar en diagrama de flujo
Tablas de multiplicar en diagrama de flujoTablas de multiplicar en diagrama de flujo
Tablas de multiplicar en diagrama de flujo
Diana Florez
 
EJERCICIOS DE ALGORITMOS
EJERCICIOS DE ALGORITMOSEJERCICIOS DE ALGORITMOS
EJERCICIOS DE ALGORITMOS
1002pc3
 
Algoritmos+y+flujogramas
Algoritmos+y+flujogramasAlgoritmos+y+flujogramas
Algoritmos+y+flujogramas
luis840
 
Problemas,algoritmos y diagramas de flujo.
Problemas,algoritmos y diagramas de flujo.Problemas,algoritmos y diagramas de flujo.
Problemas,algoritmos y diagramas de flujo.
Arturo Perez Murrieta
 
Ejemplos de Algoritmos
Ejemplos de AlgoritmosEjemplos de Algoritmos
Ejemplos de Algoritmos
Pepe Xdsasda
 

En vedette (20)

02 Ejercicios Resueltos diagramas de flujo
02 Ejercicios Resueltos diagramas de flujo02 Ejercicios Resueltos diagramas de flujo
02 Ejercicios Resueltos diagramas de flujo
 
Diagrama de Flujos Ejemplos.
Diagrama de Flujos Ejemplos.Diagrama de Flujos Ejemplos.
Diagrama de Flujos Ejemplos.
 
Curso c ii
Curso c iiCurso c ii
Curso c ii
 
Curso c ii
Curso c iiCurso c ii
Curso c ii
 
Introducción a La Programación En C
Introducción a La Programación En CIntroducción a La Programación En C
Introducción a La Programación En C
 
Picaxe
PicaxePicaxe
Picaxe
 
Introduccion Lenguaje C Blanca
Introduccion Lenguaje  C BlancaIntroduccion Lenguaje  C Blanca
Introduccion Lenguaje C Blanca
 
Algoritmo figuras geometricas_doc
Algoritmo figuras geometricas_docAlgoritmo figuras geometricas_doc
Algoritmo figuras geometricas_doc
 
Tablas de multiplicar en diagrama de flujo
Tablas de multiplicar en diagrama de flujoTablas de multiplicar en diagrama de flujo
Tablas de multiplicar en diagrama de flujo
 
Tema 3 algoritmos del análisis
Tema 3  algoritmos del análisisTema 3  algoritmos del análisis
Tema 3 algoritmos del análisis
 
Algoritmos, tablas de multiplicar
Algoritmos, tablas de multiplicarAlgoritmos, tablas de multiplicar
Algoritmos, tablas de multiplicar
 
Pruebas de escritorio
Pruebas de escritorioPruebas de escritorio
Pruebas de escritorio
 
EJERCICIOS DE ALGORITMOS
EJERCICIOS DE ALGORITMOSEJERCICIOS DE ALGORITMOS
EJERCICIOS DE ALGORITMOS
 
Guia informática 2 contestada
Guia informática 2   contestadaGuia informática 2   contestada
Guia informática 2 contestada
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
 
Algoritmos+y+flujogramas
Algoritmos+y+flujogramasAlgoritmos+y+flujogramas
Algoritmos+y+flujogramas
 
52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo
 
Problemas,algoritmos y diagramas de flujo.
Problemas,algoritmos y diagramas de flujo.Problemas,algoritmos y diagramas de flujo.
Problemas,algoritmos y diagramas de flujo.
 
Ejemplos de Algoritmos
Ejemplos de AlgoritmosEjemplos de Algoritmos
Ejemplos de Algoritmos
 
Visual Design with Data
Visual Design with DataVisual Design with Data
Visual Design with Data
 

Similaire à Introduccion a lenguaje_c

historia de las Computadoras
historia de las Computadorashistoria de las Computadoras
historia de las Computadoras
Rhaquel
 
Linea de tiempo de sistemas operativos
Linea de tiempo de sistemas operativosLinea de tiempo de sistemas operativos
Linea de tiempo de sistemas operativos
Miguel Magaña
 
Recopilacion de aso
Recopilacion de asoRecopilacion de aso
Recopilacion de aso
arayzu
 
Historia De Las Computadoras Ii
Historia De Las Computadoras IiHistoria De Las Computadoras Ii
Historia De Las Computadoras Ii
guestd20032
 
Historia y evolucion de los sistemas op.
Historia y evolucion de los sistemas op.Historia y evolucion de los sistemas op.
Historia y evolucion de los sistemas op.
Viniciomarcos
 
Generacion citterio y carrasquero 7c
Generacion citterio y carrasquero 7cGeneracion citterio y carrasquero 7c
Generacion citterio y carrasquero 7c
martinavictorias
 

Similaire à Introduccion a lenguaje_c (20)

RecopilacionASO
RecopilacionASORecopilacionASO
RecopilacionASO
 
1.antecedentes de la computadora y sistemas operativos
1.antecedentes de la computadora y sistemas operativos1.antecedentes de la computadora y sistemas operativos
1.antecedentes de la computadora y sistemas operativos
 
Lujan vera
Lujan vera Lujan vera
Lujan vera
 
La historia de la computación
La historia de la computaciónLa historia de la computación
La historia de la computación
 
Antecedentes de la computadora y sistemas operativos
Antecedentes de la computadora y sistemas operativosAntecedentes de la computadora y sistemas operativos
Antecedentes de la computadora y sistemas operativos
 
Historia de los computadores 1
Historia de los computadores 1Historia de los computadores 1
Historia de los computadores 1
 
historia de las Computadoras
historia de las Computadorashistoria de las Computadoras
historia de las Computadoras
 
Hiatoria de las Computadoras
Hiatoria de las ComputadorasHiatoria de las Computadoras
Hiatoria de las Computadoras
 
Linea de tiempo de sistemas operativos
Linea de tiempo de sistemas operativosLinea de tiempo de sistemas operativos
Linea de tiempo de sistemas operativos
 
Recopilacion de aso
Recopilacion de asoRecopilacion de aso
Recopilacion de aso
 
Historia De Las Computadoras Ii
Historia De Las Computadoras IiHistoria De Las Computadoras Ii
Historia De Las Computadoras Ii
 
tarea
tarea tarea
tarea
 
Historia de los computadores
Historia  de los computadoresHistoria  de los computadores
Historia de los computadores
 
Evaluacion primer quimestre genesis troya
Evaluacion primer quimestre genesis troyaEvaluacion primer quimestre genesis troya
Evaluacion primer quimestre genesis troya
 
sistemas operativos
sistemas operativossistemas operativos
sistemas operativos
 
Historia y evolucion de los sistemas op.
Historia y evolucion de los sistemas op.Historia y evolucion de los sistemas op.
Historia y evolucion de los sistemas op.
 
Generaciones de sistemas operativos RAFA CUESTA
Generaciones de sistemas operativos RAFA CUESTAGeneraciones de sistemas operativos RAFA CUESTA
Generaciones de sistemas operativos RAFA CUESTA
 
Generacion citterio y carrasquero 7c
Generacion citterio y carrasquero 7cGeneracion citterio y carrasquero 7c
Generacion citterio y carrasquero 7c
 
Historia de la generacion de los ordenadores
Historia de la generacion de los ordenadoresHistoria de la generacion de los ordenadores
Historia de la generacion de los ordenadores
 
Historia
HistoriaHistoria
Historia
 

Plus de Clariza

Educacion comercial
Educacion comercialEducacion comercial
Educacion comercial
Clariza
 
Revolucion abril
Revolucion abrilRevolucion abril
Revolucion abril
Clariza
 
Conciliacion
ConciliacionConciliacion
Conciliacion
Clariza
 
Arreglos
ArreglosArreglos
Arreglos
Clariza
 
Estructuras de seleccion
Estructuras de seleccionEstructuras de seleccion
Estructuras de seleccion
Clariza
 
Pseudocodigos
PseudocodigosPseudocodigos
Pseudocodigos
Clariza
 
Algoritmos y diagramas_de_flujo
Algoritmos y diagramas_de_flujoAlgoritmos y diagramas_de_flujo
Algoritmos y diagramas_de_flujo
Clariza
 
Programacion lenguaje-c
Programacion lenguaje-cProgramacion lenguaje-c
Programacion lenguaje-c
Clariza
 
La Taxonomia De Anderson Krathwohl 2001
La Taxonomia De Anderson Krathwohl 2001 La Taxonomia De Anderson Krathwohl 2001
La Taxonomia De Anderson Krathwohl 2001
Clariza
 
SíMbolos Del Diccionario De Datos
SíMbolos Del Diccionario De DatosSíMbolos Del Diccionario De Datos
SíMbolos Del Diccionario De Datos
Clariza
 
Bienvenida 2009 2010
Bienvenida 2009 2010Bienvenida 2009 2010
Bienvenida 2009 2010
Clariza
 

Plus de Clariza (11)

Educacion comercial
Educacion comercialEducacion comercial
Educacion comercial
 
Revolucion abril
Revolucion abrilRevolucion abril
Revolucion abril
 
Conciliacion
ConciliacionConciliacion
Conciliacion
 
Arreglos
ArreglosArreglos
Arreglos
 
Estructuras de seleccion
Estructuras de seleccionEstructuras de seleccion
Estructuras de seleccion
 
Pseudocodigos
PseudocodigosPseudocodigos
Pseudocodigos
 
Algoritmos y diagramas_de_flujo
Algoritmos y diagramas_de_flujoAlgoritmos y diagramas_de_flujo
Algoritmos y diagramas_de_flujo
 
Programacion lenguaje-c
Programacion lenguaje-cProgramacion lenguaje-c
Programacion lenguaje-c
 
La Taxonomia De Anderson Krathwohl 2001
La Taxonomia De Anderson Krathwohl 2001 La Taxonomia De Anderson Krathwohl 2001
La Taxonomia De Anderson Krathwohl 2001
 
SíMbolos Del Diccionario De Datos
SíMbolos Del Diccionario De DatosSíMbolos Del Diccionario De Datos
SíMbolos Del Diccionario De Datos
 
Bienvenida 2009 2010
Bienvenida 2009 2010Bienvenida 2009 2010
Bienvenida 2009 2010
 

Dernier

6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
Wilian24
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 

Dernier (20)

PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
Los dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la VerdadLos dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la Verdad
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdf
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptx
 
Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
PLAN LECTOR 2024 integrado nivel inicial-miercoles 10.pptx
PLAN LECTOR 2024  integrado nivel inicial-miercoles 10.pptxPLAN LECTOR 2024  integrado nivel inicial-miercoles 10.pptx
PLAN LECTOR 2024 integrado nivel inicial-miercoles 10.pptx
 

Introduccion a lenguaje_c

  • 1. Introducción a la Programación ISC-206 Prof. Clariza Rosario
  • 3. 1.1 Breve historia sobre la Computación A lo largo de la historia el hombre fue resolviendo sus necesidades de registro, para llevar la cuenta de sus bienes y efectuar las operaciones necesarias para la permuta o la venta de los mismos. Fue ideando métodos ágiles de cálculos, tales como contar con los elementos que les proporcionaba la naturaleza, por ejemplo: dedos, piedras, nudos en la soga, etc. Partiendo de la idea de contar con los dedos, los pueblos primitivos tomaron como base de sus cálculos el número 10, pero no todos tomaron el mismo sistema, los mayas calculaban en base al 20, los babilonios en base al 60, y los esquimales en base al 5, etc. En la medida que el hombre acumulaba un mayor número de posesiones, aumentaba la tarea de contar. El mundo antiguo iniciaba su expansión y los comerciantes compraban, vendían, efectuaban trueques, inventariaban, necesitaban un dispositivo para recoger información y obtener resultados exactos. Uno de los dispositivos mecánicos primitivos de cálculos fue el contador de arena de los egipcios, que consistía en surco en la arena donde colocaban piedras o guijarros.
  • 4. Todo el desarrollo de las computadoras suele divisarse por generaciones y el criterio que se determinó para determinar el cambio de generación no está muy bien definido, pero resulta aparente que deben cumplirse al menos los siguientes requisitos: – La forma en que están construidas. – Forma en que el ser humano se comunica con ellas.
  • 5. Primera Generación de Computadores En esta generación había un Características: gran desconocimiento de las  Estaban construidas por capacidades de las medio de tubos de vacío. computadoras, puesto que  Eran programadas en se realizó un estudio en esta lenguaje de máquina. época que determinó que con veinte computadoras se  Grandes y costosas (aprox. saturaría el mercado de los de ciento de miles de Estados Unidos en el campo dólares). de procesamiento de datos. Esta generación abarco la década de los cincuenta. Computadoras: IBM 701, IBM 650, UNIVAC 80 y 90, las IBM 704 y 709, Burroughs 220 y UNIVAC 1105.
  • 6. Segunda Generación de Computadores. Características : Cerca de la década de 1960, las  Están construidas con circuitos de computadoras seguían transistores. evolucionando, se reducía su  Se programan en nuevos lenguajes tamaño y crecía su capacidad de llamados lenguajes de alto nivel. procesamiento. También en esta  Mayor adaptación al equipo. época se empezó a definir la forma de comunicarse con las  Posibilidad de obtener la máxima computadoras, que recibía el velocidad con mínimo uso de nombre de programación de memoria sistemas. Las computadoras representativas de esta generación fueron: la Philco 212, UNIVAC M460, la Control Data Corporation modelo 1604, seguida por la serie 3000, la IBM 7090 y la NCR 315.
  • 7. Tercera generación de Computadores Tecnológicamente, la tercera Características : generación de computadores  Su fabricación electrónica esta se caracteriza por la utilización basada en circuitos integrados de circuitos integrados SSI (chips). (pequeña escala de  Su manejo es por medio de los integración) y MSI (media lenguajes de control de los escala de sistemas operativos. integración), reemplazando a los circuitos de transistores directos, y consiguiéndose así una reducción significativa en coste y tamaño físico. También poco a poco se fueron imponiendo las memorias realizadas con circuitos integrados, desplazando a las memorias de núcleos de ferrita.
  • 8. Cuarta Generación de Computadores La época se refiere principalmente Características : a las computadoras de 1980 y  Microchips continúa hasta la fecha. Aparecen los  Difusión de sistemas operativos microprocesadores, un gran estándar, no dependientes adelanto de la microelectrónica, directamente de los que son circuitos integrados de constructores del hardware alta densidad y con una (Unix, MS-DOS y OS-DOS) velocidad impresionante. Surge el concepto de <sistemas abiertos>, donde el usuario puede configurar su sistema prácticamente a medida, adquiriendo software, impresoras, unidades de disco, etc. de <terceros> fabricantes.
  • 9. Quinta Generación de Computadores. El termino quinta generación fue Características : acuñado por los japoneses para describir las potentes e  Procesamiento en paralelo "inteligentes" computadoras mediante arquitecturas y que deseaban producir a diseños especiales y circuitos mediados de los noventa. La de gran velocidad. meta es organizar sistemas de  Manejo de lenguaje natural y computación que produzcan sistemas de inteligencia inferencias y no solamente artificial. realicen cálculos. En el proceso se han incorporado muchos campos de investigación en la industria de la computación, como la inteligencia artificial, los sistemas expertos y el lenguaje natural.
  • 10. 1.2 Evolución de los lenguajes de programación Con la llegada de las computadoras aparecen las secuencias de posiciones de llaves eléctricas que debían conectarse para obtener una acción determinada, una llave conectada era un 1 y una llave desconectada era un 0. Una sucesión de llaves en cualquiera de sus dos posiciones definía una secuencia de ceros y unos (por ejemplo: 0100011010011101...) que venía a representar una instrucción o un conjunto de instrucciones (programa) para el computador en el que se estaba trabajando. A esta primera forma de especificar programas para una computadora se la denomina lenguaje máquina.
  • 11. La necesidad de recordar secuencias de programación para las acciones usuales llevó a denominarlas con nombres fáciles de memorizar y asociar: ADD (sumar), SUB (restar), MUL (multiplicar), CALL (ejectuar subrutina), etc. A esta secuencia de posiciones se le denominó "instrucciones", y a este conjunto de instrucciones se le llamó lenguaje ensamblador. Posteriormente aparecieron diferentes lenguajes de programación, los cuales reciben su denominación porque tienen una estructura sintáctica similar a los lenguajes escritos por los humanos.
  • 12. e l e n g Las cinco generaciones de lenguajes u de programación a j e s Generación Nombre Particularidad d Primera Específico para cada microprocesador, uso de De máquina e código binario Uso de nemotécnicos que abstraen del p Segunda Ensamblador lenguaje máquina. r o Lenguajes estructurados con comandos Tercera De procedimientos g cercanos al lenguaje común. r a Cuarta Programas orientados a problemas Orientados a objetos m específicos. a Incluye inteligencia artificial y sistemas c Quinta Natural expertos. i
  • 13. Muestra de código de máquina y lenguaje assembler del Intel 8088. El código de máquina se resalta en rojo, el código assembler en magenta y las direcciones de memoria donde se encuentra el código, en azul.
  • 14. Entre los lenguajes de tercera generación se incluyen: FORTRAN (Formula TRANslator), diseñado específicamente para programas matemáticos y de ingeniería. COBOL (Common Business Oriented Languaje) desarrollado en 1960, ganó amplia aceptación como lenguaje estandarizado llegándose a utilizar ampliamente en los negocios. BASIC (Begginners Allpurpose Symbolic Instruction Code) Fue desarrollado por Jhon Kemeny y Thomas Kurtz en 1964. Por su simplicidad se volvió ampliamente popular y usado en educación y entre los programadores aficionados. PASCAL, nombrado en honor del inventor francés Blas Pascal, es introducido por Niklaus Wirth en 1971. El Pascal, buscaba superar las limitaciones de los otros lenguajes de programación y demostrar la manera adecuada de implementar un lenguaje de cómputo. C, desarrollado a principios de los sesenta por Brian Kernighan y Dennis Ritchie. El C es poderoso, puesto que brinda la libertad de conseguir que se realice casi cualquier cosa en una computadora. C++, Es un lenguaje de principios de los ochenta desarrollado por Bjarne Stroustrup. Es extremadamente poderoso y eficiente igual que el C. Java (1991) es desarrollado por Sun Microsistema. Cuando Internet comenzó a ganar popularidad como red de comunicaciones a mediados de los noventa, Sun redirige a Java para convertirlo en un ambiente de programación que permitiese crear sistemas interactivos y dinámicos (denominados applets) para las páginas Web.
  • 15. Entre los programas de cuarta generación se tienen:  Los programas de ambientes visuales: Existen versiones de programas populares como el Visual BASIC o el Visual C, PHP, Java, los cuales, soportan características y métodos orientados a objetos y que permiten crear programas en un ambiente visual.
  • 16. Clasificación de los lenguajes de programación  Según el nivel de abstracción,  Según la forma de ejecución, y  Según el paradigma de programación que poseen cada uno de ellos.
  • 17. Según su nivel de abstracción  Lenguajes de bajo nivel Los lenguajes de bajo nivel son lenguajes de programación que se acercan al funcionamiento de una computadora. El lenguaje de más bajo nivel es, por excelencia, el código máquina. A éste le sigue el lenguaje ensamblador.  Lenguajes de medio nivel Tal es el caso del lenguaje C, entre otros, que tiene ciertas características que lo acercan a los lenguajes de bajo nivel pero, al mismo tiempo, ciertas cualidades que lo hacen un lenguaje más cercano al humano y, por tanto, de alto nivel.  Lenguajes de alto nivel Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales, como el inglés. En BASIC, el lenguaje de alto nivel más conocido, los comandos como "IF CONTADOR = 10 THEN STOP" pueden utilizarse para pedir a la computadora que pare si CONTADOR es igual a 10.
  • 18. Ejemplo Lenguaje de Alto nivel
  • 19.
  • 20. Según la forma de ejecución  Lenguajes compilados Los compiladores son aquellos cuya función es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda (lenguaje máquina con código binario). Al usar un lenguaje compilado (p. e. los lenguajes del popular Visual Studio de Microsoft), el programa desarrollado nunca se ejecuta mientras haya errores.  Lenguajes interpretados Una alternativa diferente para traducir lenguajes de alto nivel. En vez de traducir el programa fuente y grabar en forma permanente el código objeto que se produce durante la corrida de compilación para utilizarlo en una corrida de producción futura, el programador sólo carga el programa fuente en la computadora junto con los datos que se van a procesar. A continuación, un programa intérprete, almacenado en el sistema operativo del disco, convierte cada proposición del programa fuente en lenguaje de máquina conforme vaya siendo necesario durante el proceso de los datos. No se graba el código objeto para utilizarlo posteriormente. La siguiente vez que se utilice una instrucción, se le debe interpretar otra vez y traducir a lenguaje máquina. lo cual hace que el programa sea más lento en tiempo de ejecución (porque se va revisando el código en tiempo de ejecución) pero más rápido en tiempo de diseño (porque no se tiene que estar compilando a cada momento el código completo).
  • 22. Según el paradigma de programación Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. No es mejor uno que otro sino que cada uno tiene ventajas y desventajas. También hay situaciones donde un paradigma resulta más apropiado que otro. Atendiendo al paradigma de programación, se pueden clasificar los lenguajes en :  Lenguajes imperativos BASIC,C ,C++ ,Java ,C# ,Perl  Lenguajes Funcionales – Puros: Haskell ,Miranda – Híbridos: Lisp ,Scheme ,Ocaml ,Standard ML ,ML  Lenguajes Logicos Prolog  Lenguajes orientados a objetos Action Script, Ada ,C++ , C# , VB.NET ,Visual FoxPro , Clarion , Delphi , Harbour , Eiffel ,Java , JavaScript , Lexico (en castellano) , Objective-C, Ocaml , Oz , Perl ,PHP, PowerBuilder , Python.
  • 23. 1.4 Origen del Lenguaje C. El sistema operativo UNIX  C es un lenguaje de programación creado en 1969 por Ken Thompson y Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL. Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos, concretamente Unix. C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones.  Se trata de un lenguaje débilmente tipado de medio nivel pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos.
  • 24. C se desarrolló originalmente (conjuntamente con el sistema operativo Unix, con el que ha estado asociado mucho tiempo) por programadores para programadores. Sin embargo, ha alcanzado una popularidad enorme, y se ha usado en contextos muy alejados de la programación de sistemas, para la que se diseñó originalmente. La versión original de Unix se desarrolló en lenguaje ensamblador. Más tarde, el lenguaje C se desarrolló para poder reescribir el sistema operativo. En 1973, el lenguaje C se había vuelto tan potente que la mayor parte del kernel Unix, originalmente escrito en el lenguaje ensamblador PDP-11/20, fue reescrita en C. Éste fue uno de los primeros núcleos de sistema operativo implementados en un lenguaje distinto al ensamblador.
  • 25. Programación Se conoce como programación de computadoras a la implementación de un algoritmo en un determinado lenguaje de programación, conformando un programa. Mientras que un algoritmo se ejecuta en una máquina abstracta que no tiene limitaciones de memoria o tiempo, un programa se ejecuta en una máquina real, que sí tiene esas limitaciones.
  • 26. Objetivos de la programación  Corrección: un programa es correcto si hace lo que debe hacer. Para determinar si un programa hace lo que debe es muy importante especificar claramente qué debe hacer el programa antes de desarrollarlo y una vez acabado compararlo con lo que realmente hace.  Claridad: es muy importante que el programa sea lo más claro y legible posible para mejorar el mantenimiento del software. Cuando se acaba de escribir el código del programa, se deben buscar errores y corregirlos. Más luego, cuando el programa está concluido, es necesario hacerle ampliaciones o modificaciones, según la demanda de los usuarios.  Eficiencia: debe consumir la menor cantidad de recursos posible. Normalmente al hablar de eficiencia se suele hacer referencia al consumo de tiempo y/o memoria. La eficiencia y la claridad de un programa pueden ser objetivos contrapuestos: se puede conseguir mayor claridad sacrificando parte de la eficiencia o viceversa. Pero hay que tener en cuenta que el tiempo del programador es caro, y que hoy en día el precio de los ordenadores es razonable y cada vez son más baratos.
  • 27. ¿Qué es un programador de computadoras? Existen muchas definiciones para los programadores de computadoras, la mayoría de las cuales tienen que ver con conocimientos técnicos para diseñar, escribir, probar y documentar programas de software orientados a resolver problemas usando un lenguaje de programación y una computadora como herramientas. Pero además, él o ella poseen la capacidad de resolver problemas y se deleitan al buscar soluciones particulares y toman como reto o juego intelectual el hacerlo. Explotan al máximo las capacidades de las computadoras, convirtiéndose en agentes de cambio en sus ambientes de trabajo al automatizar tareas manuales, repetitivas, tediosas, lentas o complejas.
  • 28. Características de un buen programador  Capacidad analítica para comprender los problemas que se le planteen.  Lógica y buen sentido común.  Capacidad de observación.  Espíritu autodidacta e investigativo.  Habilidad para estructurar una serie de pasos que conduzcan a la solución de los problemas tomando en cuenta las capacidades y limitantes de la computadora. Podemos mencionar además de las anteriores otras características adicionales igualmente importantes que un programador debe poseer, tales como la constancia, la dedicación, la disciplina y el deseo de superación.
  • 29. La actitud del programador es vital, pero las habilidades lo son más. Tener la actitud no es lo mismo que ser competente, por tanto existen un cierto conjunto de herramientas básicas que debes dominar  Conocer y dominar conceptos básicos de informática (ordenador, hardware, software y su clasificaciones, datos, información, sus unidades de medida y los diferentes medios de almacenamiento de datos ).  Aprender cómo aprovechar al máximo tu sistema operativo, sus capacidades y las del ordenador, en particular cómo administrar archivos, cómo ejecutar programas y utilizar los periféricos; debes además conocer cómo utilizar sus herramientas (utilerías de discos, editores de texto, calculadoras, programas de gráficos, administradores de impresión, etc.) y las facilidades que ofrece (multitarea, modos gráficos y modo texto, uso de ventanas, etc.).  Consigue un inglés funcional, la mayoría de los lenguajes de programación incorporan en su sintaxis una gran cantidad de palabras inglesas, además, más de la mitad del contenido de la Red se encuentra en este idioma.  conocer y dominar conceptos teóricos fundamentales de la programación tales como variables, constantes, tipos de datos, algoritmo, sentencias de control, flujogramación, programa, lenguajes de programación, estructuras de datos, compilación, traducción, además de tópicos relacionados tales como el ciclo de vida de los programas, estrategias de diseño y métodos de prueba de programas.  Obtén el compilador de un lenguaje y aprende a programar en él. Estudia un lenguaje de programación. Aprende a programar en él. Usa las herramientas que ofrece y los conceptos de programación que implementa. Lee los ejemplos que traen los libros para comprenderlos y practica modificándolos.
  • 30. Características de un buen programa.  Confiabilidad, es decir, el programa debe funcionar en prácticamente cualquier situación.  Debe advertir los errores de entrada comunes y obvios.  Debe ser bien estructurado, es decir, que utilicen organizaciones de la programación estructurada.  Estar adecuadamente documentado y ser comprensible, no sólo para quien lo crea, sino para otros programadores. Esto es para facilitar las futuras y muy posibles modificaciones que requiera.
  • 31. Pasos para la creación de programas
  • 32. Pasos de la Programación Pasos Descripción Determinar objetivos, salida, entrada y 1. Especificación requerimientos del programa Delinear los componentes y sus 2. Diseño interfaces Generar el programa en un lenguaje 3. Codificación de programación Verificar desempeño del programa, 4. Prueba determinar errores de sintaxis y lógica Redactar documentación para 5. Documentación usuarios y programadores Corrección de errores, ajustes por 6. Mantenimiento nuevos cambios
  • 33. Unidad II: Conceptos Básicos de Programación.
  • 34. Definición y descripción de algoritmos Se denomina algoritmo a una serie finita de pasos o instrucciones mediante los cuales se resuelve un problema o se ejecuta una tarea específica. Más formalmente los algoritmos se caracterizan por: • Ser finitos, porque tienen un número determinado de pasos. • Ser definidos, lo que implica que cada vez que se siga se obtendrá invariablemente el mismo resultado. • Ser precisos, pues cada paso tiene un orden a seguir. Los algoritmos especifican los pasos (instrucciones) que permiten llegar a la solución de un problema, sin importar si el proceso es manual o automatizado. De modo que no se encuentran exclusivamente relacionados con la computación. En la vida cotidiana son empleados en diversas ocasiones. Por ejemplo, los pasos seguidos para retirar dinero de un cajero automático de un banco o cuando se sigue una receta de cocina. Se puede entenderlos entonces, como una especie de “receta” que indica los pasos que permiten alcanzar la solución de un problema.
  • 35. Diagrama de flujo "Es un esquema para representar gráficamente un algoritmo. Se basan en la utilización de diversos símbolos para representar operaciones específicas. Se les llama diagramas de flujo porque los símbolos utilizados se conectan por medio de flechas para indicar la secuencia de operación. Se utiliza principalmente en programación, economía y procesos industriales.
  • 36. Simbología Inicio / Terminación. Este símbolo se utiliza para señalar el comienzo así como el final de un diagrama. Tradicionalmente se colocan las palabras “INICIO” ó “FIN” dentro de la figura para hacerlo más explícito. Es el único símbolo que solamente tiene una conexión (flecha) ya sea de salida, en el de inicio, o de entrada, para el de fin. Entrada de datos. En este símbolo se indican los valores iniciales que deberá recibir el proceso. Esto se hace asignándoles letras o nombres de variables para cada uno de los valores y anotando estas letras en el interior de la figura. Este símbolo siempre deberá tener al menos una conexión entrante (generalmente del inicio) y una de salida.
  • 37. Proceso de datos. Este símbolo lo utilizaremos para señalar operaciones matemáticas, aritméticas o procesos específicos que se realicen con nuestros datos. La manera de anotar dichos procesos, puede ser mediante una descripción breve de la operación o mediante una asignación de dicha operación hacia una variable como por ejemplo: R ← A + B Este símbolo siempre deberá tener al menos una conexión de entrada y una de salida. Decisión. Este símbolo nos representa una disyuntiva lógica o decisión. En su interior se anota una instrucción o pregunta que pueda ser evaluada como cierta o falsa y que determine el flujo del programa. Este símbolo es el único que puede contener dos salidas y en cada una de las salidas se suele poner un rótulo de “si/no” o “cierto/falso” indicando con esto cual de ellas se tomará según el resultado de la evaluación de la función. Es una buena práctica de diagramación utilizar siempre el mismo lado para los positivos siempre que esto sea posible.
  • 38. Desplegado de información. Este símbolo se utiliza para mostrar un resultado, el cual puede representar la solución al problema que se pretende resolver y que fue conseguida a través del resto del diagrama. Dentro de su interior se anotará la variable con el resultado final o el mensaje que represente el resultado del algoritmo. Generalmente veremos este símbolo muy cerca del final del proceso y precedido por el símbolo de terminación. Este símbolo siempre deberá tener al menos una conexión de entrada y una de salida.
  • 39. Ejemplo de un diagrama de flujo simple diferentes
  • 40. Ejercicios propuestos 1. Hacer un diagrama para calcular el área de un triángulo. 2. Hacer un diagrama para convertir de grados centígrados a grados Fahrenheit. 3. Hacer un diagrama para imprimir la suma de los números del 1 al 100. 4. Hacer un diagrama que te pida un número y te diga si es par, es non y/o es primo. 5. Hacer un diagrama para imprimir la sucesión de Fibonacci. 6. Hacer un diagrama que pida 10 números y muestre el promedio. 7. Hacer un diagrama que pida 3 números y diga cual es el mayor. 8. Hacer un diagrama que pida la edad y despliegue si es menor de edad (<18), mayor (>=18) o si pertenece a la 3ª edad.(>=60)
  • 41. Ejercicios propuestos (cont.)  Hacer un diagrama para calcular el factorial de un número.  Hacer un diagrama que calcule e imprima N números primos.  Hacer un diagrama que solicite 4 calificaciones y diga si está reprobado o no, según las reglas de tu escuela.  Hacer un diagrama que pida un número N y despliegue todas las combinaciones de dos números que sumados den N.  Hacer un diagrama que despliegue la tabla de multiplicar de un número X.
  • 42. Ejercicio No. 1 Diseñar un diagrama de flujo para calcular y mostrar el área de un triángulo. El diagrama deberá de solicitar los datos necesarios y mostrar el resultado.
  • 43. Ejercicio No. 2 Diseñar un diagrama de flujo para convertir de grados centígrados a grados Fahrenheit. El diagrama deberá de solicitar los datos necesarios y mostrar el resultado.
  • 44. Ejercicio No. 4 Diseñar un diagrama de flujo que solicite un número y determine si este es par o es non.
  • 45. Variables Las variables son los “contenedores” de los datos que se van a procesar, son un elemento común en la mayor parte de los lenguajes de computación. Físicamente, las variables son áreas designadas de memoria en donde se guarda el valor del dato. Supongamos que se escribe un programa en el cual se solicitan sueldos de empleados. Se debe contar con una variable que guarde ese dato. Puede escogerse nombrarla, por ejemplo, v_sueldo. Cuando, a solicitud del programa, el usuario introduce un número, ese dato se convierte en el valor de la variable v_sueldo. Entonces de manera semejante como en álgebra o física, las variables pueden ser usadas en programación para realizar operaciones de informática. Si el programa indica la declaración v_sueldo + 500 y el valor en v_sueldo = 1.000, el resultado para esta declaración va a ser 1.500.
  • 46. c i A continuación se presenta como ejemplo un sencillo programa fuente, escrito en C, y justo al lado se ó explica la acción que realizará la computadora en respuesta a los comandos del programa. n El programa tiene como finalidad el cálculo del promedio de una lista de cinco números. q Instrucciones en Lenguaje C Acción de la computadora u 1.- Define una matriz (datos) de números enteros y le asigna los e int datos[ ] = { 25, 88, 20, 75, 62 }; valores 25, 88, 20, 75, 62. int nDatos = 5; 2.- Define la variable (nDatos) de tipo entero y le asigna el valor 5. r 3.- Define la función (promedio) que devuelve un número entero. e int promedio () {a l int suma; 4.- Define la variable (suma) de tipo entero. i int prom; 5.- Define la variable (prom) de tipo entero. zint cont; 6.- Define la variable (cont) de tipo entero. asuma = 0; 7.- Asigna a suma el valor 0. r 8.- Para cada elemento de la matriz datos, añade su valor a la for (cont=0; cont<nDatos; cont++) á variable suma. { l suma += datos [cont]; a } 9.- Asigna a prom el resultado de dividir la variable suma por la prom=suma/nDatos; variable nDatos. c 10.- Devuelve como resultado de la función el contenido de la variable oreturn (prom); prom. m }