Vous êtes sur la page 1sur 57

BSI-03 Programacin I

Semana 6
Algoritmos, Diagramas de Flujo y Pseudocdigo.

!Primer parcial es la prxima semana!

Quiz 1 Errores comunes

Entrada: Comparar a yb

Entrada: Dos nmeros, a y b Comparar los nmeros es lo que hace nuestro algoritmo.

Quiz 1 Errores comunes


si (a < b) imprimir a < b si_no (a > b) imprimir a > b si (a < b) imprimir a < b si_no si (a > b) imprimir a > b fin_si fin_si

si_no se ejecuta s y slo s la condicin resulta falsa. Es opcional.

Quiz 1 Errores comunes


si (a < b) imprimir a < b si_no (a > b) imprimir a > b si (a < b) imprimir a < b si_no si (a > b) imprimir a > b fin_si

Mtodo alternativo.

Quiz 1 - Solucin
inicio leer a, b si (a > b) imprimir a es mayor que b si_no si (a < b) imprimir a es menor que b si_no imprimir a es igual a b fin_si fin_si fin

Quiz 1 Solucin alternativa


inicio leer a, b si (a > b) imprimir a si_no si (a < imprimir a si_no imprimir a fin_si fin

es mayor que b b) es menor que b es igual a b

Quiz 1 Diagrama de flujo


inicio a, b F F V V imprimir a > b

a>b

a<b

imprimir a = b

imprimir a < b

fin

Tarea 1
Escriba un algoritmo que tome un ao y devuelva verdadero cuando el ao sea bisiesto. La regla para los aos bisiestos segn el calendario gregoriano es:

Un ao es bisiesto si es divisible por 4, excepto el ltimo de cada siglo (aquel divisible por 100), salvo que este sea divisible por 400.
Es decir los aos que sean divisibles por 4 sern bisiestos; aunque no sern bisiestos si son divisibles entre 100 (como los aos 1700, 1800, 1900 y 2100) a no ser que sean divisibles por 400 (como los aos 1600, 2000 2400).

Tarea 1 - Solucin
inicio leer ao si ((ao % 4) == 0) si ((ao % 100) == 0) si ((ao % 400) == 0) bisiesto = true si_no bisiesto = false fin_si si_no bisiesto = true fin_si si_no bisiesto = false fin_si fin

Tarea 1 Solucin alternativa


inicio leer ao si ((ao % 4) == 0) si ((ao % 100) == 0) bisiesto = (ao % 400) == 0 si_no bisiesto = true fin_si si_no bisiesto = false fin_si fin

Tarea 1 Diagrama de flujo


inicio a F V

a % 4 == 0 F

a % 100 == 0

bisiesto = false

bisiesto = true

bisiesto = a % 400 == 0

fin

Tarea 1
Escriba el algoritmo para calcular i2 con valores de i que van desde 1 hasta n.

Tarea 1 - Solucin
leer n s = 0 i = 1 mientras i <= n haga s = s + i * i i = i + 1 fin_mientras

Prctica
La oficina de Censos recibe N boletas con la siguiente informacin: Sexo: M = masculino, F = femenino Estado Civil : 1 = Soltero, 2 = Casado, 3 = Divorciado, 4 = Viudo, 5 = Unin Libre Realice un diagrama de flujo que capture la informacin de las N boletas y al final despliegue la cantidad de hombres y la cantidad de mujeres que participaron en la encuesta, adems la cantidad de personas por tipo de estado civil.

Prctica
En una tienda se estn dando descuentos en la compra, a los clientes de acuerdo a su tipo de cliente. Se reciben como datos de entrada tipo de cliente y monto total de la compra; imprima el descuento que se le aplica a la compra y el nuevo monto al aplicar el descuento. Para al tipo de cliente utilice la siguiente informacin: Tipo 1 5 % Tipo 2 7 % Tipo 3 9 % Al final el algoritmo debe desplegar el valor acupulado por tipo de cliente y el monto total recibido por la tienda.

Prctica
Un determinado trabajo tiene una duracin de 30 das y se pagan $10.00 diarios; otro trabajo tambin dura 30 das, pero se paga $1.00 el primer da, $2.00 el segundo da, y as sucesivamente. Calcule y despliegue un mensaje, indicando cul trabajo est mejor pagado.

Temas
* Estructuras de control secuencial: Asignacin * Estructuras de control selectivas: Desicin simple, desicin doble, desicin simple/doble anidada, desicin mltiple. * Estructuras de control repetitivas: mientras, repetir, bucles anidados. Otros conceptos: * Promedios, porcentajes, factorial, sumatorias, productorias.

Modulo 2:

Introduccin a la Programacin
The computer programmer is a creator of universes for which he alone is responsible. Universes of virtually unlimited complexity can be created in the form of computer programs.
Joseph Weizenbaum, Computer Power and Human Reason

Software

software.
(Voz inglesa).

1. m. Inform. Conjunto de programas, instrucciones y reglas informticas para ejecutar ciertas tareas en una computadora.
http://www.rae.es

Software

http://www.dilbert.com/

Programacin

Un programa es una secuencia de instrucciones: la computadora las ejecuta en el orden que aparecen, una despus de la otra.

Programacin

Hay dos aspectos bsicos de la programacin: datos e instrucciones. Para trabajar con datos, es necesario entender las variables y los tipos. Para trabajar con instrucciones, es necesario entender las estructuras de control y las subrutinas.

Programacin

Una variable es slo una posicin en la memoria a la que se le ha dado un nombre y puede ser fcilmente referida y usada en un programa.

Programacin

Las estructuras de control son instrucciones especiales que pueden cambiar el "flujo de control". Hay dos tipos: bucles, los cuales permiten ejecutar una serie de instrucciones una y otra vez y bifurcaciones, que permite decidir entre dos o ms cursos de accin.

Programacin

Una subrutina es una serie de instrucciones agrupadas a la cual se le ha dado un nombre. El nombre es usado como un sustituto del conjunto de instrucciones. Las subrutinas permiten organizar los programas.

Programacin

Primer programa:

Imprimir hola, mundo en la terminal.

Lenguaje de Mquina

La CPU es la encargada de ejecutar los programas. Un programa es una lista de instrucciones seguidos mecnicamente por la computadora. La CPU ejecuta instrucciones escritas en un lenguaje muy simple conocido como lenguaje de mquina.

http://math.hws.edu/javanotes6/c1/s1.html

Lenguaje de Mquina
hola, mundo en lenguaje de mquina (en octal)
0000000 0000020 0000040 0000060 0000100 0000120 0000140 0000160 0000200 0000220 042577 000002 003524 000033 100064 000004 100424 000001 100000 010000 043114 000003 000000 000030 004004 000000 004004 000000 004004 000000 000401 000001 000000 000006 000340 000003 000023 000001 002124 000001 000001 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 101230 000064 000064 000340 000424 000023 000000 002124 002124 000000 004004 000040 000000 000000 000000 000000 000000 000000 000000 000000 000064 000007 100064 000005 100424 000004 100000 000005 112124 000000 000000 000050 004004 000000 004004 000000 004004 000000 004004

..., etc. (el listado completo ocupa 291 lineas)

Lenguaje Ensamblador

Representa simblicamente los cdigos de mquina (mnemnicos). El ensamblador es el encargado de traducir las sentencias del lenguaje ensamblador al cdigo de mquina (la correspondecia es uno a uno).

Lenguaje Ensamblador

Algunas instrucciones: add, sub, mul, div, rem push, pop and, or, xor, beq, not bne, blt, ble, bgt, bge

Lenguaje Ensamblador

Lenguaje Ensamblador
.file "hola.c" .section .rodata .LC0: .string "hola, mundo\n" .text .globl main .type main, @function main: pushl %ebp movl %esp, %ebp subl $8, %esp andl $-16, %esp movl $0, %eax subl %eax, %esp subl $12, %esp pushl $.LC0 call printf addl $16, %esp leave ret .size main, .-main .section .note.GNU-stack,"",@progbits .ident "GCC: (GNU) 3.3.2 20031022 (Red Hat Linux 3.3.2-1)"

Lenguajes de Programacin de Alto Nivel

Idioma artificial diseado para expresar computaciones (clculos). Est formado por un conjunto de smbolos y reglas sintcticas y semnticas que definen su estructura y el significado de sus elementos y expresiones. Algunos lenguajes de programacin de alto nivel: C, C++, Pascal, Ada, Lisp, Prolog, Perl, Python, Java, PHP, BASIC, Logo, .NET, etc.
http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n

Lenguajes de Programacin de Alto Nivel


Hola mundo (escrito en C):
#include <stdio.h> /* di hola */ int main() { printf("hola, mundo"); return 0; }

Lenguajes de Programacin de Alto Nivel

Java

I won't program in Java anymore. I'm not Marxist and don't believe in classes. phluid.

Java

Java es un lenguaje orientado a objetos. La unidad bsica en Java (y en POO en general) es la clase. La clase es la plantilla con la cul se crean objetos. Las clases contienen tanto campos (datos) como mtodos (subrutinas). Por convencin, los nombres de las clases siempre empiezan con mayscula, por ejemplo, Object, Integer, String, Vector y JFrame son clases de Java. Las clases puedes estar relacionadas heredan datos y subrutinas de una clase ms general. En Java, todas las clases son subclases de la clase Object.

