Archivo del Blog

viernes, 6 de junio de 2014

VECTORES Y MATRCICES

ARREGLOS UNIDIMENSIONALES EN PSEINT 


Los arreglos son estructura de datos homogéneas (todos los datos son del mismo tipo) que permiten almacenar un determinado número de datos bajo un mismo identificador,para luego referirse a los mismos utilizando sus posiciones. Los arreglos puedenpensarse como vectores, matrices, etc. Para crear un arreglo en PSeInt se utiliza la palabra clave Dimension, seguido del nombre del arreglo (identificador) y su tamaño entre corchetes [ ].

Sintaxis:

Dimension identificador [tamaño];

En PSeInt los arreglos pueden comenzar desde cero o uno. Depende de cómo se
 configure el programa.

Arreglos en base cero

Para empezar a programar nuestros algoritmos con arreglos en base cero, vamos al
 menú configurar y escogemos Opciones del lenguaje, nos saldrá un cuadro como
 este:

Seleccionamos el perfil y hacemos clic en el botón Personalizar… 
 Saldrá el siguiente cuadro: 




Marcamos la casilla: Utilizar arreglos en base cero y presionamos aceptar. Para realizar algoritmos en base uno, solo debemos dejar la casilla sin marcar.

De esta manera ya queda configurado el programa para utilizar arreglos en base cero o base uno. 
Para comprender mejor el concepto de arreglos se realizará una serie de ejemplos:

Ejemplo 1: Crear un arreglo, partiendo de base 1, llamado números que almacene los siguientes datos: 20, 14, 8, 0, 5, 19 y 4:



Salida:



Los ciclos, también conocidos como bucles o estructuras de control repetitivas, juegan 
un papel muy importante en los arreglos. En el anterior ejemplo, imprimimos los datos 
a través de siete mensajes, una tarea que lleva cierto tiempo y más cuando la cantidad 
de datos son demasiados, por eso para facilitar el proceso, utilizamos un ciclo Para y 
así mostrar todos los datos con un sólo mensaje.

Ahora realizaremos el ejemplo 1, utilizando un ciclo "Para":


Salida:


El ciclo Para nos ahorra la tarea de escribir los siete mensajes que muestran los siete datos pedidos inicialmente.

Pero no solo podemos imprimir los datos del arreglo con un ciclo, también podemos 
llenar con datos los arreglos con el ciclo Para. 

Ejemplo 2: Crear un arreglo de 5 posiciones y llénelo con los números que el usuario desee: 


Salida:

Ejemplo 3: Un cliente de un supermercado lleva los siguientes productos:
Aceite: $800
Bebida: $1200
Cerveza: $1350
Papas fritas: $900
Maní: $700
Arroz: $650
Jugo light: $950
Leche: $480
Pack yoghurt: $600
Chicle: $250

Implementar un algoritmo que guarde en un arreglo "producto" los nombres de los productos y en un arreglo "precio" el precio asociado coherente, luego debe mostrar el producto con su respectivo precio al imprimir.


Salida:


Ejemplo 4: Almacene en un arreglo de n posiciones nombres de países. Implementar una 
opción que al digitar una posición muestre el dato que contiene. 



Salida:




ARREGLOS BIDIMENSIONALES


Hasta ahora hemos trabajado con arreglos de una sola dimensión, es decir con un sólo índice, el índice es el número que encerramos dentro de los corchetes (el tamaño del vector).  Un arreglo bidimensional, también conocido como matriz, es parecido a una tabla ya que se compone de n filas y n columnas. Por ejemplo tenemos la siguiente tabla: 

   
       
       
       
  








Vemos que está compuesta por tres filas y tres columnas. De esta misma forma podemos representar gráficamente a una matriz, como veremos más adelante. Para crear una matriz en PSeInt se utiliza la palabra clave Dimension, seguido del nombre que la identifica y el número de filas y columnas. 

Sintaxis: 
Dimensión identificador [filas,columnas]; 
 Para comprender mejor el concepto de matrices se realizaran algunos ejemplos y  ejercicios. 

