Sunteți pe pagina 1din 46

Introduccin a la Programacin Grado en Ingeniera Informtica

Teora - Curso 2011-2012


Contenido 2 Problemas, Algoritmos y Programas

Contenido 2.- Problemas, Algoritmos y Programas


2.1.- Algoritmos. 2.1.1.- Concepto de algoritmo. 2.1.2.- Ejemplos de diseo de un algoritmo. 2.2.- Proceso de creacin de un Programa. 2.3.- Datos, tipos de datos y operaciones primitivas. 2.3.1.- Datos numricos. 2.3.2.- Datos lgicos (booleanos). 2.3.3.- Datos tipo carcter y tipo cadena. 2.4.- Variables y expresiones. 2.4.1.- Constantes y variables. 2.4.2.- La operacin de asignacin. 2.4.3.- Evaluacin de expresiones. Precedencia de operadores. 2.4.4.- Entrada y salida. 2.5.- Descripcin de algoritmos. 2.5.1.- Lenguaje natural. 2.5.2.- Diagrama de Flujo. 2.5.3.- Pseudocdigo. 2.5.4.- Diagrama N-S.
2

Contenido 2.- Problemas, Algoritmos y Programas

2.1 Algoritmos 2.2.1.- CONCEPTO DE ALGORITMO

Secuencia de pasos que describen el mtodo para resolver un problema La ejecucin de un algoritmo implica la ejecucin de cada uno de sus pasos La resolucin de un problema exige el diseo del algoritmo adecuado

Contenido 2.- Problemas, Algoritmos y Programas

2.1 Algoritmos 2.2.1.- CONCEPTO DE ALGORITMO Pasos para resolver un problema en un ordenador:
1. 2. 3. 4.

Anlisis del problema Diseo del algoritmo Codificacin Traduccin, Validacin y Ejecucin

El ALGORITMO (paso 1) es independiente de:


El lenguaje de programacin (paso 3) El ordenador (paso 4)

Contenido 2.- Problemas, Algoritmos y Programas

2.1 Algoritmos 2.2.1.- CONCEPTO DE ALGORITMO


REQUISITOS de un ALGORITMO:

Acciones bien definidas Secuencia finita de operaciones en un orden determinado Debe acabar en un tiempo finito

Un algoritmo es una secuencia finita de operaciones bien definidas que resuelven un problema, cada una de las cuales requieren una cantidad finita de memoria y se realiza en un tiempo finito. BONDAD de un ALGORITMO: Factores que la determinan:

Tiempo Recursos de memoria

Contenido 2.- Problemas, Algoritmos y Programas

2.1 Algoritmos 2.2.1.- Ejemplos de diseo de un algoritmo Un cliente realiza un pedido a una fbrica. La fbrica examina la ficha del cliente, para comprobar si este es o no solvente antes de enviar el pedido.
1. 2. 3. 4. 5. 6.

Inicio. Leer el pedido. Examinar la ficha del cliente. Si el cliente es solvente, aceptar pedido; en caso contrario, rechazar pedido. Fin.

Contenido 2.- Problemas, Algoritmos y Programas

2.1 Algoritmos 2.2.1.- Ejemplos de diseo de un algoritmo Suma de los nmeros pares entre 2 y 1000. 2+4+6+8+...+1000. SUMA y NUMERO
1. 2. 3. 4.

Inicio. Inicializar SUMA a 0. Inicializar NUMERO a 2. Sumar NUMERO a SUMA. El resultado ser el nuevo valor de SUMA. Incrementar NUMERO en 2 unidades. Si NUMERO <= 1000 ir al paso 4; en caso contrario, escribir el valor de SUMA y terminar el proceso. Fin.

5. 6.

7.

Contenido 2.- Problemas, Algoritmos y Programas

2.2.- Proceso de Creacin de un Programa


1.

Planteamiento y anlisis del problema


