Está en la página 1de 33

Informática I

Sesión 05: Introducción a la Programación (1)


Repaso
 Sistema Numérico:
 Conjunto de símbolos que se relacionan para expresar
la relación existente entre la cantidad y la unidad.
 El número de dígitos en un sistema numérico se
denomina base. Las bases mas utilizadas en sistemas
computacionales son las siguientes:

BASE SISTEMA NÚMERICO


2 Binario
8 Octal
10 Decimal
16 Hexadecimal
Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Repaso
 Conversiones de base:
 Binario  Hexadecimal
 Binario  Octal
 Base N  Decimal  Base M

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Repaso
 Base r  Dec: Sumar el resultado de multiplicar cada digito por la
n 1
base elevada a su posición.
N a r
i m
i
i

 Dec  Base r:
• Parte entera: Divisiones sucesivas por la base a la cual se quiere
pasar, se toma el ultimo cociente y los residuos de todas las
divisiones (comenzando por el ultimo residuo).
• Parte decimal: Multiplicaciones sucesivas por el la base a la cual
se quiere pasar, se toma la parte entera del resultado comenzando
por la primer multiplicación.

 Bin  Hex: Tomar grupos de 4bits y convertirlos en un dígito


hexadecimal.

 Bin  Hex: Tomar cada digito hexadecimal y convertirlo


Circuitos
Circuitos Digitales
Informática I III III
Digitales
a2009/1
en
Universidad
4bits..
2010/1
2010/1
de Antioquia
A continuación…

Introducción a la programación

Traductores de código

Método para la solución de problemas

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Capas de Abstracción

Problema

Algoritmo

Programa

Instruction-set Architecture

Micro-arquitectura

Circuitos

Transistores

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Capas de Abstracción
PROGRAMADOR (Ideas)

Lenguaje Humano
(Mi idea es…)
Alto nivel

INICIO
ESCRIBA(“ingrese a”)
Lenguaje de LEA(a)
ESCRIBA(“ingrese b”)

Programación
LEA(b)
c  a + b
ESCRIBA(“La suma:”,c)
FIN_INICIO

Bajo nivel
Lenguaje de Máquina
(1000110)

MÁQUINA

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Lenguajes de programación
Un lenguaje es un conjunto de reglas que
permiten transmitir una idea. (Semántica)
conjunto preciso y finito de instrucciones
ALGORITMO: que describe como ejecutar una tarea
especifica mediante una serie de pasos.

es la implementación o descripción de un
PROGRAMA:
algoritmo en un lenguaje de programación

LENGUAJE utilizado por el programador para ordenar


DE PROGRA-
MACIÓN las instrucciones de un algoritmo
determinado

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Lenguajes de programación

•Programación: Actividad
que consiste en expresar Traducción
un algoritmo en forma de 11100101
????
Computadora…
Mata a Flanders
0
programa.

•Instrucción: Es cada uno


de los pasos que se
ejecutan en el programa.

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Lenguajes de programación
Principales lenguajes utilizados en la actualidad:
Lenguaje de alto nivel Lenguaje de bajo nivel.
#include <stdio.h>
int main (void) MOV AX, @data;
{ MOV DS, AX;
char x; MOV DX, offset;
printf (“Introduce un caracter\n”); MOV AH, 9;
scanf(“%c”, &a); INT 21h;
if(a>=48 && a<=57)
printf ("Es un numero");
}
Lenguaje de maquina.
Introduce un carácter 101001001001111
4 101010101001010
Es un numero
100101111000111
Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Lenguaje de Bajo Nivel

1. El programa optimiza el uso de los recurso


VENTAJAS: de la maquina.
2. Programas veloces en su ejecución.

1. Dependientes de la maquina (No portables).


DESVENTAJAS: 2. Necesidad de conocimientos avanzados tanto
de programación como de la maquina.

Assembler (Ensamblador)
Cada arquitectura tiene el propio.

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Lenguaje de Alto Nivel

1. Similares a los lenguajes humanos


