Você está na página 1de 10

Un usuario con cierta especializacin es capaz de entenderse con la mquina a travs de un "programa" que l mismo escribe en algn lenguaje

de programacin.

Conceptos Bsicos de Programacin

Qu es un lenguaje de programacin?
Es una notacin sistemtica que define procesos computacionales
[Ellis Horowitz]

Programacin Estructrurada

Programacin Estructrurada

Clasificacin No.1
Los lenguajes de programacin se Introduccin clasifican en tres categoras: Lenguajes de Mquina: instrucciones directamente entendibles por el computador; no necesitan traduccin para la CPU (comprensin y ejecucin). Lenguajes de bajo nivel: Simplifican la programacin (assembler)

Clasificacin No.2

IMPERATIVOS
Orientados a la forma de pensar del computador: Secuencialidad Estructuras de Control Repetitivas Variables(Direccin, Estado) No orientados al modo de pensar humano. El concepto bsico es la instruccin Sus elementos han ido avanzando para hacerse ms cmodos (subprogramas, mdulos, parmetros) Ensamblador Fortran Cobol RPG PL1 Algol C Pascal Modula-2 Ada

ADD (suma) SUB (resta) JUMP (Salto de control) INC (incremento unitario)

Lenguajes de alto nivel: instrucciones o sentencias son escritas con palabras similares a los lenguajes humanos.

void menviamensaje() { }

Programacin Estructrurada

Programacin Estructrurada

Clasificacin No.2

Clasificacin No.2

DECLARATIVOS
Basado en el pensamiento humano: las matemticas Elementos bsicos: funciones, relaciones, frmulas, etc.

Funcionales LISP Hope ML Miranda Haskell Lgicos Prolog

ORIENTADOS A OBJETOS
Orientados al modo de pensar humano. Modelamiento mundo real Incluye clases, objetos, herencia, polimorfismo

Smalltalk C++ Objective C Eiffell Java C#

Programacin Estructrurada

Programacin Estructrurada

Conceptos Qu es un Intrprete y un Compilador? En general los intrpretes y compiladores son traductores. El compilador es una mquina terica que tiene como entada un texto escrito en lenguaje X (fuente) y como salida un texto escrito en lenguaje Y (objeto).

Conceptos
Compilador Programas que realizan la traduccin de un lenguaje de alto nivel a un lenguaje de mquina. Intrprete Los intrpretes en lugar de generar un programa objeto, como en los compiladores, efectan la operacin que debera realizar el programa fuente. Un intrprete lee el cdigo base y luego lo convierte en acciones, es decir, lo ejecuta en ese instante.
Programacin Estructrurada

Programacin Estructrurada

Definicin

Definicin
ALGORITMOS Es un conjunto de instrucciones que conducen a la solucin de un problema. Corresponde a una secuencia de pasos -exentos de ambigedades- que lleva a la solucin de un problema.

Definicin de Algoritmo y Programas o Los algoritmos y programas de computadoras, con independencia del lenguaje en que estn escritos, estn diseados para manipular informacin o datos. o Los datos pueden ser cifras de ventas mensuales de un gran almacn, la nmina del personal de una empresa o un listado de direcciones de los alumnos.

PROGRAMAS

Corresponde al algoritmo expresado en algn lenguaje de programacin, que el computador puede comprender.
Programacin Estructrurada

Programacin Estructrurada

Diseo de Algoritmos Proceso de Diseo de Algoritmos Corresponde a un proceso creativo No existe alguna regla, ni algoritmo para indicar como escribir programas
El proceso completo de diseo de un ALGORITMO consta de los siguientes pasos : ANALISIS DEL PROBLEMA DISEO DEL ALGORITMO VERIFICACION MANUAL DEL ALGORITMO

Diseo de Algoritmos
Anlisis del problema Fase de trabajo en el computador

Diseo del Algoritmo

Codificacin del Algoritmo en programa

Verificacin manual del Algoritmo

Ejecucin del programa Verificacin del programa

Fase de resolucin del Problema

Programa de trabajo documentado


Programacin Estructrurada

Programacin Estructrurada

Diseo de Algoritmos Anlisis del Problema


o

Diseo de Algoritmos
o

