programación 1 (01) prof. flor narciso ([email protected]) prof. domingo hernández departamento de...

40
Programación 1 (01) Prof. Flor Narciso ([email protected]) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento (GIDyC) Escuela de Ingeniería de Sistemas Facultad de Ingeniería

Upload: sandalio-fulgencio

Post on 11-Apr-2015

110 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Programación 1 (01)

Prof. Flor Narciso ([email protected])Prof. Domingo Hernández

Departamento de ComputaciónGrupo de Ingeniería de Datos y Conocimiento (GIDyC)

Escuela de Ingeniería de SistemasFacultad de Ingeniería

Page 2: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Sistema computacional = Hardware + Software + Usuarios

Componentes físicos o equipo (hardware)

Componentes lógicos o programas (software)

Usuarios o personas

Componentes de la computadora

Prof. Flor Narciso 2Programación 1Semestre B-2010

Page 3: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Software

El software es un objeto abstracto asociado a un sistema de computación para:

• Dar solución a un problema

• Automatizar procesos de información y decisión

• Satisfacer requisitos de un conjunto de usuarios

Prof. Flor Narciso 3Programación 1Semestre B-2010

Software = Programas + Datos + Documentación

Page 4: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Software vs. Programa

Prof. Flor Narciso 4Programación 1Semestre B-2010

Software

Programa 1 Programa 2 Programa n

Sentencia 1 Sentencia m

…..

…..

Page 5: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Lenguajes de Programación

Prof. Flor Narciso 5Programación 1

Semestre B-2010

Lenguaje de programación: Notación que permite escribir programas

Léxico : Vocabulario

Sintaxis : Reglas gramaticales

Semántica: Reglas que permiten determinar el significado de las sentencia del lenguaje

Creado por el ser humano para poder comunicarnos con las computadoras

Page 6: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Clasificación de los Lenguajes de Programación

Prof. Flor Narciso 6Programación 1Semestre B-2010

Lenguaje de máquina: Lenguaje de programación que entiende directa-mente la computadora. Utiliza el alfabeto binario, es decir, el 0 y el 1Lenguaje ensamblador o de bajo nivel: Abreviaturas similares al inglés, llamadas instrucciones mnemotécnicas, que permiten represen-tar las operaciones elementales de la computadora

Lenguaje de alto nivel: Son muy similares al lenguaje humano

0001 0101 1000 00010001 0111 1000 00100001 0110 1000 0011

LOAD A ADD B STORE C

C = A + B

SEGMENTO DE PROGRAMA

Page 7: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Operaciones básicasCargar datos desde la memoriaAlmacenar datos en memoriaOperaciones aritméticasOperaciones de comparación

Lenguaje de Máquina

Prof. Flor Narciso 7Programación 1Semestre B-2010

Con estos dos únicos dígitos (0 y 1), conocidos como bits, se forma lo que se conoce como cadenas binarias (combinaciones de ceros y unos) con las que se escriben las instrucciones que el microprocesador de la computadora entiende. Fue el primer lenguaje de programación. Este tipo de lenguaje de programación dejó de utilizarse por su gran dificultad y por la facilidad para cometer errores

Estas instrucciones son fáciles de leer por la computadora y difíciles por un programador, y viceversa

0001 0101 1000 00010001 0111 1000 00100001 0110 1000 0011

Page 8: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Lenguaje Ensamblador o de Bajo Nivel

Prof. Flor Narciso 8Programación 1Semestre B-2010

Son mucho mas fáciles de utilizar que el lenguaje máquina, pero dependen mucho de la máquina o computadora como sucede con el lenguaje máquina

Todo programa escrito en un lenguaje ensamblador particular tendrá que ser reescrito si se va a ejecutar en otro tipo de computadora

LOAD A ADD B STORE C

Fue el primer lenguaje de programación que trato de sustituir el lenguaje máquina por otro mucho más parecido al de los seres humanos

Page 9: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Lenguaje Ensamblador o de Bajo Nivel

Prof. Flor Narciso

Programa escrito en lenguaje ensamblador (código fuente)

Programa escrito en lenguaje de máquina (código objeto)

Ensamblador

9Programación 1Semestre B-2010

La computadora no entiende directamente lenguaje ensamblador por lo que un programa escrito en este lenguaje tiene que ser traducido a lenguaje de máquina por un software llamado un ensamblador para que pueda ser ejecutado por la computadora

