Módulo 7 (sin estilo)

Post on 12-Jul-2015

286 views 2 download

Transcript of Módulo 7 (sin estilo)

Módulo 7

ALGORITMOS Y ESTRUCTURA DE DATOS

PROFESOR: SIRACUSA EMILIANO

MARTÍN

Página Web: www.esiracusa.jimdo.com

Anidamiento de procedimientos:Es cuando un procedimiento función está declarado dentro de otro procedimiento o función.

Program p;var y: integer;

Procedure Q Procedure R

var y: integer,; beginy:= 8; end;

begin.{Q}Y:=y+1;R;end; {Q)

BeginY:=3;Q; end.

R está anidado en Q

Program p;var y: integer;

Procedure Q Procedure R

var y: integer,; beginy:= 8; end;

begin.{Q}R;Y:=y+1;end; {Q)

BeginY:=3;Q; end.

Traza de PProgram p;var y: integer;

Procedure Q Procedure R

var y: integer,; beginy:= 8; end;

begin.{Q}Y:=y+1;R;end; {Q)

BeginY:=3;Q; end.

P

Q

R

y

P

3

Q

y

P

3 4

Q

y

P

4

y

R

8

Q

y

P

4 y

P

4

Anidamiento de procedimientos:Es cuando un procedimiento está declarado dentro de otro procedimiento.

Program P;var y, t: integer:

Procedure Q (x: integer; var z : integer);Procedure R (v: integer):

var y: integer;Beginy:= 8; x:= 10; z:= 9; t:= 6;end;

begin {Q}y:= y +1; x:= 5; z:=7;R(z)end; {Q}

begin Y:=1; t:=2;Q(y,t);end.

R está anidado en Q

Traza de P:Program P;var y, t: integer:

Procedure Q (x: integer; var z : integer);

Procedure R (v: integer):

var y: integer;

Beginy:= 8; x:= 10;z:= 9; t:= 6;end;

begin {Q}y:= y +1; x:= 5; z:=7;

R(z)end; {Q}

begin Y:=1; t:=2;Q(y,t);end.

P

Q

R

y

P

1 y

P

1 2

t 2 t 2 7

x

Q

1 5

z

y

P

2

t 796

x

Q

5

x

R

7 10

z

y 8

y

P

2 y

P

2

t 6 t 6

x

Q

5

z

Identificadores locales a un subprograma, programa:

Son los que están declarados en el subprograma o programa. Están activos sólo durante la ejecución del mismo. Una vez finalizada la ejecución de la unidad donde están declarados no se puede hacer referencia a dichos identificadores.

Identificadores globales a un procedimiento, función:

Son aquellos identificadores que están declarados en el programa principal y que no han sido re declarados en el procedimiento o función correspondiente.

Identificadores no locales a un subprograma:

Un identificador i es no loca! a un subprograma S si cumple con todos los siguientes requisitos:

• i está declarado en algún subprograma que anida al subprograma S .

• i no esta declarado en el programa principal.

• i no se encuentra redeclarado en el subprograma S.

• i no está redeclarado en ninguno de los subprograma que anidan a S y que a su vez están anidados en el subprograma donde se encuentra la declaración de i.

Ámbito, entorno o ambiente de un procedimiento o función

Es el conjunto de todos los identificadores que son visibles y pueden referenciarse dentro del procedimiento.

Está formado por los identificadores totales, no locales y globales de un procedimiento o función.

Program P;var y: integer;

Procedure Q;

Procedure R; var y: integer;

beginy:= 8; end;

begin {Q}y := y + 1 ; R;end; { Q}

begin y:-=3;Q;end.

Ambiente de P:var: yProcedimiento: Q

Ambiente de Q:var: yProcedimiento: Q , R

Ambiente de R:var: y Procedimento: Q

R

Locales a P

Local a Q

Locales R

Globales a Q

Global a R

No local a R

Program P;var y, t: integer;

Procedure Q (x: integer; var z : integer);

Procedure R (x: integer); var y: integer;

begin ;y:= 8; x:=10;z:= 9; t= 6 end;

begin {Q}y:=y+1; X:= 5; z:= - 7;R(z);end; {Q}

beginy:= 1; t:= 2; Q(y, t);end.

Ambiente de P: Var: y, t Locales a PProcedimientos: Q

Ambiente de Q: Par: x, z ; Proc: R Locales a Q

Var: y, t ; Proc: Q Globales a Q

Ambiente de R:Par x; Var: y Locales a R

Par: z ; Proc: R; No locales a R

