Você está na página 1de 78

Fundamentos de

Informtica
Algoritmos y Programas

Ing. Carolyn M. Rojas Vargas


Objetivo de la asignatura

SER CAPAZ DE ANALIZAR, COMPRENDER Y


RESOLVER UNA AMPLIA VARIEDAD DE
PROBLEMAS COMPUTACIONALES, DISEANDO E
IMPLEMENTANDO SOLUCIONES EFICIENTES Y DE
CALIDAD, COMO RESULTADO DE LA APLICACIN
DE UN PROCESO METDICO
Objetivos
Al terminar este tema debers ser capaz de:
Definir qu es un algoritmo.
Describir las caractersticas que debe
cumplir un algoritmo.
Representar un algoritmo.
Definir qu es un programa.
Describir las propiedades del lenguaje C.
Resolver problemas

Qu clase de problemas?

Cmo es el proceso para


resolver un problema?

Cundo se dice que la solucin


es eficiente y de calidad?
Problemas, programas, algoritmos y
estructuras de datos
Algoritmos
+
PROBLEMA PROGRAMA
Estructuras
de datos

Problema: Conjunto de hechos o circunstancias


que dificultan la consecucin de algn fin.
Algoritmo: Conjunto de reglas finito e inambiguo.
Estructura de datos: Disposicin en memoria de
la informacin.
Programa: Algoritmos + Estructuras de datos.
Ejemplos de problemas
Corrector ortogrfico
palabro

A, ala, algoritmos, barco,


cosa, curso, datos,
estructuras, evaluacin
prcticas
S No

Correcta Error
Corrector ortogrfico

Supongamos un ordenador a 2 GHz.


Supongamos que el diccionario tiene 5 millones de
palabras, y el acceso y comparacin de cada palabra
tarda 100 ciclos de reloj.

Cada palabra tarda 0,25


segundos.
La correccin de un
prrafo de 100 palabras
tardara 25 segundos!!
Corrector ortogrfico

1000 palabras en 2 segundos = 1 palabra en 2 milisegundos.


125 veces ms rpido que la bsqueda bsica!
Planificador de rutas
Planificador de rutas

Calcular
ruta
Planificador de rutas

En slo 2 s
Planificador de rutas
Planificador de rutas

Cmo representar la informacin (lugares y


carreteras)?

Cmo calcular el camino ms corto entre dos


lugares?
Planificador de rutas
Representacin mediante un grafo:
Lugares = nodos.
Carreteras = arcos entre nodos.

C o ru a O v ie d o 304
B ilb a o
45
171

32
0
V ig o 356 G e ro n a
28
Z a ra g o z a

4
0
10

395
296

V a lla d o lid 32
5 B a r c e lo n a
19
3

9
M a d rid

34
3 25
40 1
191 V a le n c ia
335

B a d a jo z 241
Jan
15
0

2
24 M u r c ia
99

S e v illa 256 278


5

G ra n a d a
12

C d iz
Planificador de rutas
Cmo calcular los caminos mnimos en el mapa?
Fuerza bruta: empezar por Cdiz y probar todos los caminos
hasta llegar.
Supongamos que limitamos a 20 ciudades, existiendo 6
caminos por ciudad.
Existen 95 billones de caminos!!
Otro problema con grafos
Problema del viajante: encontrar una ruta que pase por todas
las ciudades con el mnimo coste.

C o ru a O v ie d o 304
B ilb a o
45
171

32
0
V ig o 356 G e ro n a
28
Z a ra g o z a

4
EN ESTE CASO ES 10
0

395
296

V a lla d o lid 32
5 B a r c e lo n a
19

SENCILLO, PERO
3

9
M a d rid

34
25
Y SI TENEMOS...?
3
40 1
191 V a le n c ia
335

B a d a jo z 241
Jan
15
0

2
24 M u r c ia
99

S e v illa 256 278


5

G ra n a d a
12

C d iz
Introduccin

Un ordenador es un sistema para procesar


informacin

Entrada = Salida =
Procesador
Datos Resultados

Algoritmo
Introduccin

Ciclo de vida del software

ANLISIS