Ejemplo 1: Crear una matriz 2x2 que almacene los siguientes valores: 1, ,2, 3, 4:



Salida:



Así como en los arreglos unidimensionales llenábamos el vector con un ciclo Para, en las matrices también lo podemos hacer, sólo que ya no se utilizará un ciclo sino dos, uno para las filas y otro para las columnas. También los datos se muestran con dos ciclos.

Ejemplo 2: Crear una matriz de n filas y n columnas. Llenar la matriz con los números que el usuario desee:


Salida:


viernes, 23 de mayo de 2014

SISTEMAS NUMÉRICOS (PARTE 1)

SISTEMAS NUMÉRICOS 

Los sistemas numéricos se clasifican en: posicionales y no posicionales. Los sistemas numéricos que veremos a continuación, son todos sistemas posicionales.

SISTEMA DECIMAL 

En el sistema de numeración decimal se utilizan diez símbolos, del 0 al 9 para representar una determinada cantidad. Los diez símbolos no se limitan a expresar solamente diez caracteres diferentes, ya que utilizan varios dígitos en las posiciones adecuadas dentro de un número para indicar la magnitud de la cantidad.

Base:10 
Símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

La posición de cada dígito en un número decimal indica la magnitud de la cantidad representada y se le puede asignar un peso. Los pesos para los números enteros son potencias de 10, que aumentan de derecha a izquierda, comenzando por 100 = 1

n
3
2
1
0
10n
103
102
101
100

1000
100
10
1
Para números fraccionarios, los pesos son potencias negativas de diez que aumentan de izquierda a derecha comenzando por 10-1.

2
1
0
,
1
2
3
102
101
100
,
10-1
10-2
10-3
100
10
1
,
0,1
0,01
0,001
Ejemplo: 

22510 = 2*102 + 2*101 + 5*100= 200 + 20 + 5


SISTEMA BINARIO 


El sistema de numeración binario es simplemente otra forma de representar magnitudes. El sistema binario es menos complicado que el sistema decimal ya que solo tienes dos dígitos. Al principio, puede parecer más complicado por no ser familiar. El sistema decimal con sus diez dígitos es un sistema en base 10, el sistema binario con sus dos dígitos es un sistema en base dos. Los dos dígitos binarios son 0 y 1. La posición de un 1 o un 0 en un número binario indica su peso dentro del número, asi como la posición de un dígito decimal determina el valor de ese dígito. Los pesos de un número binario están basados en las potencias de dos.

Base: 2
Símbolos: 0, 1

El formato para números enteros y fraccionarios es similar al de los números binarios.
Para los números enteros: 

 n-1
 3
 2n-1
23 
 22
21 
20 

n = número de bits

Para los números fraccionarios:



 2
 22
21 
20 
2-1 
2-2
2-3 
 4
,
 1/2
1/4 
1/8      

jueves, 22 de mayo de 2014

SISTEMAS NUMÉRICOS (PARTE 2)

El sistema binario, presenta el inconveniente de que necesita muchas cifras para la representación de un número grande, y es muy engorroso para un humano.
Sin embargo, el sistema binario es el más adecuado a las máquinas electrónicas por varias razones:
1. La mayor parte de los computadores existentes representan la información y la procesan mediante elementos y circuitos electrónicos de dos estados (relés, núcleos de ferrita, etc.).
2. Por la seguridad y la rapidez de respuesta de los elementos físicos de dos estados diferenciados (ON / OFF).
3. Las operaciones aritméticas son sencillas.

Los quince primeros números binarios se escriben:

Decimal  
Binario 
 0
0000 
 1
0001
 2
0010 
 3
0011
 4
0100 
 5
0101 
 6
0110 
 7
0111 
 8
1000 
 9
1001 
 10
1010 
 11
1011 
 12
1100 
 13
1101 
 14
1110 
 15
1111 

CONVERSIÓN BINARIO - DECIMAL

La forma más sencilla de realizar esta conversión es desarrollando la fórmula que vimos para los sistemas posicionales (suma de potencias de la base).

N = An*Bn + An-1*Bn-1 + ... + A1*B1 + A0*B0
Donde A son las distintas cifras del valor numérico y "n" su posición. B = 2