Var :t ; Proc Q; Globales a R

Alcance de un identificador: es el conjunto de bloques de programas en los que un identificador puede ser referenciado, es decir, es la sección de un programa en la que un identificador es visible.

Reglas de alcance estático:

-El alcance de un identificador es el bloque del procedimiento P en el que está declarado y todos los procedimientos anidados por el procedimiento P, sujeto a la siguiente regla.

-Si un identificador i declarado en P se redeclara en algún procedimiento interno Q anidado en P, entonces el procedimiento Q y todos los procedimientos anidados en Qse excluyen del alcance de i declarado en P.

Program p;Var v:integer;

Procedure Q; Procedure R;

var y: integer;begin

y:= 8;end;

begin {Q} y:=y+1;R;end; { Q}

begin y:=3;Q;end.

Alcance de y es todo el programa P a partir de la declaración de y, excepto e! procedimiento R a partir de la declaración de y. Local a R.

Alcance de Q, es todo el programa a partir de la declaración de Q.

Alcance de R es todo el procedí miento Q a partir de te declaración de R.Alcance de y. loca) a R, es iodo e¡ procedimiento R desde la declaración de y en R.

Program P; var y, t: integer;

Procedure R(x: integer); var y: integer; begin {R}y:= 8; x:= 10; t:= 6; end; {R}

Procedure Q (x: integer; var z: integer); begin {Q}y:=y+1; x:= 5; z:= 7R(z); end;{Q}

beginY:= 1; t:= 2;Q( y,t);end.

Ejercicio:Establecer el alcance para cada identificador de este programa.

Indicar alcance de los identificadores.

Indicar los entornos de referencia del programa P de cada uno de los subprogramas.

Realizar un diagrama de la estructura estática del programa.

Realizar una traza de ejecución del programa.

Program P; var y, t: integer;

Function Q(x: integer): integer; var z: integer;

Procedure R (x: integer; var z: integer);begin {R} y:= 8; x:= 10; z:=9; t:= 6; end;{R}

begin {Q}y:=y+1; x:= 5; z:= 7R(z); Q:=z;end;{Q}

Begin {P}Y:= 1; t:= 2;Writeln(Q( y, t));end.

Estudio de ejercicios con caracteresRepasemos los procedimientos read y write, el concepto de buffer y su comportamiento.

ingreso de datos por teclado:

Los datos ingresados se almacenan en una zona de memoria auxiliar llamadabuffer donde quedan retenidos.

El buffer es potencialmente infinito y almacena cada carácter ingresado por teclado.

El buffer tiene un puntero (↑), asociado al carácter del buffer al que hace referencia en un determinado momento.

Si durante la ejecución de un programa, se ejecuta un read, se suspende la ejecución del programa. A continuación, todo lo ingresado por teclado se guardará en el buffer.

Al presionar la tecla ENTER la ejecución continúa y el procedimiento read lee del buffer los valores que necesita para asociarlos a las variables que tiene como argumentos.

El read intentará resolver las asociaciones entre sus argumentos ( parámetros) de los que conoce el tipo, y los caracteres que hay en el buffer.

Ejemplo: Program P; Var N,M: integer;C, D: char; Y: real;

Read( N, Y, C, M, D)

Al detenerse la ejecución del programa frente a un procedimiento read, ingresamos por teclado:

1 5 □ 3 7 . 1 5 □ - 2 7 5 B ⸗

Read( N, Y, C, M, D)Los valores son asignados a las variables en el orden en el cual las variables fueron indicadas en el Read. Los diagramas siguientes muestras los valores asignados a las variables y el estado del buffer después que cada valor ha sido leído.

Variable Buffer

N(integer) 15

Y (real) 37.25

C(char) □

M(integer) 275

D (char)⸗

1 5 □ 3 7 . 1 5 □ - 2 7 5 B ⸗

1 5 □ 3 7 . 1 5 □ - 2 7 5 B ⸗

1 5 □ 3 7 . 1 5 □ - 2 7 5 B ⸗

1 5 □ 3 7 . 1 5 □ - 2 7 5 B ⸗

1 5 □ 3 7 . 1 5 □ - 2 7 5 B ⸗

1 5 □ 3 7 . 1 5 □ - 2 7 5 B ⸗

Read( N, Y, C, M, D) = read (N, C); read (M); read (D, Y); Readln

Variable Buffer

N(integer) 15

Y (real) 37.25

C(char) □

M(integer) 275

D (char)⸗

1 5 □ 3 7 . 1 5 □ - 2 7 5 B ⸗