DISEO
IMPLEMENTACIN
PRUEBAS

DOCUMENTACION
Contenidos

1. Introduccin
2. Concepto de algoritmo
3. Lenguajes de representacin algortmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programacin
7. El proceso de programacin
8. Introduccin al lenguaje C
Concepto de algoritmo

Algoritmo (segn el DRAE):


(del rabe al-Khowrizm) Conjunto ordenado y
finito de operaciones que permite hallar la solucin
de un problema
Ejemplos sencillos de algoritmos segn esta definicin
podran ser una receta de cocina o las instrucciones
para armar una bicicleta.
Concepto de algoritmo

En Informtica:
Un algoritmo es una secuencia de pasos a seguir
para resolver un problema usando un computador u
ordenador.
La algoritmia o ciencia de los algoritmos, es uno de los
pilares de la informtica.
Concepto de algoritmo

Definiciones bsicas:
Procesador:
Procesador cualquier entidad capaz de resolver un
problema
Entorno:
Entorno conjunto de utensilios que el procesador
puede utilizar
Estado:
Estado situacin en la que se encuentra un entorno en
un momento dado.
Concepto de algoritmo

Definiciones bsicas
Accin:
Conjunto finito de operaciones que permiten llegar de
un estado inicial bien definido a otro tambin bien
definido.
Tipos de acciones:
Accin primitiva o elemental
Puede ser realizada directamente por el procesador.

Accin compuesta o abstracta


Ha de descomponerse en acciones ms elementales para
poder ser entendida por un procesador.
Concepto de algoritmo

Definicin formal de algoritmo:


Dado un procesador, un entorno, y un problema
bien definido, un algoritmo es la secuencia finita de
acciones primitivas que llevan a la solucin del
problema
Concepto de algoritmo

Caractersticas de un algoritmo:
Preciso (no ambiguo): la instruccin a ejecutar en
cada paso queda determinada perfectamente.
Determinista: debe comportarse del mismo modo
ante las mismas condiciones. Si se sigue dos veces en
el mismo entorno, el resultado obtenido es el mismo.
Finito: Tiene fin tras un nmero determinado de
pasos.
Contenidos

1. Introduccin
2. Definiciones bsicas
3. Lenguajes de representacin algortmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programacin
7. El proceso de programacin
8. Introduccin al lenguaje C
Lenguajes
de representacin algortmica

Cmo se escribe un algoritmo?


Representndolo mediante un lenguaje
lenguaje de representacin algortmica
Dos tipos de representacin:
Pseudocdigo
Diagramas de flujo
Representacin algortmica

Pseudocdigo:
Pseudocdigo
Lenguaje similar al natural, pero al que se aaden
reglas para conseguir una definicin precisa del
algoritmo
Algunas reglas:
Empieza por la palabra Inicio y termina con la palabra Fin
Se escribe una accin por lnea
Se subrayan las palabras clave
Representacin algortmica

Diagrama de Flujo (DF):


(DF)
Representacin grfica del flujo de control de un
algoritmo
Elementos del (DF):

Entrada/
Terminal Proceso
Salida

no Conectores
Decisin Subprograma

si
Representacin algortmica

Pseudocdigo Diagrama de flujo


Inicio
Entorno
suma, num
SUMA <- 2
Inicio NUM <- 4
// Iniciar variables
SUMA <- SUMA +
suma<- 2 NUM
num <- 4
// Suma de los nmeros SI NUM <- NUM + 2
repetir
suma <- suma + num
NUM <= 100
num <- num +2
mientras (num <= 100) NO
// Escribir resultado escribir
escribir (suma) SUMA
Fin
Fin
Contenidos

1. Introduccin
2. Definiciones bsicas
3. Lenguajes de representacin algortmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programacin
7. El proceso de programacin
8. Introduccin al lenguaje C
Ejemplos de algoritmo

Hay que tener en cuenta que para resolver un


determinado problema existe ms de un algoritmo
Todos encuentran la solucin correcta
pero unos lo hacen mejor que otros.
Ejemplos de algoritmo

Multiplicar 981 por 1234


Varias formas (algoritmos) de hacerlo:
Mtodo clsico
Multiplicacin la russe
Divide y vencers