Definicin Representacin de los datos Entradas Salidas Descomposicin en subproblemas Diseo descendente Refinamientos sucesivos Optimizacin y Depuracin Eleccin del lenguaje Adaptacin al problema Conocimientos Disponibilidad de rutinas Herramientas de desarrollo Entorno de la aplicacin Codificacin (normas de estilo) Traduccin Prueba y Depuracin

2.

Diseo del Algoritmo


3.

Implementacin

4.

Ejecucin

Contenido 2.- Problemas, Algoritmos y Programas

2.3.- Datos, Tipos de Datos y Operaciones Primitivas

Datos: Objetos con los cules opera un ordenador Datos de entrada Instrucciones Datos de salida El diseo de la estructura de datos es tan importante como el diseo del algoritmo Tipos de datos:

Simples

numrico

entero real

lgico carcter

Estructurados

Contenido 2.- Problemas, Algoritmos y Programas

2.3.- Datos, Tipos de Datos y Operaciones Primitivas

2.3.2.- Datos numricos Enteros: subconjunto finito de los enteros ( Rango : de 32768 a 32768) Reales: subconjunto de los nmeros reales Notacin exponencial o cientfica:
367520100000000000000 3.675201 x 1020 .0000000000302579 3.02579 x 10-11 36.75201 x 1018 36.75201 mantisa 18 exponente

10

Contenido 2.- Problemas, Algoritmos y Programas

2.3.- Datos, Tipos de Datos y Operaciones Primitivas 2.3.2.- Datos lgicos (booleano) Posibles valores:

Verdadero (true) Falso (false) alfabticos (A, B, C, ..., Z) (a, b, c, ..., z) numricos (1, 2, 3, ..., 9, 0) especiales (+, -, *, /, ^, ., ;, <, > $, ...)

2.3.3.- Datos tipo carcter


caracteres caracteres caracteres

En algunos lenguajes existe el tipo cadena como tipo de dato simple Ej/ Hola
11

Contenido 2.- Problemas, Algoritmos y Programas

2.4.- Variables y Expresiones 2.4.1.- Variables y Constantes Constante: objeto que contiene un valor que no vara durante la ejecucin del programa.
Identificador : nombre que identifica a una constante Tipo : Determinado por el valor que almacena. enteras, reales, carcter y lgicas Ej/ 20, 1.44, B, Pepe.

Definicin:
const PI = 3.1416

12

Contenido 2.- Problemas, Algoritmos y Programas

2.4.- Variables y Expresiones


2.4.1.- Variables y Constantes

Variable: objeto que contiene un valor que puede variar durante la ejecucin del programa
Identificador : nombre que identifica a la variable. Ej /notas Tipo : No cambia. Determina el tipo del valor que almacenar la variable y la operaciones que se pueden realizar con ella. enteras, reales, carcter y lgicas

Definicin var entero: notas

13

Contenido 2.- Problemas, Algoritmos y Programas

2.4.- Variables y Expresiones 2.4.2.- La operacin de asignacin


Se utiliza para darle valor a una variable Se representa por

Formato
Identificador_de_variable expresin Notas 8 Notas 5 El valor que tuviera la variable antes de la operacin de asignacin desaparece

Evaluacin en dos pasos


1.-Se obtiene el valor de la expresin del lado derecho 2.-Se almacena ese valor en la variable cuyo identificador est a la derecha del operador.

14

Contenido 2.- Problemas, Algoritmos y Programas

2.4.- Variables y Expresiones 2.4.2.- La operacin de asignacin Ejemplos


var entero: x, y ...... x2 yx+2 var entero : n ........ n2 nn+1

15

Contenido 2.- Problemas, Algoritmos y Programas

2.4.- Variables y Expresiones 2.4.2.- La operacin de asignacin Ejemplos


Asignacin aritmtica var entero : x ....... x3+4*8

16

Contenido 2.- Problemas, Algoritmos y Programas

2.4.- Variables y Expresiones 2.4.2.- La operacin de asignacin Ejemplos


Asignacin lgica
var logico: x ........ x 8< 5

Asignacin de cadena
var cadena: cad ...... cad Hola que tal

