Anda di halaman 1dari 53

Computacin I INT24

Introduccin a la programacin Computacional

Programa de Asignatura Contenido


UNIDAD I: ALGORITMOS Y PROGRAMAS" UNIDAD II: LA RESOLUCIN DE PROBLEMAS, ESTRUCTURAS Y HERRAMIENTAS DE PROGRAMACIN UNIDAD III: PROGRAMACIN ESTRUCTURADA UNIDAD IV: SUBPROGRAMAS: PROCEDIMIENTOS Y FUNCIONES UNIDAD V: ESTRUCTURAS DE DATOS (ARREGLOS) UNIDAD VI: ANLISIS DE ARCHIVOS

Introduccin a la programacin Computacional

Unidad I: Algoritmos y Programas

Introduccin a la programacin Computacional

Qu es un computador?
Un sistema digital con tecnologa microelectrnica capaz de procesar informacin a partir de un grupo de instrucciones denominado programa Componentes principales:
Procesador (CPU: Central Processing Unit) Memoria (RAM: Random Access Memory)

Componentes auxiliares:
Disco duro Lector CD-ROM Teclado Pantalla etc.
Introduccin a la programacin Computacional

Elementos de un computador
(hardware)

Unidad aritmetica y logica (ALU) Procesador Unidad de (CPU) Control (CU)

Memoria Principal (RAM)


Programa

Dispositivos de entrada teclado ratn

Dispositivos de salida pantalla impresora

Dispositivos de almacenamiento de datos disco duro lector/grabador de CD-ROM 5 lector/grabador de disquete

Introduccin a la programacin Computacional

Representacin de los datos en el computador


El nico cdigo que entiende la CPU son los bits. Los bits son representados en circuitos electrnicos que pueden estar en estado on (1) u off (0) Las instrucciones se mandan a la CPU en forma de bytes, que son palabras de 8 bits 1 byte = 8 bits 1 kilobyte = 1 024 bytes 1 megabyte = 1 024 kilobytes = 1 048 576 bytes Kilobytes (Kb) Megabytes (Mb) Gigabyte (Gb) Terabyte (Tb)

Introduccin a la programacin Computacional

Representacin de los datos en el ordenador


Base 10:
Dgitos = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} 1111 = 1*103 + 1*102 + 1*101 + 1*100

Base 2:
Dgitos = {0, 1} 1111 = 1*23 + 1*22 + 1*21 + 1*20 = 8 + 4 + 2 + 1 = 15

Cuntos valores puede representar un byte?


1 byte = 8 bits (Ej: 01100101) Cada bit puede representar 2 valores (0 y 1) Un byte puede representar 28 = 256 valores El valor mximo es 28 1 = 255 (0 a 255)

Introduccin a la programacin Computacional

Representacin de textos

TEXTO: My name is Anders. ASCII: 77-121-32-110-97-109-101-32-105-115-32-65-110-100-101-114-115-46 18 bytes Introduccin a la programacin Computacional

Representacin de imagen

00000000 00110110 00100010 00100010 00110110 00000000 00110110 00000000


Divisin de la imagen en una matriz de pixels (unidad de la imagen) Cada pixel asociado con un color 0: blanco 1: negro Para representar el color de cada pixel se usan 8 bits (256 colores) o 24 bits (color verdadero) Introduccin a la programacin Computacional

Representacin de sonido

4 8 12 13 12 10 8

Discretizacin de la amplitud Un byte para cada valor

Introduccin a la programacin Computacional

Qu es un programa?

Un programa es una secuencia de instrucciones a la CPU Cada instruccin es un conjunto de bytes Ejemplos de instrucciones:
Leer un dato del teclado Guardar un dato en la memoria Ejecutar una operacin sobre dos datos Mostrar un dato en la pantalla etc.

Introduccin a la programacin Computacional

Acceso a la memoria

RAM 1 12 2 125 3 45 4 2 CPU 5 0 6 10 7 32 8 64 9 15

Introduccin a la programacin Computacional

Algoritmo

Un esquema para resolver cierto tipo de problema Se puede traducir en un programa para ejecutarlo en un ordenador Pasos para la resolucin de un problema con ordenador: 1. Diseo de un algoritmo 2. Codificacin de un programa 3. Ejecucin y validacin

Introduccin a la programacin Computacional

Algoritmo
Componentes: Entrada: datos del problema a resolver Salida: el resultado de la resolucin Proceso: pasos a seguir para la resolucin Propiedades: Preciso: orden estricto + expresiones precisas Definido: con la misma entrada, siempre resulta la misma salida Finito: nmero finito de pasos