Con todas se alcanza la solucin


Cul es la mejor? Por qu?
Ejemplos de algoritmo

Mtodo tradicional

981

* 1234

3924

2943

1962

981

1210554
Ejemplos de algoritmo

Multiplicacin la russe
Se escriben el multiplicando y el multiplicador iniciando
dos columnas.
Se obtienen los siguientes elementos de las columnas,
hasta que quede un 1 en la columna de la izquierda:
La columna de la izquierda se va dividiendo entre dos,
ignorando los restos.
La columna de la derecha se va multiplicando por dos.
El resultado se obtiene sumando los nmeros de la
columna de la derecha cuyo nmero correspondiente de
la columna izquierda sea impar.
Slo es necesario saber sumar, multiplicar por 2 y dividir
entre 2. Se encuentra en el hardware de las ALUs.
Ejemplos de algoritmo

Multiplicacin la russe
981 1234
490 2468
245 4936
122 9872
61 19744
30 39488
15 78976
7 157952
3 315904
1 631808

SUMA = 1210554
Contenidos

1. Introduccin
2. Definiciones bsicas
3. Lenguajes de representacin algortmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programacin
7. El proceso de programacin
8. Introduccin al lenguaje C
Programas

Programa:
Programa Algoritmo codificado en un lenguaje de
programacin.
Programar:
Programar Fraccionar un problema en forma de
instrucciones adecuadamente formuladas para que
un ordenador pueda llevarlas a la prctica.
Programas

Las instrucciones se forman con elementos o


smbolos tomados de un determinado repertorio, y
se construyen siguiendo unas reglas precisas.
Todo lo relativo a los smbolos y reglas para
construir o redactar con ellos un programa se
denomina lenguaje de programacin.
Contenidos