Java

Java es un lenguaje interpretado. Los programas escritos en Java son compilados en un lenguaje de mquina, pero para una mquina que NO existe (de all que se le llame Mquina Virtual). El lenguaje de mquina para la Mquina Virtual de Java es llamado bytecode.

http://download.oracle.com/javase/tutorial/getStarted/intro/definition.html

Edited by Foxit Reader Copyright(C) by Foxit Software Company,2005-2007 For Evaluation Only.

Java

class Hola1 { // di hola public static void main(String[] args) { System.out.println("hola, mundo"); } }

Java

De pseudocdigo a Java
Nmeros naturales Nmeros reales Booleanos Carcter Cadenas int double boolean char String

De pseudocdigo a Java

Declaracin de variables: Java requiere que se declaren que variables antes de que se usen. Para tipo de datos primitivos (int, double, boolean, char), la manera de hacerlo es especificando el tipo y el identificador. Opcionalmente, se pueden inicializar (asignar un valor) se recomienda hacerlo.

De pseudocdigo a Java

Ejemplo de declaracin de tipos de variable.


int a; // declara una variable de tipo entero int i, j, k; // declara tres variables int b = 0; /* declara una variable de tipo entero y le asigna el valor 0 */ double unValor = 1.0; boolean bandera = true; char ch = 's'; String mensaje = hola, mundo;

De pseudocdigo a Java
Vamos a usar el siguiente esqueleto para nuestros programas de hoy:
import java.io.*; // para usar BufferedReader class NombreDeClase { public static void main(String [] args) { // instrucciones } // fin del mtodo main } // fin de la clase

De pseudocdigo a Java

Imprimir:
System.out.println(esto es una cadena);

De pseudocdigo a Java

Leer cadenas:
String s; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); try { s = in.readLine(); } catch (IOException e) { }

De pseudocdigo a Java

Leer enteros:
int n; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); try { n = Integer.parseInt(in.readLine()); } catch (IOException e) { }

De pseudocdigo a Java

Leer nmeros reales.


double d; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); try { d = Double.parseDouble(in.readLine()); } catch (IOException e) { }

De pseudocdigo a Java

Se pueden leer varios valores en un solo bloque try catch:


String s; int n; double d; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); try { s = in.readLine(); n = Integer.parseInt(in.readLine()); d = Double.parseDouble(in.readLine()); } catch (IOException e) { }

Laboratorio 1

Escriba un programa que lea un nmero de 4 digitos e imprima los millares, centenas, decenas y unidades separadas por espacios. Use el algoritmo desarrollado en clase. Llame el archivo Laboratorio1.java y guardelo en la carpeta c:\clase07 (creela de ser necesario). Abra una terminal (Smbolo del sistema o Command prompt) y ejecute el comando cd \clase07 (sin comillas). Compile el programa. Ejecute javac Laboratorio1.java. Corra el programa. En la terminal, escriba java Laboratorio1. Pruebelo con 1234. El resultado debe ser 1 2 3 4 (sin las comillas).

De pseudocdigo a Java
si <condicin> entonces
Acciones

if (expresin) {
// sentencias

} // fin_si

fin_si

De pseudocdigo a Java
si <condicion> entonces
Acciones

if (expresin) {
// sentencias

} else {
// sentencias

si_no
Acciones

} // fin_si

fin_si

De pseudocdigo a Java
si <condicion> entonces
Acciones

if (expresin) {
// sentencias

} else if (expresin) {
// sentencias

si_no si <condicion>
Acciones

si_no
Acciones

} else {
// sentencias

fin_si

} // fin_si

Laboratorio 2

Escriba un programa que lea un nmero e imprima si se trata de un nmero par o de un nmero impar. Utilice el algoritmo desarrollado en clase. Llame el archivo Laboratorio2.java y guardelo en la carpeta c:\clase07. Compilelo y ejecutelo.

Laboratorio 3
Escriba un programa que lea dos nmeros a y b e imprima:

a es mayor que b a es menor que b a es igual a b Segn sea el caso. Use el algoritmo desarrollado en el quiz 1. Llame el archivo Laboratorio3.java y guardelo en la carpeta c:\clase07. Compilelo y ejecutelo.

Laboratorio 4
Escriba un programa en Java que lee un ao e imprima en la terminal si se trata de un ao bisiesto (es bisiesto) o no (no es bisiesto). Use el algoritmo desarrollado en la tarea. Llame el archivo Laboratorio4.java y guardelo en la carpeta c:\clase07. Compilelo y ejecutelo.

Vous aimerez peut-être aussi