Requiere del mximo de imaginacin y creatividad por parte del programador. Se debe examinar cuidadosamente el problema a fin de identificar que tipo de informacin se necesita producir.

Se debe identificar aquellos elementos de informacin dados en el problema que puedan ser tiles para obtener la solucin. Finalmente, un procedimiento para producir los resultados deseados a partir de los datos, y que ser el algoritmo.
Anlisis del problema

Anlisis del problema

Diseo del Algoritmo

Verificacin manual del Algoritmo Definicin del problema

Datos de entrada

Datos de salida = resultados

Programacin Estructrurada

Programacin Estructrurada

Diseo de Algoritmos
Diseo del Algoritmo Caractersticas de un buen algoritmo:
Preciso Indicar el orden de realizacin de cada paso Definido Si se sigue dos veces, se debe obtener el mismo resultado cada vez Finito Si se sigue un algoritmo se debe terminar en algn momento
Programacin Estructrurada

Diseo de Algoritmos Dividir el problema en subproblemas ms sencillos

Anlisis del problema

Problema Complejo

Solucin podr requerir muchos pasos.

Diseo del Algoritmo

Verificacin manual del Algoritmo

METODOLOGIA DE DISEO DESCENDENTE

Divide y vencers

Programacin Estructrurada

Diseo de Algoritmos Un buen mtodo de trabajo para solucionar problemas complejos es el diseo descendente y refinamiento sucesivo. Pasos :

Diseo de Algoritmos Ejemplo : Clculo de la superficie de un rectngulo.


Problema clculo de la superficie de un rectngulo

1 resolver el problema y disponerlas en orden. 2 3

Identificar tareas ms importantes a ejecutar para Refinamiento (incompletitud o inconsistencia); se amplia la primera descripcin aadiendo ms detalles a estos procesos y as se obtiene una nueva lista de actividades del algoritmo. Algunos de estos pasos pueden incluso requerir refinamiento adicional que conducen entonces a una tercera descripcin del algoritmo.
Programacin Estructrurada

Entrada de Datos

Clculo de Superficie

Salida de resultados

Entrada altura

Entrada base

Superficie = base * altura

Salida superficie

Programacin Estructrurada

Diseo de Algoritmos Los algoritmos por lo general constan de tres partes.

Diseo de Algoritmos Verificacin Manual del Algoritmo Debemos asegurarnos de : a. que el algoritmo realiza las tareas para las que se ha diseado.
b.
Anlisis del problema

ENTRADA PROCESO

Informacin dada al algoritmo Clculos encontrar problema necesarios para la solucin del

produzca el o los resultados correctos y esperados.

Diseo del Algoritmo

SALIDA

Respuestas dadas por el algoritmo o resultados finales de los clculos


Programacin Estructrurada

Verificacin manual del Algoritmo

Programacin Estructrurada

Diseo de Algoritmos El modo ms normal de comprobar un algoritmo es mediante su ejecucin manual. Usando datos significativos que abarquen todo el posible rango de valores y anotando en una hoja de papel los valores que van tomando en las diferentes fases, los datos de entrada o auxiliares y por ltimo los valores de los resultados. Este proceso se conoce como prueba de ALGORITMO (traza).

Datos y Operaciones

LOS DATOS Y OPERACIONES BSICAS


o

Los algoritmos y programas de computador, con independencia del lenguaje en que estn escritos, estn diseados para manipular informacin o datos.

Los datos pueden ser cifras de ventas mensuales de un gran almacn, la nmina del personal de una empresa o un listado de direcciones de los alumnos.

Programacin Estructrurada

Programacin Estructrurada

Los Datos LOS DATOS o Son los objetos sobre los que opera un computador. o Los tipos de datos se manipulam se dividen en:
SIMPLES ESRUCTURADOS Estn constituidos por datos de tipo simple Numricos Lgicos caracter

Los Datos
Segn sea la informacin que guardemos en los datos, los clasificaremos en los siguientes tipos:

Datos numricos
Son los relativos a las diferentes clases de nmeros.

ENTEROS
Cadenas (string) Vectores y Matrices (arrays) Registros (record) Archivos (file) Punteros (pointer, *) Creados a necesidad del usuario (TDU)
Programacin Estructrurada