1. Introduccin
2. Definiciones bsicas
3. Lenguajes de representacin algortmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programacin
7. El proceso de programacin
8. Introduccin al lenguaje C
Ejemplo de programa BASIC
10 PAPER 7: BORDER 7: INK 0: BRIGHT 0: FLASH 0
20 DIM a$(22,20): DIM f(22): DIM c(22): DIM g$(11,2): DIM z$(22,18):
DIM x$(22)
30 FOR n= 1 TO 22
40 READ f,c: LET b$=CHR$ 19+CHR$ 1: LET f(n)=f: LET c(n)=c
50 FOR m=0 TO 2: READ r$
60 LET b$=b$+CHR$ 22+CHR$ (f+m)+CHR$ c+ r$
70 NEXT m: LET a$(n)=b$: NEXT n: GO SUB 470
80 CLS : FOR N=1 TO 22: PRINT A$(N): NEXT N: IF x$(1)<>" " THEN LET
g$=x$
90 PRINT AT 0,2;"";AT 1,2;" EBEO";AT 2,2;"";AT 3,2;" OBLE";AT
4,2;" "; INK 3; AT 19,16;"Adaptacion para"; INK 1;AT
20,19;"MICRO";" HOBBY"
100 PLOT 128,0: DRAW 0,170: DRAW 10,4: DRAW 24,1: DRAW 82,0
110 PLOT 128,0: DRAW 10,4: DRAW 24,1: DRAW 88,0
120 DRAW 0,164: DRAW -2,2: DRAW 0,-164: DRAW -2,2: DRAW 0,164: DRAW
2,2: DRAW 0,-165
130 PLOT 128,0: DRAW -10,4: DRAW -24,1: DRAW -88,0
140 DRAW 0,164: DRAW 2,2: DRAW 0,-164: DRAW 2,2: DRAW 0,164: DRAW 2,2:
DRAW 0,-164
150 PLOT 128,170: DRAW -10,4: DRAW -24,1: DRAW -82,0
160 DATA 1,12," "," "," ",1,17," "," "," ",1,22," ","
"," ",1,27," "," "," "
170 PLOT 128,2: DRAW -10,4: DRAW -24,1: DRAW -85,0
180 PLOT 128,2: DRAW 10,4: DRAW 24,1: DRAW 85,0
Ejemplo de programa BASIC
290 DIM b$(22,2): FOR n=1 TO 11: FOR m=1 TO 2
300 LET s=INT (RND*22)+1
310 IF b$(s,1)=" " THEN LET b$(s,1)=g$(n,1): LET b$(s,2)=g$(n,2): NEXT m: NEXT n: GO TO
330
320 GO TO 300
330 DIM r(22): LET di=0: LET itn=0: LET u=.001
340 PRINT AT 20,2;di: IF di=275000 THEN LET di=350000: PRINT AT 20,2; FLASH
1;di'"CONSEGUIDO EL PLENO EN ";itn;" veces": PRINT #0;"Pulsa una tecla para empezar": GO
SUB 440: GO SUB 440: GO SUB 440: PAUSE 0: GO TO 80
350 INPUT n: IF n>22 OR n<1 THEN GO TO 350
360 IF r(n)=1 THEN GO TO 350
370 LET k=n: GO SUB 700
380 INPUT m: IF m>22 OR m<1 OR m=n THEN GO TO 380
390 IF r(m)=1 THEN GO TO 380
400 LET k=m: GO SUB 700
410 LET itn=itn+1: IF b$(n)=b$(m) THEN LET di=di+25000: PAPER 3: LET k=n: GO SUB 720:
PAPER 3: LET k=m: GO SUB 720: LET r(n)=1: LET r(m)=1: GO SUB 440: GO SUB 450: GO TO 340
420 BRIGHT 1: PAUSE 45: PAUSE 45: LET f=f(n): LET c=c(n): PRINT AT f,c;a$(n,8);AT
f+1,c;a$(n,14);AT f+2,c;a$(n,20): PRINT AT f,c;a$(n,7 TO 8);AT f+1,c;a$(n,13 TO 14);AT
f+2,c;a$(n,19 TO 20): BEEP .01,-10: PRINT a$(n): BEEP .02,0
430 LET f=f(m): LET c=c(m): PRINT AT f,c;a$(m,8);AT f+1,c;a$(m,14);AT f+2,c;a$(m,20):
PRINT AT f,c;a$(m,7 TO 8);AT f+1,c;a$(m,13 TO 14);AT f+2,c;a$(m,19 TO 20): BEEP .01,-10:
PRINT a$(m): BEEP .02,0: BRIGHT 0: GO TO 350
Ejemplo de programa BASIC
430 LET f=f(m): LET c=c(m): PRINT AT f,c;a$(m,8);AT f+1,c;a$(m,14);AT
f+2,c;a$(m,20): PRINT AT f,c;a$(m,7 TO 8);AT f+1,c;a$(m,13 TO 14);AT
f+2,c;a$(m,19 TO 20): BEEP .01,-10: PRINT a$(m): BEEP .02,0: BRIGHT
0: GO TO 350
440 BEEP .07,15: BEEP .06,25: BEEP .07,35: BEEP .07,35: BEEP .09,40:
RETURN
450 INK 8: LET xx=c(n)*8-2: LET yy=177-(f(n)*8): PLOT xx,yy: DRAW
27,0: DRAW 0,-27: DRAW -27,0: DRAW 0,27
460 LET xx=c(m)*8-2: LET yy=177-(f(m)*8): PLOT xx,yy: DRAW 27,0: DRAW
0,-27: DRAW -27,0: DRAW 0,27: INK 0: RETURN
470 RESTORE 260: FOR n=1 TO 22
475 IF n=17 THEN LET g$(6,2)=".": GO TO 540 ?
480 READ p$
490 FOR m=0 TO 7: READ f: POKE USR p$+m,f: NEXT m
520 IF n<12 THEN LET g$(n,1)=p$
530 IF n>11 THEN LET g$(n-11,2)=p$
540 NEXT n: RETURN
700 PAPER 5: LET y$=b$(k,1): LET t$=b$(k,2): LET f=f(k): LET c=c(k):
BEEP u,25: PRINT AT f,c+2;t$;AT f+1,c+2;" ";AT f+2,c+2;" ": BEEP
u,49: BEEP u,25
710 PRINT AT f,c+1;t$;" ";AT f+1,c+1;" ";y$;AT f+2,c+1;" v": BEEP
u,49: BEEP u,25
720 PRINT AT f(k),c(k);b$(k,2);" ";b$(k,2);AT f(k)+1,c(k);" ";b$
(k,1);" ";AT f(k)+2,c(k);" v ": BEEP u,49: PAPER 7: RETURN
Lenguajes de bajo nivel