Ejemplo:
Dado el número binario 10112 encontrar el equivalente decimal.
Si desarrollamos el número dado como una potencia de 2 obtendremos:

10112 = 1*23 + 0*22 + 1*21 + 1*20 = 1*8 + 0*4 + 1*2 + 1*1 = 8 + 2 + 1 = 1110

CONVERSIÓN DECIMAL - BINARIO 


- Método de la división sucesiva por 2: Se divide sucesivamente el número decimal entre 2. Cada cociente obtenido se divide entre 2 hasta que se obtiene un cociente cuya parte entera es 0. Los restos generados en cada división forman el número binario. El primer resto es el bit menos significativo (LSB) del número binario, y el último resto es el bit mas significativo (MSB).

Ejemplo:
2510=A2

25/2 = 12 -> r = 1 ^
12/2 = 6   -> r = 0 |
6/2   = 3   -> r = 0 |
3/2   = 1   -> r = 1 |
1/2   = 0   -> r = 1 |
Donde r es resto.

Resultando: 2510 = 110012

SISTEMA OCTAL



Este sistema tiene una base de 8 sìmbolos. La facilidad que existe en covertir entre el sistema binario y octal, permite expresar los numeros binarios en un formato mas compacto, ya que cada digito octal equivale a 3 digitos binarios.

Base: 8
Simbolos: 0,1,2,3,4,5,6,7.
Los 8 primeros numeros octales se escriben: 


 Octal
Decimal 
Binario 
 0
 0
 000
 1
 1
 001
 2
 2
 010
 3
 3
 011
 4
 4
 100
 5
 5
 101
 6
 6
 110
 7
 111

COVERSION OCTAL-BINARIA

Para convertir un numero expresado en base 8 y base 2, simplemente sustituimos cada una de las cifras que lo forman por sus 3 cifras binarias equivalentes.

Ejemplo:  Covertir a binario el numero 375,42
375,428= X2 
38= 0112
78= 1112
58= 1012
,
48= 1002
28= 0102
Con lo que tenemos que 375,42 es igual a 011111101,100010

CONVERSION BINARIO A OCTAL

Se realiza al inverso,comenzando desde la coma decimal hacia la izquierda para la parte entera, rellenando con ceros a la izquierda si fuera necesario; y desde la coma decimal hacia la derecha para la parte fraccionaria, rellenando con ceros a la derecha si esque es necesario.

Ejemplo:  Convertir 11111101,100010 a octal.
11111101,1000102= X8
0112= 38
1112= 78
1012= 58
,
1002= 48
0102= 28
con lo que tenemos 11111101,1000102 es igual a 375,48

CONVERSION OCTAL DECIMAL

Se realiza del mismo modo que de binario a decimal, teniendo en cuenta que la base ahora es B= 8.
Ejemplo: 345,58  3*82+4*81+5*80+5*8-1=  192+32+5+0,75= 229,62510.

CONVERSION DECIMAL OCTAL

Se realiza del mismo modo que decimal a binario, dividiendo la parte entera de forma sucesiva por la base B= 8 y multiplicando la parte fraccionaria por la base.
Ejemplo: Expresar el numero decimal 1036,3510 en octal X8.
Parte entera: 
1036:8= 129; r=4
129:8= 16; r= 1
16:8= 2; r= 0
2:8= 0; r= 2
El resultado sera 103610 = 20148

Parte fraccionaria: 
0,35*8= 2,8
0,8*8= 6,4
0,4*8= 3,2
0,2*8= 1,6
0,6*8= 4,8

Uniendo la parte decimal del cociente de cada division obtenemos el valor:
263148
El resultado final es la union de ambos valores: 1036,3510 = 2014,26314...8

SISTEMA HEXADECIMAL


Al igual que el sistema octal este sistema es una forma mas compacta para representar los numeros binarios. consta de 16 simbolos. para indicar que el numero se expresa en exadecimal se suele colocar una H al final, por ejemplo 34AF puede indicarse como 34AFH.
Base: 16 
simbolos: 0.123456789A,B,C,D,E,F