1 5 □ 3 7 . 1 5 □ - 2 7 5 B ⸗

1 5 □ 3 7 . 1 5 □ - 2 7 5 B ⸗

1 5 □ 3 7 . 1 5 □ - 2 7 5 B ⸗

1 5 □ 3 7 . 1 5 □ - 2 7 5 B ⸗

1 5 □ 3 7 . 1 5 □ - 2 7 5 B ⸗

Repeat Read (C)Until C = ‘. ’C A

C N

C A

C □

C S

C A

C L

C i

A N A □ S A L I O □ A □ P A S E A R . ⸗

A N A □ S A L I O □ A □ P A S E A R . ⸗

A N A □ S A L I O □ A □ P A S E A R . ⸗

A N A □ S A L I O □ A □ P A S E A R . ⸗

A N A □ S A L I O □ A □ P A S E A R . ⸗

A N A □ S A L I O □ A □ P A S E A R . ⸗

A N A □ S A L I O □ A □ P A S E A R . ⸗

A N A □ S A L I O □ A □ P A S E A R . ⸗

Repeat Read (C)Until C = ‘. ’C A

A N A □ S A L I O □ A □ P A S E A R . ⸗

A N A □ S A L I O □ A □ P A S E A R . ⸗

Ejercicio: Escribir un programa en Pascal que permita contar la cantidad de letras a o A que se encuentran en una frase. Program Cantidad_ deaes; var c: Char;cantidad: integer; beginwriteln ('ingrese una frase terminada en punto'); cantidad := 0; repeat read (c);If (c = 'a') or (c= 'A') then cantidad := cantidad + 1;until C=‘.‘end.

Program palabra1;

uses crt;

var

car: char ; cantidad: integer;

begin

clrscr;