No existen procedimientos ni funciones


No existen registros ni tipos definidos por el
usuario
No existen bloques estructurados (while,
repeat, etc.)
En definitiva: no hay abstracciones

Y sin embargo funciona.


Evolucin e historia de la
programacin

Lenguajes Lenguajes
de bajo nivel estructurados

(Basic, Fortran, (Pascal, C,


Ensamblador, ) Modula, ADA, )
Lenguajes estructurados
UNIT calculo;
Concepto de
INTERFACE mdulo/unidad
const
NMAX= 10;
Separacin de
MAX_GUARDA= 2000; interface/implementacin
type
TDatosEnt= array [1..NMAX] of integer;
TDatosSal= record
Tipos definidos
NPasos: Shortint;
Paso: array [1..NMAX-1] of record por el usuario
O1: byte;
O2: byte;
Fn: byte; Procedimientos y
end;
end; funciones
procedure Operar (var Arr: TDatosEnt; O1, O2, Func, Nivel: byte; var Vale: boolean); forward;
procedure CalculaCifras (var Entrada: TDatosEnt); forward;
procedure CalculaCifrasRec (var Entrada: TDatosEnt; PA, PB, Func, Nivel: byte); forward;
Lenguajes estructurados
IMPLEMENTATION
Separacin
var
suma, num: integer;
interface/
CopiaOrden: TDatosEnt; implementacin
procedure OrdenaComb (var Entrada: TDatosEnt; Nivel: byte);
var
i, j, maxim, pmaxim, tmp: integer;
begin Procedimiento
CopiaOrden:= Entrada;
num:= Nivel;
con parmetros
for i:= 1 to Nivel-1 do begin
maxim:= CopiaOrden[i];
pmaxim:= i;
j:= i+1; Bloques de
while j<=Nivel do begin
if CopiaOrden[j]>maxim then begin
control
maxim:= CopiaOrden[j]; estructurados
....
end;
end;
end;
Lenguajes estructurados

Procedimientos y funciones son


abstracciones de control
Los tipos definidos por el usuario son
abstracciones de datos
Las unidades, mdulos o paquetes son
abstracciones de nivel superior:
abstracciones de funcionalidades
Lenguajes estructurados

Inconvenientes:
Los datos y los procedimientos de
manipulacin sobre los mismos van por
separado.
Es necesario garantizar la ocultacin de la
implementacin.
Proliferacin de variables globales. Qu
papel juegan?
Los programas son cada vez ms
complejos y difciles de mantener.
Evolucin e historia de la
programacin

Lenguajes Lenguajes Lenguajes


de bajo nivel estructurados orientados a objetos

(Basic, Fortran, (Pascal, C, (Smalltalk, C++, Java,


Ensamblador, ) Modula, ADA, ) Eiffel, )
Lenguajes orientados a objetos
// Interface
Una clase es un Tipo
class Timer { Abstracto de Datos
private:
double StartTime;
double ClockRate;
public: Encapsulacin de
Timer (void); datos y operaciones
bool StartTimer (void);
double ReadTimer (void);
bool Exists;
};

class Elipse {
protected:
double Fcx, Fcy; Los datos
double Frx, Fry, Fang;
son privados
void FsetXY (int x1, int y1, int x2, int y2);
public:
Elipse (int x1, int y1, int x2, int y2); Las operaciones
Elipse * Clonar (void);
son pblicas
void Pinta (IplImage *image, int color= 0, int ancho= -1);
};
Lenguajes orientados a objetos
// Implementacin Separacin
interface/
Timer::Timer (void)
{
implementacin
LARGE_INTEGER *QW= new LARGE_INTEGER;
Exists= QueryPerformanceFrequency(QW);
ClockRate= QW->LowPart;
delete QW;
}

bool Timer::StartTimer (void)