REALES
Tiene parte entera y decimal. 7.5 ; 4.321 ; -7.4351 ; 7.0 ; 8.0 Representacin de los nmeros reales : coma fija 3.84567812 coma flotante 4.86732 * 10 9 4.86732E9

No tiene parte decimal. 15 ; 200 ; -12 ; 8 ; 7

DEFINIDOS POR EL USUARIO

Programacin Estructrurada

Los Datos
Datos tipo caracter o alfanumricos
Son los caracteres que puede interpretar el computador: Alfabticos (A, B, C, ...., Z, a, b, c, ..... , z) Dgitos (0, 1, 2, ...., 9) Especiales ($, *,<, >, /, #,......) Una CADENA de caracteres es una secuencia o serie de caracteres vlidos encerrados entre caracteres especiales denominados delimitadores y que suelen ser comillas: Ejemplo : Castellon No. 3344

Los Datos

Datos lgicos o booleanos


Son aquellos que slo pueden tomar dos valores verdadero o falso. o Bsicamente estos datos se utilizan para representar las condiciones que se incluyen en las estructuras de control. Se forman a partir de los operadores relacionales y lgicos.

Programacin Estructrurada

Programacin Estructrurada

Los Operadores

Los Operadores

LOS OPERADORES

RELACIONALES O CONDICIONALES Utilizados para formar expresiones booleanas (al ser evaluadas producen el valor verdadero o falso).
Comparacin Resultado Verdad Falso Verdad Verdad Verdad Verdad Verdad Verdad Falso

Todos los smbolos que representan enlaces entre cada uno de los argumentos que intervienen en una operacin se llaman OPERADORES. Se utilizan para construir expresiones. Los operadores pueden ser: oRelacionales o condicionales oAritmticos oAlfanumricos oLgicos

Signo
< = > <= >= <>

Significado
Menor que Igual Mayor que Menor o igual que Mayor o igual que Distinto

25 < = 25 25 < > 25 25 < > 4 A < B AA > A B > AAA AB > AAAA C < c 2 < 12

0 < 1 < 2<.......<9 < A < B<.......Z <a < b <.......<z


Programacin Estructrurada Programacin Estructrurada

Los Operadores

Los Operadores

ARITMETICOS Para tratar los nmeros se utilizan los operadores aritmticos, que, junto con las variables numricas forman expresiones aritmticas
Signo
+ * ^ /

ALFANUMRICOS Usado para unir datos alfanumricos.


Signo

Significado Concatenacin

Expresin Pseudo + cdigo 3 + , + 1416

Resultado Pseudocdigo 3,1416

Significado
Suma Resta Multiplicacin Potenciacin Divisin real

Expresin 12 * 12 12 ^ 2

Resultado 144 144

a b

Hola, qu tal?

a + b

Hola, qu tal?

Concatenacin : Unir expresiones alfanumricos como si fueran eslabones de una cadena


Programacin Estructrurada Programacin Estructrurada

Los Operadores

Parntesis PARENTESIS Los parntesis se utilizan para anidar expresiones.


Signo
( )

LOGICOS Cambian sus operandos de acuerdo con las reglas del lgebra de Boole con el fin de producir un nuevo valor que se convierta en el valor de la expresin.
Signo
OR AND NOT

Significado
Anida expresiones

Expresin (7>4) OR (5=3) (7>4) AND (5<>3) (16=(4*4))&& 2 <>2 (2+3) * (4-7)

Resultado Verdad Verdad Falso -15

Significado
Suma lgica Producto lgico Negacin

Expresin V AND F NOT F V OR F

Resultado Falso Verdad Verdad

La prioridad para evaluar los operadores es cualquier expresin es: 1.- Parntesis (empezando por los ms internos). 2.- Potencias. 3.- Productos, divisiones: 4.- Sumas y restas. 5.- Concatenacin. 6.- Relacionales. 7.- Lgicos.
Programacin Estructrurada

OR u O : es un operador binario, afecta a dos operadores. La expresin


formada es cierta cuando al menos uno de sus operandos es cierto. AND o Y: es un operador binario, afecta a dos operadores. La expresin formada es cierta cuando ambos operandos son cierto. NOT o NO: es un operador unario, afecta a la expresin cambiando su estado lgico, si era verdad lo transforma a falso; y al revs.
Programacin Estructrurada

Variables VARIABLES o Zona de memoria referenciada por un nombre de variable, donde se puede almacenar el valor de un dato, que puede cambiarse cuando lo deseemos. o El nombre de la variable es elegido por el usuario. o Una variable no es un dato, sino un rea de memoria que contendr un dato. El computador asigna a cada variable una direccin de memoria.
Cdigo Nombre Edad 105 101 102 103 104

Variables
o

El tipo de una variable debe ser uno de los cuatro tipos de datos descritos : real, entera, lgica, cadena. Aunque no es obligacin en todos los lenguajes s que es conveniente declarar las variables en la cabecera del programa y naturalmente del algoritmo.
Es buena prctica de programacin utilizar nombres de variables significativos que sugieran lo que representan ya que eso har los algoritmos y programas ms legibles y fciles de comprender.

Variable Nombre Edad Sueldo Cdigo

Direccin 101 105 108 103

55
108 Sueldo 109 110 111 112

Programacin Estructrurada

Programacin Estructrurada

Variables o Para que este perfectamente definida la variable, debemos especificar: su nombre, el tipo de dato que contendr (numrico, caracter, booleano). o No podemos utilizar las palabras reservadas de un lenguaje para nombrar variables (printf, scanf, if, for) Tipos de Variables
Numricas
Nombre_variable = numero a=1 numero = 55 contador = 675

Asignacin INSTRUCCIONES DE ASIGNACION o El nombre de la variable cuyo valor va a ser modificado debe ser escrito a la izquierda del operador de asignacin. A la derecha se sita una expresin cuyo valor se proporciona a la variable situada a la izquierda.
o

Alfanumricas
Nombre_variable = comentario b = Hola apellido = Fernndez resp =

La operacin de asignacin es destructiva ya que al almacenarse un nuevo valor en una variable se borra el que tena antes. Es posible utilizar el mismo nombre de variable en ambos lados del operador de asignacin. Contador = Contador + 1

Programacin Estructrurada

Programacin Estructrurada

Asignacin
o

Variables o Al hecho de poner a=1 o b=Hola, se le llama asignacin de variables. o La asignacin introduce en una variable un valor o el contenido de otra variable. Tanto estos valores como la variable a la que se asigna deben ser del mismo tipo: Nombre_variable1 = Nombre_variable2
Codigo1 Nombre Edad 101 102 103 104

Se utiliza para asignar valores a variables o, lo que es lo mismo, cambiar el valor almacenado en la posicin de memoria de una variable. La operacin de asignacin se denota con el smbolo = El formato de la instruccin es el siguiente
Nombre de la variable = expresin o valor Area = Pi * Radio ^2 Pi = 3.141592

55
105 108

codigo2 = codigo1 nombre = Franco Edad = 45 codigo1 = nombre codigo2 = edad

109

110

111

112 Codigo1

Programacin Estructrurada

Programacin Estructrurada

Constantes
CONSTANTES Toda posicin de memoria, referenciada por un nombre de constante, donde se almacena un valor que no puede cambiarse o permanece invariable a lo largo del proceso.
AnguloRecto = 90 pi = 3,14159 nacion = CHILE a=3 b=0 c=a+b b=a+b a=b a = 10 b=5 a=b b=a a=1 b=4 c=a+b d=a-b a=c+2*b b=c+b c=a*b d=b+d a=8 b=5 c=0 c=c+a a = a + c - 2* b b=b+b a=c
Programacin Estructrurada

Ejemplos de Asignaciones

Asignacin Aritmtica AMN = 3 + 14 + 8 TER1 = 14.5 + 8 TER2 = 0.75 * 3.4 MEDIA = TER1 / TER2

Asignacin lgica M N P = 3>5 = M o (7 >= 12) = 7>6

Asignacin de caracteres X = 12 de octubre de 1492

Programacin Estructrurada

Estructuras de Control ESTRUCTURAS DE CONTROL


Estructura secuencial Estructura selectiva Estructura repetitiva Estructura de datos
Se trata de saber, cual o cuales de estas estructuras y en que combinacin se debern emplear para resolver un problema

Estructuras de Control
Estructura Secuencial Esta estructura indica el orden lgico en el cual se deben ejecutar las instrucciones que conforman el algoritmo.

Ejemplo : Algoritmo para lavarse las manos (versin 1.0)


Empezar

1.2.3.4.5.6.Terminar

Activar el agua Mojarse las manos Aplicar jabn Enjuagarse las manos Desactivar el agua Secarse las manos

Programacin Estructrurada

Programacin Estructrurada

Estructuras de Control
Estructura Selectiva Esta estructura permite al algoritmo decidir si realiza una determinada accin u otra, previa evaluacin de una condicin.
Ejemplo : Algoritmo para lavarse las manos (versin 1.01)
Empezar

Estructuras de Control
Estructura Repetitiva Esta estructura permite al algoritmo, repetir una serie de acciones, ya sea un nmero determinado de veces o hasta que se cumpla una condicin de trmino.
Ejemplo : Algoritmo para lavarse las manos (versin )
Empezar

1.- Si hace mucho fro entonces Activar el agua caliente De lo contrario Activar el agua fra 2.- Mojarse las manos 3.- Aplicar jabn 4.- Enjuagarse las manos 5.- Desactivar el agua 6.- Secarse las manos
Terminar
Programacin Estructrurada

Empezar Si hace mucho fro entonces 1.Activar el agua caliente De lo contrario Activar el agua fra 2.- Mojarse las manos 3.- Aplicar jabn 4.- Enjuagarse las manos 5.- Desactivar el agua 6.- Repetir 1,2,3,4 y 5 hasta que manos estn limpias. 7.- Secarse las manos
Programacin Estructrurada

Terminar

Estructuras de Control
Estructura de Datos Permitirn que el algoritmo manipule datos en forma organizada. Podrn ser sencillas (variables simples) o compuestas (variables tipo vector o matriz).
Ejemplo : Algoritmo para lavarse las manos (versin 2.0) Empezar 1.- Contar 0 2.- Si hace mucho fro entonces Activar el agua caliente De lo contrario Activar el agua fra 3.- Mojarse las manos 4.- Aplicar jabn 5.- Enjuagarse las manos 6.- Desactivar el agua 7.- Contar Contar + 1 8.- Repetir 2,3,4,5,6 y 7 hasta que manos estn limpias.
Terminar

Primitivas
USO DE PRIMITIVAS Entenderemos por primitivas a todas aquellas palabras o comandos que definiremos como propias de un lenguaje de construccin de algoritmos.

En este curso usaremos las siguientes primitivas :


Primitivas de delimitacin de accin Primitivas de delimitacinde accin Primitivas de entrada y salida de datos. Primitivas de entrada y salida de datos. Primitivas de estructura selectiva. Primitivas de estructura selectiva. Primitivas de estructura repetitiva. Primitivas de estructura repetitiva.
Programacin Estructrurada

9.- Secarse las manos


Programacin Estructrurada

Primitivas
Primitivas de delimitacin de Accin La mayora de las primitivas tienen un rango de accin. Necesitamos indicar donde comienza y donde termina la accin de una primitiva.
Ejemplo : Algoritmo para lavarse las manos

Primitivas
Primitivas de Entrada y Salida de Datos Los algoritmos para solucionar un problema necesitaran datos, y de la misma manera necesitaran entregar resultados. Esto nos lleva a la necesidad de utilizar algn medio para poder comunicarnos con el algoritmo. scanf (variable1, variable2,...)

1.2.3.4.5.6.-

Activar el agua Mojarse las manos Aplicar jabn Enjuagarse las manos Desactivar el agua Secarse las manos

algoritmo printf (variable1, variable2,...)

Programacin Estructrurada

Programacin Estructrurada

Primitivas
Primitivas de Estructura Selectiva Como poder indicar que deseamos hacer una u otra cosa.?
Estructura Selectiva con una sola direccin.
if (expresin lgica) { instruccin 1 instruccin 2 .....instruccin N }

Primitivas
Primitivas de Estructura Repetitiva Como poder indicar que deseamos repetir una serie de pasos o instrucciones.? Estructura Repetitiva con nmero de repeticiones constante.
for (<variable simple= valor inicial>;<condicinfinal>;<inc/dec>) { instruccin 1 Ejemplo instruccin 2 .....instruccin N for (i=1;i<=5;i++) }

Estructura Selectiva con dos direcciones


if (expresin lgica) { instruccin 1 instruccin 2 .....instruccin N } else { instruccin A instruccin B .....instruccin Z }
Programacin Estructrurada

{ }

printf(primero) printf(segundo)
Programacin Estructrurada

Primitivas
Estructura Repetitiva con nmero de repeticiones variables
do { instruccin 1 instruccin 2 .....instruccin N } while(expresin lgica);

Tipos de Instrucciones TIPOS DE INSTRUCCIONES Las instrucciones disponibles en un lenguaje de programacin dependen del tipo del lenguaje. Las instrucciones bsicas, independientes del lenguaje son:
Ejemplo gets(tunombre); do { printf (hola %s,tunombre) printf (Repite? :) scanf (%c,&respuesta) } while(respuesta == S)
Programacin Estructrurada

o o o o o

instrucciones de inicio/fin instrucciones de asignacin instrucciones de lectura instrucciones de escritura instrucciones de bifurcacin

Programacin Estructrurada

Instrucciones de Asignacin
Ejemplo 1 A 80

Instrucciones de Lectura de Datos


Ejemplo 1 scanf (numero, horas, tasa)

La variable A toma el valor de 80 Antes de la ejecucin de las tres instrucciones, el valor de A, B y C es indeterminado. Si se desea darles un valor inicial habr que hacerlo explcitamente. A 0B 0 C 0

Ejemplo 2 A 12 B A C B

Lea del teclado los valores de las variables NUMERO, HORAS y TASA almacenndolas en la memoria. Si los tres nmeros que se digitan en respuesta a la instruccin son 12325, 32, 1200, significara que se han asignado a las variables esos valores y equivaldra a la ejecucin de las instrucciones :

Ejemplo3 A 10 B 20 AUX A A B B AUX

A toma el valor 10; B toma el valor 20; AUX toma el valor de A, o sea, 10; A toma el valor de B, o sea, 20; B toma el valor de AUX, o sea, 10.
Programacin Estructrurada

Numero horas 32 tasa 1200

12325

La sintaxis de estas primitivas es un poco ms complejaya se darn cuenta


Programacin Estructrurada

Elementos Bsicos de un Programa


Los elementos bsicos constructivos de un programa o algoritmo son :
o o o o o o o Palabras reservadas (printf, scanf, if, do , .....) identificadores (nombres de variables, procedimientos, etc..) caracteres especiales (coma, punto y coma, apstrofe, ....) constantes variables expresiones instrucciones

Cabecera del Programa


La cabecera de un programa o algoritmo consta de las siguientes partes:

o o o

Nombre del programa o algoritmo. Declaraciones de constantes, variables y tipos de datos definidos por el usuario. Declaraciones de sub programas.
definicin de constantes constante1= valor1 constante2= valor2 definicin de variables real lista de variables1 integer lista de variables2 void main() { <acciones> }
Programacin Estructrurada

Adems existen otros elementos que forman parte de los programas cuya comprensin y funcionamiento ser vital para el correcto diseo de un algoritmo :
o o o o o Bucles contadores acumuladores interruptores estructuras (secuenciales, selectivas, repetitivas)
Programacin Estructrurada

Por declaracin se entiende la instruccin que con ayuda de las primitivas VAR, CONST, TIPO, etc...permite asignar a cada variable o constante con nombre, un determinado tipo de datos o un valor, respectivamente :

....Identificar componentes bsicos


Biblioteca externa #include <stdio.h> #define DOS 2 Declaracin de constante Comentarios /*Programa que solicita un valor entero y comprueba su paridad*/ void main( ) { int ValorEntrada; Declaracin de variable Instruccin de salida Instruccin de entrada printf(Ingrese nmero >>); scanf(%d, &ValorEntrada); //Comprobacin de paridad if ( (n%DOS) = = 0) printf(Nmero par); else printf(Nmero impar);

Expresin (operadores + operando)


Programacin Estructrurada