Entradas Proceso

Salidas

Introduccin a la programacin Computacional

Ejemplo 1 algoritmo

Problema: Sumar dos nmeros Solucin: Entrada: dos nmeros Salida: imprimir por pantalla el resultado de la suma de dos nmeros Proceso:
1) Leer dos nmeros 2) Sumarlos y guardarlos en memoria 3) Imprimir resultado

Introduccin a la programacin Computacional

Ejemplo 2 algoritmo

Problema: Preparar una taza de t Solucin: Entrada: agua, bolsa de t, tetera, taza, cuchara Salida: una taza de t Proceso:
1. 2. 3. 4. Poner la bolsa de t en la taza Poner el agua a hervir en la tetera Verter el agua hervida en la taza Revolver con la cuchara

Introduccin a la programacin Computacional

Ejemplo 3 algoritmo

Problema: averiguar la solvencia de un cliente que ejecuta un pedido a una fbrica. Solucin: Entrada: el pedido Salida: mensaje de aceptacin o rechazo Proceso:
1. 2. 3. 4. Leer el pedido Examinar la ficha del cliente Si el cliente es solvente, aceptar pedido En caso contrario, rechazar pedido

Introduccin a la programacin Computacional

Lenguajes de programacin

Lenguajes mquina Lenguajes ensamblador Lenguajes de alto nivel: C, C++, Visual Basic, Java, Pascal, Prolog, LISP,

Introduccin a la programacin Computacional

Lenguaje de mquina

Programas son secuencias de instrucciones compuestas de bytes:


16 29 156 9 82 75 = = = = = = 10000 11101 10011100 1001 1010010 1001011

Ventajas:
La CPU entiende estos programas

Desventajas:
Pensar en modo de 0s y 1s es muy difcil para nosotros

Introduccin a la programacin Computacional

Lenguajes ensamblador

Instrucciones compuestas de palabras cortas y nmeros:


LOD 15 6 LOD 16 8 ADD 15 16 17 JMP 10

Ventajas:
Ms fcil a entender

Desventajas:
Todava bastante abstracto Necesita traducir el cdigo a lenguajes mquina

Introduccin a la programacin Computacional

Lenguajes de alto nivel


Diseados para ser ms parecidos a lenguaje natural Ventajas:
Mucho ms fcil de dar instrucciones

Desventajas:
Ms complicado convertir en lenguajes mquina

Ejemplo en Lenguaje c:
int power(int a, int b) { int n; for (n = 1; b > 0; --b) n *= a; return n; }
Introduccin a la programacin Computacional

Lenguajes de programacin
1. Diferentes dominios de aplicacin:
Programacin de sistemas rapidez y acceso de bajo nivel: C Inteligencia artificial computacin simblica: LISP, Prolog Programacin cientfica frmulas matemticas: Fortran Negocios transacciones: COBOL Uso especfico: SQL (bases de datos), Perl (manipulacin de textos), JavaScript (pginas web), Pascal (formacin)

Introduccin a la programacin Computacional

Lenguajes de programacin
2.

Diferentes necesidades:
Fiabilidad: Ada Escabilidad, paradigma orientado a objeto: C Portabilidad: Java C++

3.

Evolucin:
Mejora del hardware Mejor comprensin de como reforzar criterios de legibilidad, facilidad de aprender y escribir, fiabilidad

4. 5.

Importancia de la estandarizacin Nmero de programadores!

Introduccin a la programacin Computacional

Traductores de lenguaje: compiladores

OPCION 1 PROGRAMA FUENTE

OPCION 2 Fase de compilacin

Fase de compilacin

COMPILADOR programa objeto Fase de ejecucin

programa ejecutable

ENLAZADOR (binder, linker)

Fase de ejecucin

EJECUCION

Introduccin a la programacin Computacional

Traductores de lenguaje: intrpretes

PROGRAMA FUENTE

INTERPRETE

EJECUCION DE LA(S) INSTRUCCION(ES) INTERPRETADA(S)

Introduccin a la programacin Computacional

Componentes de un lenguaje

Sintaxis (gramtica): reglas que determinan de manera estricta el vocabulario, orden y formato de las instrucciones permitidas
Errores sintcticos: el programa no compila y/o no se puede interpretar

Semntica (sentido): el programa, al ejecutarlo, produce el resultado correcto que uno quiere

Introduccin a la programacin Computacional

Errores de programacin
Modificar o crear un archivo fuente

Compilar

errores de compilacin (sintaxis)