LOAD A ADD B STORE C

0001 0101 1000 00010001 0111 1000 00100001 0110 1000 0011

Page 10: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Lenguaje de Alto Nivel

Prof. Flor Narciso 10Programación 1Semestre B-2010

Permite a los programadores escribir programas en un lenguaje mas familiar para ellos y que contiene notaciones matemáticas comúnmente utilizadas (independiente de la máquina)

La programación es mas fácil para los programadores ya que no necesitan conocer la arquitectura de la computadora

Son independientes de la máquina, cualquier programa escrito en un lenguaje de alto nivel particular (que tiene una versión estandarizada) puede ser ejecutado en cualquier computadora

C = A + B

Page 11: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Lenguaje de Alto Nivel

Prof. Flor Narciso

CompiladorPrograma escrito en lenguaje de alto nivel (código fuente)

Programa escrito en lenguaje de máquina (código objeto)

11Programación 1Semestre B-2010

La computadora no entiende directamente lenguaje de alto nivel, por lo que un programa escrito en este lenguaje tiene que ser traducido a lenguaje de máquina por un programa llamado un compilador para que pueda ser ejecutado por la computadora

C = A + B 0001 0101 1000 00010001 0111 1000 00100001 0110 1000 0011

Page 12: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Prof. Flor Narciso 12Programación 1Semestre B-2010

Lenguaje de Alto NivelLenguajes de programación imperativos

FORTRAN, BASIC, COBOL, C, PHP

Lenguajes de programación declarativosPROLOG, LISP, SCHEME, Haskell, SQL

Lenguajes de programación orientados por objetosSmalltalk

Lenguajes de programación imperativos + orientado por objetos

ADA, Java, C++, Pascal, Delphi, Ocalm, Perl

Page 13: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Lenguaje de Programación C Nació en los Laboratorios Bell de AT&T

Su desarrollo está estrechamente vinculado al del sistema operativo UNIX

Diseñado e implementado por Brian Kernighan y Dennis Ritchie en 1973, a partir de los lenguajes BCPL (1967) y B (1970)

Prof. Flor Narciso 13

Un poco de historia!!

Brian Kernighan Department of Computer Science Princeton University Princeton, NJ 08544http://www.cs.princeton.edu/~bwk/

Dennis RitchieBell Labs, Rm 2C-517 600 Mountain Ave. Murray Hill, New Jersey 07974-0636, USAhttp://inferno.bell-labs.com/who/dmr/

Page 14: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Prof. Flor Narciso 14Programación 1Semestre B-2010

Page 15: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Lenguaje de Programación C

Prof. Flor Narciso

Lenguaje de nivel intermedio: Combina características de los lenguajes de alto nivel (sentencias de control y manipulación de datos) y de los lenguajes de bajo nivel (manejo de bits)

Independiente del hardware

Todo está constituido a base de funciones

Los programas escritos en C son fácilmente transportables a otros sistemas

Fácil de aprender

Programación estructurada

Características

15Programación 1Semestre B-2010

Page 16: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Lenguaje de programación C

• Quick C• C++• Turbo C• Turbo C ++• Borland C• Borland C++• Microsoft C• C#

Prof. Flor Narciso 16Programación 1Semestre B-2010

c Elementos sintácticos

Ù Palabras reservadasÙ IdentificadoresÙ DelimitadoresÙ Caracteres especialesÙ Comentarios

Page 17: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Lenguaje de programación CLas palabras reservadas

El lenguaje C está formado por un conjunto pequeño de palabras clave (reservadas) o comandos (keywords) que tienen un significado especial para el compilador y están reservadas para uso especial del lenguaje de programación

Prof. Flor Narciso 17Programación 1Semestre B-2010

Page 18: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Lenguaje de programación C

Los identificadores

Para dar un nombre a variables, constantes y funciones tenemos que usar un identificador. La longitud de un identificador puede variar entre uno y varios caracteres (letras y/o números), por lo general, 32. En la mayoría de los casos el primer carácter debe ser una letra o un símbolo de subrayado

Prof. Flor Narciso 18Programación 1Semestre B-2010

Correcto Incorrecto

cuenta 1cuenta

prueba23 hola!

puerto_paralelo puerto..paralelo

Cuenta ≠ cuenta