VENTAJAS: 2. Modificables fácilmente.
3. Independiente de la máquina. Son Portables.

1. Herramientas complejas de traducción a L.M.


DESVENTAJAS: 2. No se optimizan los recursos de la maquina.
3. Programas mas lentos en su ejecución

C, C++, C#, FORTRAN, Pascal,


Visual BASIC, Java.
HTML, XML, JavaScript

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Lenguajes de Programación
Algoritmo(sumar) C,C+
Variables: +,C#,Java,
a, b, c: entero Fortran,
INICIO
ESCRIBA(“Introduzca el primer numero (entero)”)
Pascal,
LEA(a) XML,HTML
ESCRIBA(“Introduzca el segundo numero (entero)”)
LEA(b)
c  a + b
ESCRIBA(“La suma es: ”,c) Ensamblado
FIN_INICIO r
Fin(sumar)

;Lenguaje ensamblador, sintaxis Intel para


procesadores x86
Alto
Alto
Alto Nivel
mov eax,1; //mueve a al registro eax el valor 1
xor ebx, ebx; //pone en 0 el registro ebx
Nivel int 80h; //llama interrupción 80h(80h=128sistema
decimal)
Bajo
Bajo Nivel
Nivel

Máquina
Máquina
Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
A continuación…

Introducción a la programación

Traductores de código

Método para la solución de problemas

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Programación
 Un computador solo es capaz de ejecutar ordenes
y operaciones
 Aritmetica y lógica
 Comparaciones numericas o alfanumericas.
 Almacenar y recuperar información

 El programador es el que le indica a la maquina


como y qué debe hacer, por medio de un
programa.

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Traductores de Código
PROGRAMADOR (Ideas)

Lenguaje Humano
(Mi idea es…)
Alto nivel

INICIO
ESCRIBA(“ingrese a”)
Lenguaje de LEA(a)
ESCRIBA(“ingrese b”)

Programación
LEA(b)
c  a + b
ESCRIBA(“La suma:”,c)
FIN_INICIO

Bajo nivel
Lenguaje de Máquina
(1000110)
10001100011
10010101001
00101010001 MÁQUINA

Circuitos
Circuitos Digitales
Informática I III III
Digitales
01111001010 Universidad2010/1
2009/1
2010/1
de Antioquia
Traductores de Código

 Son los programas que


traducen los programas
fuente escritos en lenguajes
de alto nivel a código de
maquina.

 Clasificación:
 Compiladores: Lenguaje de
alto nivel --> Lenguaje de
maquina.
 Interprete: Un traductor que
toma un programa fuente, lo
traduce y a continuación lo
ejecuta.

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Compilador
 Programa que traduce un programa escrito en un
lenguaje de alto nivel al lenguaje de máquina, para
poder ser ejecutado por el computador.

C C++ FORTRAN

ARM ISA X86 ISA PowerPC ISA

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Intérprete
 Intérprete: programa que hace el trabajo de un