17

Contenido 2.- Problemas, Algoritmos y Programas

2.4.- Variables y Expresiones


2.4.3.- Evaluacin de Expresiones. Precedencia de Operadores. Expresin: combinacin de variables, constantes, operadores, nombre de funciones y parntesis, que indican el orden de clculo. Ejemplo:

((cuadrado(8) * p 4) / 2 3 * 5) + d * 3

Segn el tipo de datos de los elementos de la expresin, sta puede ser: aritmtica, cuyo resultado es de tipo numrico; lgica, cuyo resultado es de tipo lgico y carcter, siendo su resultado de tipo carcter.

18

Contenido 2.- Problemas, Algoritmos y Programas

2.4.- Variables y Expresiones


2.4.3.- Evaluacin de Expresiones. Precedencia de Operadores.

Expresiones Aritmticas Operador + * / div mod Significado suma resta multiplicacin divisin real divisin entera resto (mdulo)

19

Contenido 2.- Problemas, Algoritmos y Programas

2.4.- Variables y Expresiones


2.4.3.- Evaluacin de Expresiones. Precedencia de Operadores.

1.

Reglas de prioridad para las operaciones aritmticas:


Se evalan primero todas las operaciones que se encuentran entre parntesis. Si aparecen parntesis anidados, es decir unos dentro de otros, se evalan primero las operaciones dentro de los parntesis ms internos. El orden de precedencia para los operadores aritmticos que aparecen en las operaciones ser:
1. 2. 3. 4.

2.

operador unario operadores *, /, div, mod (todos tienen la misma prioridad) operadores +, - (ambos presentan la misma prioridad) Si en una expresin, encerrada o no entre parntesis, aparece ms de un operador con la misma prioridad se evaluar de izquierda a derecha.

20

Contenido 2.- Problemas, Algoritmos y Programas

2.4.- Variables y Expresiones


2.4.3.- Evaluacin de Expresiones. Precedencia de Operadores.

Ejemplos de evaluacin de operaciones aritmticas:

a) 2 * 5 + 4*3 10 + 4*3 10 + 12 22

b) 3 + 2 *6 8 / 2 3 + 12 8 / 2 3 + 12 4 15 4 11

c) 4 / 2 * 2 3 + 5 2 * 2 3 + 5 4 3 + 5 7 + 5 2

21

Contenido 2.- Problemas, Algoritmos y Programas

2.4.- Variables y Expresiones 2.4.3.Evaluacin de Expresiones. Precedencia de

Operadores.

Expresiones lgicas: Se combinan constantes lgicas, variables lgicas y otras expresiones lgicas, utilizando los operadores lgicos y los operadores relacionales.

22

Contenido 2.- Problemas, Algoritmos y Programas

2.4.- Variables y Expresiones


2.4.3.- Evaluacin de Expresiones. Precedencia de Operadores.

Expresiones lgicas:

Operadores relacionales Comparaciones entre valores de tipo numrico, carcter o lgico, y el resultado ser verdadero o falso. Con estos operadores se pueden expresar condiciones en los algoritmos, de las cuales depender la realizacin de ciertas tareas.

Formato general: expresin1 operador_de_relacin expresin2

23

Contenido 2.- Problemas, Algoritmos y Programas

2.4.- Variables y Expresiones


2.4.3.- Evaluacin de Expresiones. Precedencia de Operadores.

Expresiones lgicas:
Operador Significado < > = menor que mayor que igual que menor o igual que mayor o igual que distinto de

Operadores relacionales

Ejemplos: 4 > 2 verdadero (3+1) < (8-3) verdadero

24

Contenido 2.- Problemas, Algoritmos y Programas

2.4.- Variables y Expresiones