Page 19: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Lenguaje de programación CLos delimitadores

Permiten al compilador separar y reconocer las diferentes unidades sintácticas del lenguaje

Prof. Flor Narciso 19Programación 1Semestre B-2010

Signo Significado

; (punto y coma) Terminación, es necesario cuando finaliza cada una de las sentencias o declaraciones

, (coma) Separa dos elementos consecutivos de una lista

( ) (paréntesis) Enmarca una lista de parámetros, expresiones o condiciones

[ ] (corchetes) Enmarca la dimensión o el subíndice de un arreglo

{ } (llaves) Enmarca un bloque de sentencias o una lista de valores iniciales

Page 20: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Lenguaje de programación C

Los caracteres especiales

Prof. Flor Narciso 20Programación 1Semestre B-2010

Page 21: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Lenguaje de programación C

Los comentarios

Permiten que el programador documente sus programas . Sirven para facilitar la legibilidad de un programa

Prof. Flor Narciso 21Programación 1Semestre B-2010

Page 22: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Programas en C

Los comentarios

/* Ejemplo1.c Julio, 2010 Autores: Flor Narciso Domingo Hernández Sumar dos valores a y b, asignar el resultado a c */

int main(){

int a, b, c; /* Declaración de variables locales */

a = 3;b = 7;

c = a + b; /* Calcular la suma */return 0;

}

Prof. Flor Narciso 22Programación 1Semestre B-2010

Page 23: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Programas en CSintaxis formal

/* Comentarios iniciales */Declaración de importaciones /* Opcional */Definición de constantes /* Opcional */

int main(){

Declaración de variables locales /* Opcional */

Sentenciasreturn 0;

}

Prof. Flor Narciso 23Programación 1Semestre B-2010

Page 24: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Programas en CEjemplo

/* ejemplo2.c Julio, 2010 Autores: Flor Narciso Domingo Hernández Imprime el mensaje "BIENVENIDO AL CURSO DE PROGRAMACIÓN 1” */

#include <stdio.h> // Declaración de importaciones