CONVERSION HEXADECIMAL - BINARIO

Basta con sustituir cada simbolo hexadecimal por su equivalente en binario, según se indica en la siguiente tabla.

hexadecimal 
decimal
 binario
 0
0000 
 1
1
0001 
 2
2
0010 
 3
0011 
 4
4
0100 
 5
0101 
 6
0110 
 7
0111 
 8
1000 
 9
9
1001 
 A
 10
1010 
 B
 11
1011 
 C
 12
1100 
 D
 13
1101 
 E
 14
1110 
 F
 15
1111
Ejemplo: convertir a binario el numero 9A7B16
916= 10012
A16= 10102
716= 01102
E16= 11102

Con lo que tenemos que 9A7E16= 10011010011011102

CONVERSION BINARIO HEXADECIMAL

La conversion de un numero binario a hexadecimal se realiza al inverso: se forman grupos de 4 cifras binarias a partir de la coma decimal, hacia la izquierda y hacia la derecha, y se sustituye cada grupo por su equivalente hexadecimal. Si el grupo final de la izquierda queda incompleto, se rellena con ceros por la izquierda. Del mismo modo si el gurpo final de la derecha queda incompleto, se rrellena con ceros por la derecha.
Ejemplo: Transformar a hexadecimal el numero binario 100101100, 110001
agrupamos y rellenamos con ceros 
00012=116
00102= 216
11002= C16
,
11002=C16
01002= 416

obteniendo como resultado el numero 12C,C416

CONVERSIÓN HEXADECIMAL - DECIMAL

La conversion se realiza siguiendo el mismo procedimiento que en las conversiones binario - decimal, pero considerando la base B=16. En este caso, además. deberemos sustituir los valores A, B, C, D, E, F por su equivalencia en el sistema decimal.
Ejemplo: 

Encontrar el equivalente decimal del valor hexadecimal 39,B8
39,B8=3*161 + 9*160 + B*16-1 + 8 *16-2 + = 
=3*161 + 9*160 + 11*16-1 + 8*16-2=
=48 + 9 + 0,6875 + 0,03125=
=57, 7187510

CONVERSIÓN DECIMAL - HEXADECIMAL

Procederemos del mismo modo que en la conversión decimal - binaria, considerando B=16, devidiremos la parte entera sucesivamente por la base y la parte fraccionaria la multiplicaremos por la base. 
Ejemplo: Encontrar el equivalente hexadecimal del número 4573,7910

Parte entera: 
4573/16 = 285; r= 13 = D
285/16 = 17; r=13 = D
17/16 = 1; r= 1
1/16 = 0; r= 1

De la parte entera obtenemos: 11DD16

Parte fraccionaria (tomar decimales de cada cociente)
0,79*16 = 12,64
0,64*16 = 10,24
0,24*16 = 3,84
0,84*16 = 13,44
0,44*16 = 7,04
Obtenemos el valor: CA3D716
El resultado final es la unión de ambos valores: 11DD,CA3D716

ARITMÉTICA BINARIA

Son las mismas operaciones utilizadas en el sistema decimal, estas son suma, resta, multiplicación y divisón para base binaria. En este caso solo utilizaremos la suma.

SUMA BINARIA

0+0 = 0
0+1 = 1
1+0 = 1
1+1= 10

Puede verse que las primeras tres reglas dan lugar a un resultado de un solo bit, y la cuarta regla, la suma de dos unos, da lugar a 10 (2 en binario). Como se suman números binarios, teniendo en cuenta la última regla se obtiene en la columna dada la suma 0 y un acarreo de 1 que pasa a la siguiente columna de la izquierda como se muestra.

Ejemplo: Realizar la suma de: 011 + 100 = 

Como se muestra en la figura 1, en la columna de la derecha 1 + 1 = 0, con el acarreo 1 que pasa a la siguiente columna de la izquierda.

En la columna central , 1 `+ 1 + 0 = 0, con acarreo 1 que pasa a la siguiente columna de la izquierda. Y en la columna de la izquierda 1 + 0 + 0 = 1. 

acarreo 
acarreo 


 1


 0
1

 0

 1