2.4.3.- Evaluacin de Expresiones. Precedencia de Operadores.
Prioridad de los Operadores relacionales
Las comparaciones de datos de tipo numrico, siguen la ordenacin habitual que se emplea en matemticas. Cuando se aplican los operadores relacionales a datos de tipo lgico, la constante falso es menor que la constante verdadero. Si en la expresin aparecen caracteres alfabticos en minsculas, stos siguen la ordenacin alfabtica: a < b < c < < h < < z. Si en la expresin aparecen caracteres alfabticos en maysculas, stos siguen la ordenacin alfabtica: A < B < C < < H < < Z. Los caracteres que representan a los dgitos decimales guardan su orden. Es decir: 0 < 1 < 2 < < 8 < 9. Pero si aparecen caracteres especiales , =, *, +, ), /, &, %, $, #, \, ..., entonces habra que consultar el cdigo normalizado. Estas agrupaciones se encuentran en orden decreciente, de esta forma sera: * < 1 < < 9 < A < < Z < a < < z. Sin embargo, sera recomendable consultar el cdigo de caracteres de su ordenador: ASCII (American Standar Code for Information Interchange) o bien el EBCDIC (Extended Binary-Coded Decimal Interchange Code).

25

Contenido 2.- Problemas, Algoritmos y Programas

2.4.- Variables y Expresiones


2.4.3.- Evaluacin de Expresiones. Precedencia de Operadores.

Expresiones lgicas:

Operadores lgicos Operador lgico no y Tablas de verdad: no: p verdadero falso Significado negacin de p conjuncin de p y q disyuncin de p y q Expresin lgica no p pyq pq

no p falso verdadero

26

Contenido 2.- Problemas, Algoritmos y Programas

2.4.- Variables y Expresiones


2.4.3.- Evaluacin de Expresiones. Precedencia de Operadores.

Expresiones lgicas: Tablas de verdad:


p verdadero verdadero falso falso

Operadores lgicos
q verdadero falso verdadero falso pyq verdadero falso falso falso

Y:

p y q es verdadero slo si p y q son verdadero. : p verdadero verdadero falso falso q verdadero falso verdadero falso pq verdadero verdadero verdadero falso

p q son verdadero cuando p, q o ambas son verdadero.

27

Contenido 2.- Problemas, Algoritmos y Programas

2.4.- Variables y Expresiones


2.4.4.- Operaciones de E/S bsicas.

Lectura Leer (variable_entrada)


Ejemplo: leer(a) leer un valor de la entrada y lo almacenar en la variable a.

Escritura Escribir(cadena)
Ejemplos: escribir(Hola, que tal) escribir la cadena: Hola, que tal escribir(El valor de la variable a es: , a), suponiendo que el valor almacenado en la variable a sea igual a 3, visualizar: El valor de la variable a es 3.

28

Contenido 2.- Problemas, Algoritmos y Programas

2.5.- Descripcin de algoritmos

Mtodos de descripcin de algoritmos

Lenguaje Natural. Pseudocdigo. Diagrama de Flujo. Diagrama de Nassi-Schneiderman.

29

Contenido 2.- Problemas, Algoritmos y Programas

2.5.- Descripcin de algoritmos 2.5.1.- Lenguaje Natural

Similar al lenguaje hablado. No sigue ninguna norma ni estructura en su representacin. No es adecuado por su ambigedad y falta de precisin.

30

Contenido 2.- Problemas, Algoritmos y Programas

2.5.- Descripcin de algoritmos


2.5.2.- Pseudocdigo

Parecido al lenguaje natural, pero est sujeto a determinadas reglas Estructura es similar a la de un programa, lo que facilita su traduccin a lenguaje de alto nivel.

Es un punto intermedio entre el lenguaje natural y el lenguaje de alto nivel. Es bastante apropiado si se utiliza un lenguaje de programacin estructurado por la similitud que existe entre ellos.

Esta herramienta de diseo de algoritmos permite la posibilidad de describir tipos de datos, constantes, variables y cualquier tipo de expresin, adems de instrucciones de entrada y salida e instrucciones de control.

31

Contenido 2.- Problemas, Algoritmos y Programas

2.5.- Descripcin de algoritmos