{
LARGE_INTEGER *QW= new LARGE_INTEGER;
bool res= QueryPerformanceCounter(QW);
StartTime= QW->LowPart;
delete QW;
return res;
}
Lenguajes orientados a objetos
Una clase encapsula los datos de un tipo
y las operaciones sobre el mismo
Una clase es, al mismo tiempo, un tipo
abstracto de datos y un mdulo que
encierra un conjunto de funciones
relacionadas
Separacin clara entre interface (parte
visible desde fuera) e implementacin
(oculta)
Resolucin de problemas
Cmo resuelve un problema de programacin un ingeniero?

A) Tecleando cdigo en una mquina.

B) Siguiendo un proceso metdico.


Resolucin de problemas
Cmo construye un puente
ARQUITECTO un arquitecto?
INFORMTICO
1. Estudio de viabilidad, 1. Anlisis del
anlisis del terreno, problema
requisitos pedidos, etc.
2. Disear los planos del
2. Diseo del
puente y asignar los programa
materiales. (alg. y estr.)
3. Poner los ladrillos de 3. Implementacin
acuerdo con los planos.
(programacin)
4. Supervisin tcnica del
puente. 4. Verificacin y
pruebas
Resolucin de problemas
MTODO CIENTFICO INFORMTICO

1.Observacin. 1. Anlisis del


problema
2. Diseo del
2.Hiptesis.
programa
(alg. y estr.)
3.Experimentacin. 3. Implementacin
(programacin)
4.Verificacin. 4. Verificacin y
pruebas
Conclusiones
1. Proceso de anlisis/diseo. No
empezar tecleando cdigo como locos.
2. Usar abstracciones, respetando los dos
principios bsicos:
Encapsulacin: las funciones
relacionadas deben ir juntas (clases,
mdulos, paquetes, etc.).
Ocultacin de la implementacin: los
aspectos de implementacin no son
visibles fuera del mdulo, clase, etc.
Lenguajes de programacin
Clasificacin

Lenguaje mquina:
Es el que entienden los circuitos del computador (CPU)
Inconvenientes:
depende del modelo de computadora;
el repertorio de instrucciones es muy reducido
es muy laborioso
Ensamblador (lenguaje de bajo nivel)
Cdigo nemotcnico para recordar mejor las
instrucciones mquina
Se mantienen los otros inconvenientes del lenguaje
mquina
Lenguajes de alto nivel
No dependen de la computadora, y facilitan la tarea de
programacin
Lenguajes de programacin
Lenguajes de alto nivel

FORTRAN (Formula Translation): Primer LAN(dcada


de los 50). Aplicaciones cientfico-tcnicas (grandes
computadores y supercomputadores)
COBOL (COmmon Busines Oriented Language): 1960.
Aplicaciones comerciales y de gestin.
BASIC (Beginners All-purpose Symbolic Instruction
Code). Desarrollado a mediados de los 60 como
lenguaje interactivo paraprincipiantes de
programacin.
Visual BASIC: es el lenguaje ms popular. Versin de
Microsoft del BASIC. Permite crear programas en un
ambiente visual (lenguaje de 4 generacin).
C: Desarrollado en Bell Labs a comienzos de los 70. Es
complejo, pero es potente, flexible y eficiente (el ms
utilizado para PCs y estaciones de trabajo).
Lenguajes de programacin
Lenguajes de alto nivel

Pascal: Creado por Wirth en 1971. El mejor lenguaje


para aprender a programar y describir algoritmos.
Ada: Es un lenguaje definido por el Ministerio de
Defensa de USA a finales de los 70. Esta basado en el
Pascal y tiene unas reglas muy estrictas.
C++: Ideado a comienzos de los 80 en los BellLabs.
Es una variante del C que permite utilizar la moderna
metodologa de la programacin (programacin
orientada a objetos)
Java: Desarrollado en 1991 por Sun, es similar a C++
pero ms sencillo de aprender y usar. Muy usado para
programa interactivos y dinmicos (applets de
web). Se ha definido un computador virtual Java
compatible, cualquier computador con un programa
que lo emule puede ejecutar aplicaciones Java.
Lenguajes de programacin
Lenguajes de alto nivel