compilador pero en tiempo de ejecución
(runtime).
myprog.c myprog.m myprog.java
public class
int main(void){
HelloWorld { public
int a, b; b = 2;
static void
a = 3; function [a] = f1(b)
main(String[] args)
printf(“a=%d”, a = b+ 1;
{ System.out.println(“
a); a
a=3"); } }
exit(0); }
}
COMPILADOR
(a bytecode)
COMPILADOR myprog.class
INTÉRPRETE 0101001001010
(Matlab engine) 10100101010001
myprog.exe 11101010010101
00010101001011
0101001001010 01001
1010010101000
11110101001010 Java Virtual
1000101010010
1101001 Machine

COMPUTADOR COMPUTADOR COMPUTADOR


(Hardware) (Hardware) (Hardware)

a=3 a=3 a=3

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Compilador vs Intérprete
El compilador toma El intérprete toma UNA
TODO EL CÓDIGO y INSTRUCCIÓN del código
produce un archivo en fuente y genera el código
código maquina maquina equivalente y lo
equivalente. ejecuta
Lenguaje de Lenguaje de INSTRUCCIÓN
CODIGO FUENTE Alto nivel Alto nivel CODIGO FUENTE

COMPILADOR INTERPRETE

Código Objeto Archivo o


10101010111011 Código Instrucción
01101010101 objeto : 10011011

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
A continuación…

Introducción a la programación

Traductores de código

Método para la solución de problemas

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Método solución de problemas
PROGRAMADOR (Ideas)

Lenguaje Humano
(Mi idea es…)
Alto nivel

Lenguaje de
Programación

Bajo nivel
Lenguaje de Máquina
(1000110)

MÁQUINA

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Método solución de problemas
 A partir del planteamiento de un problema, es
conveniente usar un método para la resolución del
problema, que tendrá como objetivo final el
algoritmo que dará una solución.

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Método de Polya
 George Polya, Matemático húngaro, autor del libro
How to solve it (1945). En él, Polya propone cuatro
pasos generales para la solución de un problema:

1 ●
Entender el problema

2 ●
Diseñar un plan

3 ●
Implementar el plan

4 ●
Revisar el plan
Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Método de Polya
1. Entienda el problema: parece obvio pero es con
frecuencia un gran obstáculo. Entender de
manera clara el problema que se esta
resolviendo:
 ¿Entiende todas las palabras de la formulación del problema?
 ¿Qué le están pidiendo que encuentre?
 ¿Puede usted reformular el problema en sus propias palabras?
 ¿Puede hacer un dibujo que represente el problema?
 ¿Hay suficiente información para encontrar la solución?

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Método de Polya
2. Diseñe un plan: Es la fase donde se le da
solución al problema. Para esto es necesario
escoger una estrategia para resolver el problema
 Divida el problema en problemas más simples.
 Elimine posibilidades.
 Aproveche simetrías.
 Seleccione la información de entrada al problema.
 Seleccione la información de salida del problema.
 Busque relaciones, es decir la dependencia entre la información
de entrada y la información de salida.

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Método de Polya
3. Implemente el plan: es la fase en la que se
construye el algoritmo que permitirá encontrar la
solución al problema. Esta fase requiere mucho
cuidado en los detalles, paciencia y experiencia.

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Método de Polya
4. Revise el plan: haga una pausa, revise y
reflexione sobre el trabajo hecho. El objetivo es
verificar y corregir los errores hasta lograr lo
deseado.

De manera particular, en programación se utiliza


la prueba de escritorio.
 Proceso de seguimiento del algoritmo para verificar
que cumple con la especificación.

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Método solución de problemas
Problema

PROGRAMADOR
Algoritmo Aplicar Método de
solución de
PROGRAMADOR
problemas
Programa

COMPILADOR

Instruction-set Architecture
Micro-arquitectura
Circuitos
Transistores

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Algoritmos
El método aplicado para la resolución de problemas
mediante programas.

Problema Algoritmo Programa

Tarea que se desea Descripción ordenada de Expresar el algoritmo


resolver. la secuencia de pasos como un programa en el
(sin ambigüedades) que lenguaje de
conducen a la solución programación adecuado.
de problema dado
(Análisis del problema y
desarrollo del algoritmo).
Ejecución y validación
del programa de
computadora.
Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Algoritmos

La definición de un algoritmo debe describir tres


partes: Entrada, proceso y salida. Ejemplo: La receta
de un sancocho o como ser presidente (según
homero)
Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Algoritmos
 Recordemos que, un algoritmo es un proceso
preciso, computable y finito que paso a paso lleva
a la solución de un problema.

 Todo algoritmo debe tener tres partes:

Entradas Proceso Salidas

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia
Bibliografía
• Joyanes A. Luis. Programacion en c.
Metodologia, algoritmos y estructura de datos.
McGrawHill. 2000
• Nell Dale y John Lewis, Computer Science
Illuminated Jones and Bartlett, 2002
• Oviedo, Efrain. Lógica de Programación
• www.google.com

Circuitos
Circuitos Digitales
Informática I III III
Digitales Universidad2010/1
2009/1
2010/1
de Antioquia

También podría gustarte