2.5.2.- Pseudocdigo. Estructura
// Comentarios que faciliten la comprensin del algoritmo, por ejemplo, objetivos // del algoritmo, datos del programador, datos de entrada y datos de salida. Algoritmo Nombre_algoritmo const //Seccin de definicin de constantes tipos //Seccin de definicin de tipos creados por el programador var //Seccin de declaracin de variables inicio //Inicializacin de variables Accin 1 Accin 2 . . //Cuerpo del algoritmo Accin n fin_algoritmo

32

Contenido 2.- Problemas, Algoritmos y Programas

2.5.- Descripcin de algoritmos


2.5.3.- Diagrama de Flujo

Claridad en la comprensin Dificultad en la actualizacin Se usan unos smbolos que contienen las instrucciones del algoritmo, estos smbolos se enlazan mediante flechas que indican el flujo, el orden o secuencia en el que deben ir realizndose las operaciones. Diagrama del Sistema u Organigrama: muestra un esquema de la aplicacin segn los datos de E/S y los soportes donde se encuentran Diagrama de Detalles u Ordinograma: Se describe toda la secuencia de operaciones que resuelven el problema. Se debe expresar el Comienzo, el fin, las operaciones y la secuencia.

33

Contenido 2.- Problemas, Algoritmos y Programas

2.5.- Descripcin de algoritmos


2.5.3.- Diagrama de Flujo

REGLAS DE CONSTRUCCIN DE ORDINOGRAMAS:


El indicador de comienzo y fin del algoritmo slo puede aparecer una vez. El comienzo del algoritmo debe estar en la parte superior. El flujo de informacin debe aparecer de arriba hacia abajo y de izquierda a derecha. Las lneas de flujo no deben cruzarse, para ello se utilizan los conectores o bien para la misma pgina o bien para pginas distintas. No pueden existir cruces de lneas de flujo entre operaciones unidas por conectores, stas tambin se unen con conectores. No debe hacerse mucho uso de comentarios.

34

Contenido 2.- Problemas, Algoritmos y Programas

2.5.- Descripcin de algoritmos


2.5.3.- Diagrama de Flujo
Terminal. Indica el comienzo (inicio) y el final (fin) de un algoritmo. Entrada/Salida. Representa la introduccin de datos o bien devolucin de resultados.

Proceso. Cualquier tipo de operacin entre los datos.

NO

Decisin. Indica operaciones lgicas o relacionales entre los datos

SI

35

Contenido 2.- Problemas, Algoritmos y Programas

2.5.- Descripcin de algoritmos


2.5.3.- Diagrama de Flujo
Conector. Se usa para conectar dos puntos cualesquiera de un ordinograma en la misma pgina. Hay que incluir un conector en la entrada y otro en la salida. Conector. Se usa para la conexin entre dos puntos cualesquiera de un ordinograma en diferentes pginas.

Lnea de flujo. Indica en el sentido en el que se van a realizar las operaciones. Lnea conectora. Se usa para unir dos objetos.

Llamada a subrutina. Se usa para hacer una llamada a un subalgoritmo.

36

Contenido 2.- Problemas, Algoritmos y Programas

2.5.- Descripcin de algoritmos


2.5.4.- Diagrama de Nassi-Schneiderman

Combinacin de pseudocdigo y diagrama de flujo Las instrucciones se sitan en rectngulos Poco usado
Nombre del algoritmo Accin 1 Accin 2 . . . Accin n Fin_algoritmo

37

Contenido 2.- Problemas, Algoritmos y Programas

Ejemplo Ilustrativo

Siguiendo los pasos para la realizacin de un programa y utilizando todos los mtodos de descripcin de algoritmos estudiados se desea resolver el siguiente problema:

Realiza un programa que dado un valor para el radio

escriba la

longitud de la circunferencia, el rea del crculo y el volumen de la esfera.

38

Contenido 2.- Problemas, Algoritmos y Programas

Ejemplo Ilustrativo
1.- Planteamiento y anlisis del problema

Definicin: programa que dado un valor para el radio escriba la


longitud de la circunferencia, el rea del crculo y el volumen de la esfera.