Otros lenguajes (usados en


Inteligencia artificial):
LISP (LISt Processing): Finales de los 50.
Procesamiento de datos no numricos
(caracteres, palabras y otros smbolos). Se
usa en Inteligencia Artificial.
PROLOG:(Programming Logic): Trabaja con
relaciones lgicas entre hechos. Muy usado
en inteligencia artificial.
LOGO: versin simplificada del LISP para
nios.
Lenguajes de programacin
Traductores

Traduccin:
Traduccin Proceso por el cual se convierte el
texto del programa de entrada en el de salida.
Lenguaje fuente: lenguaje en el que se escribe la
entrada
Lenguaje objeto: lenguaje en el que se escribe la
salida. En general, muy diferente del lenguaje fuente
Compilador:
Compilador Programa que acepta como
entrada un texto de programa escrito en un
cierto lenguaje de alto nivel y genera como
salida texto de programa en otro lenguaje,
generalmente lenguaje mquina.
Lenguajes de programacin
Compiladores

Compilar Convertir de un formato a otro


El significado deber permanecer inalterado en la conversin
La entrada est escrita en un lenguaje Tiene estructura
Semntica asociada y descrita en trminos de esa estructura

El compilador comprende el programa y recolecta su


significado en una representacin semntica intermedia

A la hora de generar la salida se genera estructura y


significado
Lenguajes de programacin
Intrpretes

Forma de trabajar cada vez ms frecuente: Intrpretes


En vez de traducir, realiza las acciones directamente
Por ejemplo, la mquina virtual de Java
Ventajas del uso de intrpretes
Portabilidad: Un intrprete se escribe, habitualmente, en lenguaje
de alto nivel
Sencillez: Escribir un intrprete es menos costoso que escribir un
compilador
Sealizacin y manejo de errores: los compiladores cuidan
demasiado la eficiencia de cdigo
Seguridad: Funcionamiento ms transparente al usuario
Desventajas: Velocidad de los programas interpretados y
consumo de memoria.
Lenguajes de programacin
Compiladores vs. Intrpretes

Compiladores:
El procesamiento del programa es considerable
El mecanismo de interpretacin previsto es la CPU (hw)
La ejecucin del programa traducido es relativamente
rpida

Intrpretes:
El procesamiento del programa es entre mnimo y
moderado
El mecanismo de interpretacin es un programa (sw)
La ejecucin del programa es, en general, ms lenta y ms
segura
Contenidos

1. Introduccin
2. Definiciones bsicas
3. Lenguajes de representacin algortmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programacin
7. El proceso de programacin
8. Introduccin al lenguaje C
Proceso de programacin

A n a lis is D is e o T ra d u c c i n a c d ig o C

E rr o r e n e l tra ta m ie n to E r r o r e n tie m p o
d e lo s d a to s d e c o m p ila c i n

P ru e b a s d e e je c u c i n C o m p ila c i n a l o rd e n a d o r
A.out cc vi

E r ro r e n tie m p o
d e e je c u c i n
Contenidos

1. Introduccin
2. Definiciones bsicas
3. Lenguajes de representacin algortmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programacin
7. El proceso de programacin
8. Introduccin al lenguaje C
Lenguaje C
Es un lenguaje estructurado de propsito
general, orientado a la programacin de
sistemas
Origen:
Evolucin de BSPL y B
The C programming language, B. Kernighan & D.
Ritchie. (1978)
ANSI C:
Versin estndar en 1983
Nueva revisin en 1999
Uno de los lenguajes ms utilizados en la industria
del software actual y en el mundo Unix/Linux
Lenguaje C

Caractersticas de C
Propsito general
Vlido para diversos objetivos
Portable
NOTA: Sin embargo, siempre hay que compilar y probar un
programa en el ordenador destino
Eficiente
Apropiado para la programacin de sistemas
Extendido.
Gran cantidad de bibliotecas de funciones, compiladores,
etc.
Amplia difusin y uso.
EJERCICIOS
EJERCICIOS
EJERCICIOS
EJERCICIOS
EJERCICIOS
Gracias

Você também pode gostar