writeln ('contar la cantidad de caracteres de una

palabra') ;

writeln ('ingrese una palabra seguida de un espacio');

read (car);

cantidad: = 0;

while car O' ' do begin

cantidad: =cantidad + 1;

read (car);

end;

write (cantidad) ;

readkey

end.

Program palabra1;

uses crt;

var

car: char ; cantidad: integer;

begin

clrscr;

writeln ('contar la cantidad de caracteres de una

palabra') ;

writeln ('ingrese una palabra seguida de un espacio');

read (car);

cantidad: = 0; Inicio

while car O' ' do begin

cantidad: =cantidad + 1;

read (car);

end; Proceso

write (cantidad) ;

Readkey Impresión

end.

Program palabra1;

Var car: char ; cantidad: integer;

Procedure Inicio (var car: Char);

begin

writeln ("contar la cantidad de caracteres de una palabra');

writeln ("ingrese una palabra seguida de un espacio');

read (car);

end;{inicio}

Procedure Cuentacaracter (car: Char, var cantidad: integer);

begin {Cuentacaracteres}

cantidad := 0;

while car <>' ' do begin cantidad:=cantidad + 1 ;

read (car);

end; {Cuentacaracteres}

Procedure Impresión (cantidad; integer);

begin

writeln ('la cantidad de caracteres de la palabra Ingresada es', cantidad)

end; {impresión}

begin {palabra1}clrscr; Inicio (car);Cuentacaracter (car, cantidad);Impresión (cantidad);readkeyend.

Program palabra2;uses crt;var carchar ,cantidad: integer;

Procedure inicio (var car: Char);beginwriteln ('contar la cantidad de letras de una palabra');writeln ('ingrese una palabra seguida de un espacio'); Read (car) ;end; {inicio}

Procedure CuentaLetras (car: Char, var cantidad: Integer);begin cantidad:=0; while car <>'' doIf car in ['a'… 'z'] CuentaLetras (car, cantidad};cantidad:=cantidad + 1; read (car)end; {CuentaLetras}

Procedure impresión (cantidad: integer);begin;writeln ( 'la cantidad de letras de la palabra ingresada es', cantidad); end; {impresión}

begin {palabra2}Clrscr;inicio (car)CuentaLetras (car, cantidad);impresión (cantidad);readkeyend.

Program palabra3;uses crt;var carchar ,cantidad: integer;

Procedure inicio (var car: Char);beginwriteln ('contar la cantidad de letras de una palabra');writeln ('ingrese una palabra seguida de un espacio'); Read (car) ;end; {inicio}

Procedure CuentaDigitos (car: Char, var cantidad: Integer);begin cantidad:=0; while car <>'' doIf car in *‘0'… ‘9'+ cantidad:=cantidad + 1; read (car)end; {CuentaDigitos}

Procedure impresión (cantidad: integer);begin;writeln ( 'la cantidad de Digitos de la palabra ingresada es', cantidad); end; {impresión}

begin {palabra3}Clrscr;inicio (car)CuentaDigitos (car, cantidad);impresión (cantidad);readkeyend.

Program palabra4;uses crt;var carchar ,CantidadDigitos, CantidadPalabras: integer;

Procedure inicio (var car: Char);beginwriteln ('contar la cantidad dígitos y de letras de una palabra');writeln ('ingrese una palabra seguida de un espacio'); Read (car) ;end; {inicio}

Procedure CuentaDigitosyLetras (car: Char, var CantidadDigitos, CantidadPalabras: integer);

begin cantidad:=0; while car <>'' doIf car in *‘0'… ‘9'+ CantidadDigitos := CantidadDigitos + 1;

else If car in ['a'… ‘z‘, 'A'…'Z'] then CantidadPalabras:= CantidadPalabras+1;

read (car)end; {CuentaDigitos}

Procedure impresión (CantidadDigitos, CantidadPalabras: integer);begin;writeln ( 'la cantidad de Digitos de la palabra ingresada es', CantidadDigito, ( 'y la cantidad de Letras de la palabra ingresada es', CantidadPalabras); end; {impresión}

begin {palabra4}Clrscr;inicio (car);CuentaDigitosyLetras(CantidadDigitos,

CantidadPalabras);impresión (cantidad);readkeyend.

Program palabra5;uses crt;var carchar ,CantidadVocales: integer;

Procedure inicio (var car: Char);beginwriteln ('contar la cantidad de vocales de una palabra');writeln ('ingrese una palabra seguida de un espacio'); Read (car) ;end; {inicio}

Procedure CuentaVocales (car: Char, var CantidadVocales : Integer);begin cantidad:=0; while car <>'' doIf car in *‘a' , ‘e' , ‘i' , ‘o' ,‘u'] CuentaVocales := CuentaVocales + 1; read (car)end; {CuentaVocales}

Procedure impresión (CantidadVocales : integer);begin;writeln ( 'la cantidad de Vocales de la palabra ingresada es', CantidadVocales); end; {impresión}

begin {palabra5}Clrscr;inicio (car)CuentaVocales(car, CantidadVocales);impresión (CantidadVocales);readkeyend.

Program palabra6;uses crt;varcarchar ;exito: boolean;

Procedure inicio ( var car: Char);beginwriteln ('estudiar si una palabra comienza

en la');writeln ('ingrese una palabra seguida de un

espacio);read (car);end;

Procedure EmpiezaConLa (car: Char, var exito: boolean)beginexito: =false;if car = ‘l'

then beginread(car);If car = 'a'then éxito: = trueend;

end;{EmpiezaConla}

Procedure impresión (exito);beginWriteln ("la palabra ingresada

empieza con la es:', exito); end;

Begin {paiabra6}clrscr; Inicio (car);EmpiezaConla (car,exito); Impresión (exito); readkeyend.

Program palabra7;

Var car: char; exito: boolean; Procedure inicio (var car :char); beginwriteln ("estudiar si una palabra termina en azo'); writeln ("ingrese una palabra seguida de un espacio'); read (car); end; {inicio}

Procedure TerminaEnAzo ( car: Char var exito: boolean);begin exito:=false;while car <>' ' do beginif car ='a' then

begin read(car); if car = "z" then

begin read(car);if car = 'o' then begin read(car); exito:= car = ' ‘; end;

end;end;

else read (car);end{whlie}

end;{TerminaEnAzo}

Procedure impresión (éxito); beginwriteln ('la palabra ingresada termina en azo

es:', éxito);end;

begin {palabra7}clrscr; Inicio (car);TerminaEnAzo (car, exito);impresión (éxito); readkey end.

Program frase1;uses crt;varcar: char ; cantidad: integer;beginclrscr;writeln ('contar la cantidad de vocales de una frase ');writeln ('ingrese una frase: una frase es un conjunto de palabras separadas

por un espacio y termina en punto');read (car); cantidad :=0;while car<>'. ' dobeginIf car in ['a', 'e', 'i', 'o\ 'u'] then cantidad := cantidad +1; read (car)end;write (cantidad) ;readkeyend.

Program frase1_2;uses crt;var carchar ; CantidadVocales: integer;Procedure CuentaVocales ( car Char, var CantdVocales:integer);

beginCantdVocales:= 0;while car o'.' do beginif car in *‘a' , ‘e' , ‘i' , ‘o' ,‘u'] then CantdVoclaes:=CantVocales + 1 ;read (car); end;

Procedure inicio (var car: Char); beginwriteln (‘Contar la cantidad de vocales de una frase'); writeln ('ingrese una frase seguida de un punto'); read (car) end;{inicio}

Procedure impresión (CantVocales: integer); beginwriteln (' La cantidad de vocales de la frase ingresada es:' CantVocales)

end; {impresión}

begin {frase1_2} clrscr; inicio (car);CuentaVocales (car,CantidadVocales); impresión (CantidadVocales); readkey end.

Program frase2;uses crt; varcarchar; cantidad: integer;beginclrscr;read(car);cantidad :=0; while car <> do

begin if car = '' thencantidad := cantidad +1;read(car)

if car = then cantidad:= cantidad + 1 end;

writeln ('la frase tiene palabras', cantidad);readkeyend.

Program frase2_1;uses crt;var canchar; cantidad: integer; Procedure palabra (var car: Char);beginwhile (car <>'.') and (car<>' ') doread(car) end; begin {frase2_1} clrscr;writeln (‘Contar la cantidad de palabras de una frase '); writeln ('ingrese una frase: una frase es un conjunto de palabras separadas por un espacio y

termina en punto'); cantidad := 0; read(car); while (car<>'.') do begin palabra(car); cantidad := cantidad + 1; If (car<>'.') then read(car) end;write( cantidad);readkey end.

Program frase2_2;uses crt; varcar:char ; cantidad: integer; Procedure palabra (var car: Char);

beginwhile (car<> '.') and (car<>' ') doread(car)end;

Procedure EnFrase ( var car: Char; var cant: integer);begincantidad: = 0; while car ‘ . ’<> do begin

palabra( car); cant= cant + 1; if car <> ‘ . ’ then read (car) end ;

end;Procedure inicio (var car: car);

Beginwriteln (‘Contar la cantidad de palabras

de una frase"); writeln ('ingrese una frase que finalice en un punto');read (car);

end;

Procedure impresión (cantidad:integer);beginwriteln (palabras en frase:', cantidad);end;

Begin {frase2_2}clrscr;inicio (car);EnFrase (car ,cantidad); Impresión (cantidad); readkey end.

Program frase3;var car: Char ; cantidad: integer;Function empiezaconla (var car: Char): boolean);

beginempiezaconla := false;If car =‘.’ then

begin read(car);If car = ‘a’ then empiezaconla := trueend;

end; {empiezaconla} Procedure avanza (var car: Char);

beginwhile (car <> '.') and( car <> ' ') doread(car); end;

Procedure inicio ( var car: Char);beginwriteln ("contar la cantidad de palabras de una frase que comienzan con la '); writeln ("ingrese una frase como un conjunto de palabras separadas por un espacio y terminada en punto');read (car) ;end; {inicio}

Procedure EnFrase (car char; var cantidad ; integer); begin cantidad :=0; while caro '. ' do

begin if empiezaconla (car);then cantidad cantidad + 1;avanza (car);if car <> '.' read (car) end;

end;{En Frase}

Procedure impresión(cantidad: integer);beginwriteln ('La cantidad de palabras ....es:',

cantidad)end;

begin {frase3}Inicio (car);EnFrase (car, cantidad); impresión (cantidad);end.

Program frase4;Var car: Char ; cantidad: integer;

TerminacionLa: boolean;Function TerminacionLa (var car: Char): boolean;

begin TerminacionLa:= false; while (car <>'.') and (car <> " ) do Begin

If car =‘l’ then begin read(car);If car = 'a' then begin read (car);TerminacionLa := (car ='.') or (car = " )

end;end;

else If car <> then read(car); end; {while}

end; {función}

Procedure inicio (var car: Char);beginwriteln ('contar la cantidad.....una frase que terminan con la ');

writeln ('ingrese una frase como un conjunto de palabras .. por un espacio y termina en punto');read (car);end;{inicio}

Procedure EnFrase (car :boolean; var cantidad: integer);begincantidad :=0; while car<>'.' do

beginIf TerminacionLa(car) then cantidad :=

cantidad + 1; If car-=' ' then read (car) ;

end; End; {EnFrase}

Procedure impresión (cantidad: integer);beginwrite( 'hay ', cantidad, ' de palabras......

que terminan con la ');

Begin {frase4}Inicio (car);EnFrase (car, cantidad); Impresión (cantidad); Readkey end.

Program frase5;

var car: Char ; cantidadla, cantidadpal: integer;

Procedure inicio (var car: Char);

begin

writeln ('contar ... palabras que terminan con la de una frase');

writeln ('ingrese una frase que finalice en un punto');

read (car);

end;

Function TerminacionLa (var car: Char): boolean;

begin

TerminacionLa:= false;

while ( car<> '.') and (car<> ' ')do

begin

If car = ‘l’ then begin read(car);

If car = 'a‘ then begin

read(car);

TerminacionLa := ( car = ‘l’) or (car = ' ')

end; end;

else if car <> '.' then read(car);

end ;{while}

end;{TerminacionLa}

Procedure EnFrase (car: Char; var cantla, cantpal: integer);

begincantla := 0; cantpal := 0;while car <> '.' dobegin

If TerminacionLa ( car) then cantla := cantla +1 ;cantpal := cantpal + 1;If car <> then read (car)end;

end;{En Frase}Procedure impresion (cantla, cantpal: integer);beginwriteln ('la cantidad de palabras de la frase que terminan con la es:', cantla);writeln ('la cantidad total de palabras de la frase es:', cantpal)end;

beginclrscrinicio (car);EnFrase (car , cantidadla, cantidadpal);impresion (cantidadla, cantidadpal);end.

Ejercicio 1:

Dados dos números enteros cuyos dígitos están ordenados en forma decreciente desde la cifra más significativa hacia la menos significativa, se desea obtener un tercer número ordenado de la misma manera. Puede haber dígitos repetidos.

1. Ejemplifique2. Explique sucintamente como pensó resolver el ejercicio.3. Escriba uno o varios algoritmos que lo resuelvan.4. A partir de los algoritmos escriba un programa en Lenguaje

Pascal.5. Haga una traza para algún dato de entrada y verifique el

resultado.

Ejercicio 2

Escribir un algoritmo y un programa en Pascal que permita resolver el siguiente problema.

Calcular por aproximaciones sucesivas el valor de la abscisa x para la cual el valor de la ordenada y es cero dentro del intervalo [0,3] para la función

y = -1/2 x2 - 2x + 3. Un método a usar es el de bisección de Bolzano, que divide al intervalo en dos subintervalos y elige el subintervalo donde la función cambia de signo en sus extremos. Y así siguiendo hasta la admisión de un cierto error.

Ejercicio 3

Consideremos la siguiente sucesión : 1, 1/3 , 1/5, 1/8, 1/11, 1/15, 1/19, 1/24, 1/29.....de números reales donde los denominadores se obtienen a partir de la sucesión de números naturales 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24, 25,26,27,28,29........Eliminando un número después del 1 y del 3, dos números después del 5 y del 8 tres números después del 11 y del 15, cuatro números después del 19 y 24 y así siguiendo. (Se eliminan los subrayados)

Escribir una función en Pascal que permita calcular el n-ésimo elemento de la sucesión. Defina correctamente los parámetros. Escribir un programa en Pascal que permita calcular la suma de los n primeros elementos de la sucesión dada. Escribir un programa en Pascal para calcular la suma de los elementos de la sucesión hasta una aproximación dada.

López García, Guillermo (ed.) (2005). El ecosistema digital: Modelos de comunicación, nuevos medios y público en Internet. Valencia: Servei de Publicacions de la Universitat de València. Disp.

Snyder, Ilana –compiladora (2004): Alfabetismos digitales. Comunicación,innovación y educación en la era electrónica. Málaga: Aljibe Stallman, Richard M. (2004) Software libre para una sociedad libre. Introducción de Lawrence Lessig.

Curso Nivelación 2011 - Universidad Nacional de Chilecito Lic. en Sistemas - Ing. En Sistemas – Tecnicatura Univ. Desarrollo Aplic. WEB.

Agustin Fonseca- Juegos de mente – Memoria, Cálculo, Memoria, Agilidad Mental.Martín Sierra, Abel Martín Álvarez, Ángel Aguirre Pérez- Aula Matemática digital 2. Ing. Gábor loerines, ing. Francisco Chaves-Micro computación Tomo 2- Nahel

Ediciones. Adrián Paenza- Matemática... ¿Estás Ahí? Adrián Paenza- Matemática... ¿Estás Ahí? Episodio 2 Adrián Paenza- Matemática... ¿Estás Ahí? Episodio 3,14.Moroni Norma-Apunte de R.P.A (2003) –U.N.S.

Bibliografía

41