Representacin de los datos Entradas

Variables: Radio (Tipo real) Constantes: PI 3.1416


Salidas

Variables: Longitud, rea y Volumen (Tipo real)

Recursos:
Longitud= 2Radio rea= Radio2 Volumen: 4/3Radio3

39

Contenido 2.- Problemas, Algoritmos y Programas

Ejemplo Ilustrativo 2.- Diseo del Algoritmo

1) 2) 3) 4) 5)

Descripcin en Lenguaje Natural


Inicio. Leer Radio. Calcular Longitud, Superficie y Volumen Escribir resultados. Fin.

Descomposicin en subproblemas Diseo descendente Refinamientos sucesivos Optimizacin y Depuracin

40

Contenido 2.- Problemas, Algoritmos y Programas

Ejemplo Ilustrativo 2.- Diseo del Algoritmo

Descripcin en Lenguaje Natural


1) 2) 3) 4) 5) 6) 7)

Inicio. Leer Radio. Calcular Longitud Calcular Superficie Calcular Volumen Escribir Longitud, Superficie y Volumen. Fin.

41

Contenido 2.- Problemas, Algoritmos y Programas

Ejemplo Ilustrativo 2.- Diseo del Algoritmo

Descripcin en Lenguaje Natural


1) 2) 3) 4) 5) 6) 7)

Inicio. Leer Radio. Longitud= 2*3.1416*Radio Superficie = 3.1416*(Radio*Radio) Volumen= 4/3*3.1416*(Radio*Radio*Radio) Escribir Longitud, Superficie y Volumen. Fin.

42

Contenido 2.- Problemas, Algoritmos y Programas

Ejemplo Ilustrativo 2.- Diseo del Algoritmo

Descripcin en Diagrama de Flujo


Inicio

leer (radio)

Longitud = 2* 3.1416* Radio rea = 3.1416* Radio*Radio Volumen = 4/3* 3.1416* Radio*Radio*Radio

escribir(La Longitud es, longitud, El rea es , rea, El Volumen es, Volumen)

Fin

43

Contenido 2.- Problemas, Algoritmos y Programas

Ejemplo Ilustrativo 2.- Diseo del Algoritmo

Descripcin en Diagrama de Nassi-Schneiderman


Inicio Leer (radio) Longitud = 2* 3.1416* Radio

rea = 3.1416* Radio*Radio

Volumen = 4/3* 3.1416* Radio*Radio*Radio

escribir(La Longitud es, longitud, El rea es , rea, El Volumen es, Volumen

Fin

44

Contenido 2.- Problemas, Algoritmos y Programas

Ejemplo Ilustrativo 2.- Diseo del Algoritmo

Descripcin en Pseudocdigo

//Algoritmo que calcula la longitud de una circunferencia, //el rea del crculo y el volumen de la esfera. Algoritmo Clculos const PI= 3.1416 var real: radio, longitud, area, volumen inicio leer(radio) longitud 2* PI*radio area 2* PI* (radio* radio) volumen (4/3) * PI *(radio*radio*radio) escribir(La longitud de la circunferencia es igual a, longitud, El rea del crculo es, area, El volumen de la esfera es, volumen) fin_algoritmo

45

Contenido 2.- Problemas, Algoritmos y Programas

Ejemplo Ilustrativo 3.- Implementacin del Algoritmo

Lenguaje C

/*Algoritmo que calcula la longitud de una circunferencia, el rea del crculo y el volumen de la esfera.*/ #include <stdio.h> #define PI 3.1416 int main() { float radio, longitud, area, volumen; printf(Introduzca el radio); scanf(%f,&radio); longitud = 2* PI*radio; area = 2* PI* (radio* radio); volumen= 4/3 * PI *(radio*radio*radio); printf(La longitud de la circunferencia es igual a %f, El rea del crculo es %f y El volumen de la esfera es %f, longitud, area, volumen); }

46

Contenido 2.- Problemas, Algoritmos y Programas

S-ar putea să vă placă și