int main(){

printf("BIENVENIDO AL CURSO DE PROGRAMACIÓN 1”);return 0;

}

Prof. Flor Narciso 24Programación 1Semestre B-2010

Page 25: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Lenguaje de programación C

Prof. Flor Narciso 25Programación 1Semestre B-2010

Función Descripción

printf Usada para imprimir salidas de datos (escritura)

scanf Usada para introducir datos de entrada (lectura)

Page 26: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Lenguaje de programación C

Prof. Flor Narciso 26Programación 1Semestre B-2010

Page 27: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Programas en CEjemplo

/* ejemplo2.c Julio, 2010 Autores: Flor Narciso-Domingo Hernández Imprime el mensaje "BIENVENIDO AL CURSO DE PROGRAMACIÓN 1” */

#include <stdio.h> // Declaración de importaciones#define VALOR 34 // Definición de constante

int main(){

printf("BIENVENIDO AL CURSO DE PROGRAMACIÓN 1”);return 0;

}

Prof. Flor Narciso 27Programación 1Semestre B-2010

Page 28: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Programación Estructurada

• El proceso de diseño del algoritmo y posterior codificación del programa consiste en definir las acciones o sentencias que resolverán el problema

• La programación estructurada es una forma de escribir programas de manera clara

• La visión clásica de la programación estructurada se refiere al control de ejecución

Prof. Flor Narciso 28Programación 1Semestre B-2010

Page 29: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Programación EstructuradaEsta forma de programar se basa en un famoso teorema, desarrollado por Edsger Dijkstra (1930-2002), que demuestra que todo programa puede escribirse utilizando únicamente las tres estructuras básicas de control siguientes:

Prof. Flor Narciso 29Programación 1Semestre B-2010

Secuencial: el bloque secuencial de instrucciones, instrucciones ejecutadas sucesivamente, una detrás de otra

Selección: la instrucción condicional con doble alternativa, de la forma "if condición then instrucción-1 else instrucción-2”

Iteración: el bucle o lazo condicional "while condición do instrucción", que ejecuta la instrucción repetidamente mientras la condición sea verdadera

Page 30: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Estructuras secuencialesSe ejecutan en secuencia sin posibilidad que la sentencia siguiente a ejecutar pueda ser otra diferente de la que sigue en la secuencia

Prof. Flor Narciso 30Programación 1Semestre B-2010

Page 31: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Definición de Estructuras Secuenciales

Prof. Flor Narciso 31Programación 1Semestre B-2010

Sentencia Pseudocódigo Código en C

Comienzo Inicio {

Fin Fin }

Entrada (lectura) Leer scanf

Salida (escritura) Escribir printf

Asignación A 5 ó A = 5 A = 5

Page 32: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Permite leer determinados valores (datos de entrada) y asignarlos a determinadas variables. Los datos de entrada se introducen a la computadora mediante los dispositivos de entrada (teclados, unidades de disco,etc.)

Sentencia de Entrada (Lectura)

Prof. Flor Narciso Programación 1Semestre B-2010

32

Leer (lista de variables de entrada)

Leer(a)

Leer(x, y)

Leer (hora, minutos, segundos)

Page 33: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

scanf("%<tipo_dato>",&<variable>);

scanf(“%f”, &a);

scanf(“%d %f”, &x, &y);

scanf(“%d %d %d”, &hora, &minutos, &segundos);

Sentencia de Entrada (Lectura)

Prof. Flor Narciso Programación 1Semestre B-2010

33

Notación en C

%d Si el dato que se leerá será un número entero%f Si el dato que se leerá será un número real%c Si el dato que se leerá será un carácter%s Si el dato que se leerá será una cadena

¿Qué es %<tipo_dato>?

Page 34: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Sentencia de Entrada (Lectura)

Ejemplo: Programa que calcula el número de días vividos

0. Inicio1. Leer (edad)2. edad = edad * 3653. Fin

/*Programa que calcula el numero de dias vividos*/

#include<stdio.h>

int main(){

int edad;

scanf(”%d",&edad);edad=edad * 365;

return 0;}

Prof. Flor Narciso Programación 1Semestre B-2010

34

Page 35: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Sentencia de Salida (Escritura)

Prof. Flor Narciso Programación 1Semestre B-2010

35

Permite escribir los resultados de un programa. La salida puede aparecer en un dispositivo de salida (pantalla, impresora, etc.)

Escribir (mensajes y/o variables de salida)

Escribir(“Hola”)

Escribir(promedio1, promedio2)

Escribir (“El resultado es”, resultado)

Page 36: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Sentencia de Salida (Escritura)

Prof. Flor Narciso Programación 1Semestre B-2010

36

printf(“Mensaje”);

printf(“Mensaje \n”);

printf(“valor = %<tipo_variable>”, variable);

Notación en C

%d Si el dato que se leerá será un número entero%f Si el dato que se leerá será un número real%c Si el dato que se leerá será un carácter%s Si el dato que se leerá será una cadena

¿Qué es %<tipo_dato>?

Page 37: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Sentencia de Salida (Escritura)

Ejemplo: Programa que calcula el número de días vividos

0. Inicio1. Escribir (“Introduce tu

edad: ”)2. Leer (edad)3. edad = edad * 3654. Escribir(“Has vivido”, edad,

“dias”)5. Fin

Prof. Flor Narciso

/*Programa que calcula el numero de dias vividos*/

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

int edad;

printf(“Introduce tu edad: ”);scanf("%i",&edad);edad=edad * 365;printf(“Has vivido %d dias”, edad);

return 0;}

Programación 1Semestre B-2010

37

Page 38: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Sentencia de Asignación

variable = valor constante x = 3;

variable = variable x = y;

variable = expresión x = (y + 1)/2;

Leer (variable) scanf(“%d”, &x);

Prof. Flor Narciso

Cuatro maneras de asignar valores a las variables !!!

38Programación 1Semestre B-2010

Page 39: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento

Prof. Flor Narciso

RAIS: Seguimiento del Desarrollo del Producto

Reunión semanal de trabajo y su informe

¿Qué ejecuto la compañía de la lista de acciones prometida en la última semana

¿Qué problemas y/o necesidades presenta el desarrollo del producto?

¿Qué tareas va la compañía a ejecutar para la semana próxima?

¿Qué ejecutó Usted de lo que la compañía se comprometió a realizar?

39Programación 1Semestre B-2010

Page 40: Programación 1 (01) Prof. Flor Narciso (fnarciso@ula.ve) Prof. Domingo Hernández Departamento de Computación Grupo de Ingeniería de Datos y Conocimiento