Editar para corregir errores

no hay errores Ejecutar programa errores de ejecucin (semntica) Depurar (debugging)

Introduccin a la programacin Computacional

Datos y tipos de datos.

Los datos representan informacin que queremos recordar, comparar, o manipular Pueden ser nmeros, textos, imgenes o sonidos Un dato puede estar compuesto de varios otros datos Ejemplo de un dato compuesto: Apellido: Jhonsson Telfono: 935422602 Foto: [imagen]

Introduccin a la programacin Computacional

Datos en el CPU

Los datos se guardan en la memoria del computador en forma de bytes Cada dato ocupa un cierto espacio en la memoria Para manipular datos, la CPU tiene que saber dnde recuperarlos de la memoria

Introduccin a la programacin Computacional

Tipos de datos bsicos Numricos


Enteros (integer) Reales

Lgicos (booleanos) Carcter y Cadena

Introduccin a la programacin Computacional

Tipos de Datos Numricos Enteros (Integer)


Subconjunto finito de los nmeros enteros Negativos y positivos No decimales Ejemplos 5; -15; 7; 256

Real
Subconjunto finito de los nmeros reales Con punto decimal Negativos y positivos Ejemplos 2.345; -3.1416; 3,0
Introduccin a la programacin Computacional

Tipos de datos lgicos (Booleanos)

Variable con valor lgico Acepta dos literales posibles: true y false (verdadero o falso) Ocupan 1 bit de memoria

Introduccin a la programacin Computacional

Tipos de datos Caracter y cadena Conjunto finito de smbolos que el computador reconoce Caracteres alfabticos
(A, B, C, . Z) (a, b, c, . z)

Caracteres numricos
(1, 2, 3, 4, 5, 6, 7, 8, 9, 0)

Caracteres especiales
(+, -, *, /, <, >, .. )
Introduccin a la programacin Computacional

Tipos de datos Caracter y cadena Una cadena es una sucesin de caracteres Estn delimitados por comillas (simples o dobles) El tamao de la cadena es la cantidad de caracteres
Hola 4 caracteres hola mundo 10 caracteres (cuidado con el espacio en blanco)

Introduccin a la programacin Computacional

variables
Una variable es un nombre o identificador asociado con un dato
Ejemplos: apellido, telefono, foto

Para cada variable, el programa reserva un espacio suficiente para guardar el dato en la memoria RAM Para recuperar el dato asociado con una variable, la CPU tiene que buscar en el espacio reservado Variable indica que se puede cambiar el dato asociado con un identificador No obstante, la ubicacin en la memoria nunca cambia
Introduccin a la programacin Computacional

Variables y la memoria
Variable Nombre 126 127 Nombre = Jose 128 129 130 131 Variable edad 132 133 134 Edad = 18 135 136 137 10010 Dato 18 100101001110 Dato Jose RAM

Introduccin a la programacin Computacional

Identificadores

No pueden coincidir con una palabra reservada Distincin entre maysculas y minsculas Secuencia de letras, dgitos, _ (subrayado) y $ No se puede poner acentos Siempre empiezan con una letra Ejemplos:
Correcto: apellido, aula219, dos_veces, cantidad$250 Incorrecto: class, nmero, re-100, 80s

Introduccin a la programacin Computacional

Operadores

Para manipular datos necesitamos operadores Cada operador est asociado con uno o ms datos, llamados operandos Los operandos tienen que ser del tipo correcto Operadores aritmticos Operadores relacionales Operadores lgicos Operadores especiales

Introduccin a la programacin Computacional

Constantes Una constante, a diferencia de una variable, es una posicin de memoria que registra un dato y que no cambia su valor durante la ejecucin de un programa.
Si un valor se usa frecuentemente es oportuno usar una constante. (PI=3.14159265359) PI * r ^ 2 (en este caso r es variable) 2 * PI * r (en este caso r es variable) pueden ser valores numricos, caracteres, cadenas de caracteres, booleanos
Introduccin a la programacin Computacional

Operadores aritmticos
Smbolo + * **, ^ / Div Mod descripcin Suma Resta Multiplicacin Exponenciacin Divisin Divisin entera Mdulo (resto) Tipos de operandos Entero o real Entero o real Entero o real Entero o real Entero o real Entero Entero Tipo de resultado Entero o real Entero o real Entero o real Entero o real real Entero Entero

Introduccin a la programacin Computacional

Operadores aritmticos: Divisin y resto

El resultado de una divisin de enteros es siempre un entero (se trunca la parte decimal) Ejemplo:

22 div 5, el resultado es 4

El resto es la parte del numerador que no se us para la divisin

15 mod 4, el resultado es 3
1 2 3 resto 15 4

Introduccin a la programacin Computacional

Operadores aritmticos: Prioridad

Es posible usar ms que un operador en una expresin: 2 + 4 * 3 El resultado de la expresin podra ser ambiguo: (2 + 4) * 3 = 6 * 3 = 18 2 + (4 * 3) = 2 + 12 = 14 Para resolver ambigedad, se utilizan prioridad y asociatividad
Prioridad 1 2 3 4 Operador ^, ** *, / Div, mod +, Introduccin a la programacin Computacional

Operadores aritmticos: ejemplo

Ejemplo: -27 * -27 * -27 * -54 -54 -51; -51;

2 + 35 / 10; 2 + 35 / 10; 2 + 35 / 10; + 3; + 3;

Introduccin a la programacin Computacional

Operadores aritmticos: Asociatividad

Todava podra existir ambigedad: 5 2 - 1; (5 2) 1 = 3 1 = 2 5 (2 1) = 5 1 = 4

Para resolver ambigedad de operadores aritmticos, Algunos lenguajes utilizan asociatividad izquierda-derecha: 5 2 1; 5 2 1; 3 1; 2;

Introduccin a la programacin Computacional

Operadores relacionales
El resultado de evaluar una expresin con un operador relacional es siempre true o false (boolean):

3 < 7; verdadero notaAsignatura > 9; depender del valor de notaAsignatura, pero solo puede ser verdero o falso
Operador < > = <= >= <> Introduccin a la programacin Computacional Significado Menor que Mayor que Igual que Menor o igual que Mayor o igual que

Operadores relacionales

Cul es el problema con la siguiente expresin? 3 < 4 < 5;

La expresin se evala de izquierda a derecha: 3 < 4 < 5; 3 < 4 < 5; true < 5; // ???

Introduccin a la programacin Computacional

Operadores lgicos
Operan sobre datos booleanos y devuelven tambin un booleanano Proposiciones lgicas (p, q) :

Si has comido y bebido o ests enamorado y no tienes deudas, entonces ests feliz.

Operador lgico No (not) Y (and) O (or)

Expresin Lgica No p (not p) p y q (p and q) p o q (p or q)

Significado Negacin de p Conjuncin de p y q Disyuncin de p y q

Introduccin a la programacin Computacional

Operadores lgicos
Si has comido y bebido o ests enamorado y no tienes deudas, entonces ests feliz. comido = true; bebido = false; enamorado = true; deudas = false; (comido Y bebido) o (enamorado y no deudas);

Introduccin a la programacin Computacional

Operadores lgicos: no (not)

En lgica, el valor true esta representado por un 1 y el valor false por un 0 Las tablas de verdad son la forma ms usual de mostrar los resultados de operaciones lgicas. Tabla de verdad de la negacin (NO):

P Falso Verdadero

No p Verdadero Falso

No (3 > 5); No (falso) verdadero

Introduccin a la programacin Computacional

Operadores lgicos: Y (and)

Tabla de verdad para la conyuncin (Y) lgica:


P Verdad Verdad Falso Falso Q Verdad Falso Verdad Falso PyQ Verdad Falso Falso Falso

((5 > 3) Y (6*2 = 12)); (no (5 > 3) Y (6*2 = 12));

Introduccin a la programacin Computacional

Operadores lgicos: o (or)

Tabla de verdad para la disyuncin (O) lgica:

P Verdad Verdad Falso Falso

Q Verdad Falso Verdad Falso

PoQ Verdad Verdad Verdad Falso

(no(5 > 3) o (6*2 = 12));

Introduccin a la programacin Computacional

Operadores lgicos: evaluacin


Dependiendo del lenguaje, se evala conyuncin lgica de izquierda a derecha (5 < 3) && (6*2 == 12); (5 < 3) && (6*2 == 12);

Si el resultado de la expresin a la izquierda es false, algunos lenguajes no evala la expresin a la derecha

Lo mismo pasa con disyuncin lgica cuando la expresin a la izquierda es true

Introduccin a la programacin Computacional

Prioridad y asociatividad
Determinan el orden de evaluacin Los operadores se evalan en orden de prioridad Si dos operadores tienen la misma prioridad, se evalan segn asociatividad Asociatividad izquierda-derecha significa que el operador a la izquierda se evala primero Siempre se puede utilizar parntesis para cambiar el orden de evaluacin

Introduccin a la programacin Computacional