domingo, 4 de octubre de 2015

Un poco sobre los algoritmos

Algoritmo: Conjunto de Instrucciones bien definidas, ordenadas y finitas que resuelvan un problema. Entre las operaciones matemáticas están la suma, resta, división y multiplicación


Programación Estructurada

Busca que el programador desarrolle programas más sencillos y fáciles de entender, para poder cumplir esto, se hace uso de 3 estructuras básicas de control. La programación estructurada se basa en un teorema el cual plantea que cualquier programa (sin importar el tipo de trabajo que ejecute) puede ser elaborado utilizando únicamente las 3 estructuras básicas, las cuales son:

1- Estructura Secuencial: Indica que una instrucción se ejecute una después de la otra, y en orden.

2- Estructura Selectiva: También conocida como SI-VERDADERO-FALSO plantea la selección entre 2 alternativas de una condición.

3- Estructura Repetitiva (Iterativa): Conocida como HACER-MIENTRAS-QUE, es una ejecución repetida de una instrucción mientras que se cumpla una condición.


 Representación de un Algoritmo

 Hay varias formas de representar un algoritmo, las más conocidas son:

1) Diagrama de flujo: Es un esquema de representación gráfica, usa elementos gráficos como rectángulos y rombos, tambien se debe mencionar que se pueden hacer operaciones matemáticas.


  
 2) Pseudo-Código : Es un esquema que usa subconjuntos del lenguaje natural del diseñador de algoritmos, elimina posibles ambigüedades empleando una notación que aunque libre es más limitada que la del lenguaje general


Ejemplo Diagrama de flujo y Pseudo-Código

 
Tambien puede ser una buena forma de representar algoritmos con C y C++

Ejemplos de C y C++




Estructura de C++





Tipos de Datos en C++:

int (Números enteros)
float (Números decimales)
double (Números reales más grandes que float)
bool (valores lógicos)
char (Caracteres)
void (Sirve para indicar que una función no devuelve valores)



Cin

El archivo de la biblioteca de C++ <iostream.h> proporciona un flujo de entrada estándar cin y un operador de extracción >>, para extraer valores de flujo y almacenarlos en variables.

cin>>variables , donde variables puede ser 1 o más separados por >>


Cout

Parecido al cin, solamente que el archivo de la biblioteca proporciona un flujo de salida estándar cout y un operador de extracción <<, que normalmente se manda a la pantalla del usuario

cout << lista , donde lista puede ser una variable, valores constantes o expresiones separadas por <<.



Instrucciones de Selección

If - else : Permite decidir si ejecutar o no un conjunto de instrucciones

Forma: if (expresión) instrucción1 else instrucción2

ejemplo

#include <iostream.h>
void main()
{
    int nota;
    cout << "Ingrese la nota:";
    cin >> nota;
    if (nota >= 4)
    {
        cout << "Aprobado, felicitaciones!"<<endl;
    }
    else
    {
        cout << "No aprobado."<<endl;
    };
    cout <<"Fin del programa.";
   }


While: Se utiliza para crear ciclos, en los cuales un grupo de instrucciones se ejecuta de forma repetida, hasta que se satisface alguna condición.

Forma: while (expresión) instrucción

ejemplo

#include <iostream.h>
int main() {
    int repetir = 1;
    while(repetir==1) {
        cout <<“Ingrese un valor:” ;
        cin>>repetir;
    }
    return 0;
}


Do - While : Se utiliza para realizar una comprobación final de cada pasada

Forma: do instrucción while (expresión)

ejemplo

#include <iostream.h>

int main() {
    int repetir;
    do {
        cout <<“Ingrese un valor:” ;
        cin>>repetir;
    } while(repetir==1);
    return 0;


For: Quizás es el más frecuentemente usado de las instrucciones para crear ciclos. Incluye una expresión que especifica el valor inicial de un índice, también tiene una segunda expresión que determina cuando continúa o no el ciclo, y finalmente tiene una tercera expresión que permite que el índice se modifique al final de cada pasada.

Forma: for(expresión1 ; expresión2 ; expresión3) instrucción

ejemplo

#include <iostream.h>

int main() {
    int i;
    for(i=0; i<10; i++) {
        cout <<“i<< i;
    }
    return 0;
}


Switch: Hace que se selecciones un grupo de instrucciones entre varios grupos disponibles. La selección se basa en el valor de una expresión que se incluye en la instrucción switch

Forma: switch(expresión) instrucción , donde expresión devuelve un valor entero, expresión también puede ser tipo char

ejemplo

 cout << "Uso de SWITCH" << endl;
    switch(num){
        case 1: cout << "Valor es 1 " << endl;
                break;
        case 2: cout << "Valor es 2 " << endl;
                break;
        case 3: cout << "Valor es 3 " << endl;
                break;
        case 4: cout << "Valor es 4 " << endl;
                break;
        case 5: cout << "Valor es 5 " << endl;
                break;
        default:cout << "Valor es mayor que 5 " << endl;
    }

    return 0;
}


Break: Se utiliza para terminar la ejecución de ciclos o salir de una instrucción switch. Se puede utilizar dentro de una instrucción while, do-while, for o switch.

Forma: Break;



Comparación de Ciclos:



Vectores y Matrices:

Vector: Un vector, también llamado array(arreglo) unidimensional, es una estructura de datos que permite agrupar elementos del mismo tipo y almacenarlos en un solo bloque de memoria juntos, uno despues de otro. A este grupo de elementos se les identifica por un mismo nombre y la posición en la que se encuentran. La primera posición del array es la posición 0.
int a[5]; // Vector de 5 enteros

Matriz:  Una matriz es un vector de vectores o un también llamado array bidimensional. La manera de declarar una matriz es C++ es similar a un vector:

int matrix[rows][cols];
 
 
Tipos de matrices
 

 
 
Suma y Producto de un número real por una matriz.
 

 
Producto de Matrices
 
 Dadas dos matrices A = (aij)m×n y B = (bij)p×q donde n = p, es decir, el número de columnas de la primera matriz A es igual al número de filas de la matriz B , se define el producto A·B de la siguiente forma :

El elemento aque ocupa el lugar (i, j) en la matriz producto se obtiene sumando los productos de cada elemento de la fila i de la matriz A por el correspondiente de la columna j de la matriz B.
 

Algebra Binaria

El hombre trabaja normalmente con el sistema decimal (base 10), mientras que el ordenador trabaja con el sistema binario (base 2). En el sistema binario se emplean 10 símbolos (0 al 9), mientras que el binario solo se emplean 2 (0 y 1)

Sistema Binario: Sistema de enumeración en el que solo se utilizan las cifras 0 y 1. Es el sistema ocupado por los computadores, ya que trabajan con 2 niveles de voltaje ( encendido 1 y apagado 0)

Código Binario: Sistema de representación de datos o procesadores de instrucciones de ordenador, utiliza el sistema binario.

En Informática y Telecomunicaciones se usan variados métodos de decodificación de datos tales como cadena de caracteres, o cadena de bits. Estos métodos pueden ser de ancho fijo o variable. En un código binario de ancho fijo cada letra, número, dígito o símbolo esta representado por una cadena de bits de la misma longitud como un numero binario que suelen aparecer en las tablas en notación octal, decimal, hexadecimal.

Conversiones 

Decimal a binario

Se toma un numero y se empieza a dividir por 2, cada división da un resto que puede ser 0 o 1, el resto es lo que permite saber el numero binario de un decimal, se debe tomar en consideración que se debe tomar de derecha a izquierda los valores de los restos



Decimal fraccionario (con decimales) a Binario

Se inicia por el lado izquierdo, multiplicando cada número por 2 (si la parte entera es mayor que 0 en binario será 1, y en caso contrario es 0)
En caso de ser 1, en la siguiente multiplicación se utilizan sólo los decimales.
Después de realizar cada multiplicación, se colocan los números obtenidos en el orden de su obtención.
Algunos números se transforman en dígitos periódicos, por ejemplo: el 0,1


Ejemplo

0.3125 (decimal) => 0.0101 (binario).

Proceso: 0.3125 x 2 = 0.625 => 0
               0.625 x 2 = 1.25 => 1
               0.25 x 2 = 0.5 => 0
               0.5 x 2 = 1 => 1
 En orden: 0101 -> 0.0101 (binario)




Binario a Decimal

Se debe utilizar las potencias del numero 2, cada valor del número binario equivale a una potencia del numero 2, donde el 1 binario dice que tiene un valor asignado (una potencia de 2) y el 0 que no tiene valor asignado, para poder pasar de binario a decimal se suman las potencias, la siguiente foto explica de mejor forma lo que quiero decir



Para poder entender mejores las conversiones aquí una tabla con sus respectivas equivalencias 


Operaciones con números binarios

Suma                  Resta                   División                       Multiplicación

donde:                 donde:                donde:                         donde:

0+0=0                0-0=0                  0/0=No existe              0x0=0
0+1=1                0-1=1*                 0/1=0                           0x1=0
1+0=1                1-0=1                  1/0= Indef.                   1x0=0
1+1=0*              1-1=0                  1/1=1                           1x1=1



Representación de Caracteres

- ASCII (American Standard Code for Information Interchange): Estándar Americano para intercambio de información. La tabla básica de ASCII está compuesta por 128 caracteres que incluye símbolos y caracteres de control. Cada carácter esta representado por 7 bits. ASCII tiene una versión que se extiende hasta los 256 caracteres

- EBCDIC (Extended Binary Coded Decimal Interchange Code): Es una codificación de caracteres de 8 bits utilizada en los mainframes de IBM y en AS/400s

- Unicode: Es una norma de codificación de caracteres.



Tabla de Capacidades de almacenamientos 


Un poco de Historia de la Computación e Informática.

Una breve síntesis de la historia de la computación
-  500 A.C. --> Aparece el Ábaco 


- 1642 --> Se crea la Pascalina (por Blaise Pascal), que es una máquina calculadora


- 1670 --> Gottfried Leibniz mejora la pascalina, añadiéndole  la opción de multiplicar, dividir y para la raíz cúbica


- 1679 --> G. Leibniz desarrolla el modo aritmético binario, basado en el 0 y 1

- 1786 --> Johann Von Müller idea una calculadora mecánica, la cual solo se quedó en su pensamiento, ya que nunca la pudo concretar

- 1822 --> Charles Babbage re-descubre la idea de Müller y en este año diseña la máquina diferencial, la cual tampoco se pudo concretar

- 1833 --> C. Babbage diseña la máquina Analítica, que tampoco pudo ser construida.

- La condesa Ada Byron de Lovelace trabajo sobre la máquina analítica de Babbage. La condesa es considerada la primera programadora de la historia, ya que fue la primera en crear un algoritmo para la máquina.

- 1854 --> George Boole desarrollo la teoría del álgebra de Boole, la cual permite el desarrollo para la álgebra binaria

- 1886 --> Herman Hollerith inventa la máquina censadora o máquina tabuladora, la cual le permitio almacenar la información de las personas censadas y tabular su información, está basado en tarjetas perforadas 

- 1940 --> Konrad Zuse finaliza su modelo Z2, la cual fue la primera computadora electro-mecánia completamente funcional

- 1941 --> Alan Turing, con ayuda de M.H.A.Neuman construyeron una gran máquina llamada Colossus, esta máquina tenía como finalidad descifrar los códigos alemanes durante la II Guerra Mundial 

- 1942 --> Se termina de construir la primera computadora digital, aunque nunca se mejoró y sus creadores nunca la patentaron, por lo que hubieron conflictos con IBM

- 1944 --> Jhon Louis Von Neumann contribuyo de forma directa con las computadores de la primera generación, asesoro a los creadores de la ENIAC, que más tarde crearon la UNIAC. En la década de los 50 trabajo en IBM como consultor. Él también ayudo en la construcción de la computadora Mark I

- La Mark I es la primera máquina que puede ejecutar operaciones largas de forma automática.

- 1946 --> Se construye la ENIAC (Fue para fines militares)

- 1947 --> Se inventa el Transistor

- 1949 --> Se construye la EDVAC (Primer equipo con capacidad de almacenamiento).

 - 1949 --> Jack Forrest inventa la memoria de núcleo de acero.

- 1951 --> Grace Hooper crea el primer compilador, llamado A-0 (Math Matic)

- 1951 --> Fue presentada la UNIVAC

- 1958 --> Se inventan los Circuitos Integrados

- 1960 --> G. Hooper presenta su primera versión del lenguaje COBOL
 
 - 1964 --> IBM presenta su primera generación de computadores, IBM 360

- 1970 --> El Network Working Group acabó el protocolo host a host inicial para ARPANET, llamado Network Control Protocol (NCP). Durante los periodos de 1971-1972 los usuarios de la red pudieron comenzar a desarrollar aplicaciones.

- 1974 --> Intel crea la primera CPU

- 1975 --> Se funda Microsoft

- 1981 --> IBM presenta la Personal Computer ( IBM PC)

- 1984 --> Apple presenta la Macintosh, la cual se caracteriza por un sistema operativo que cuenta con una vistosa e intuitiva G.U.I. (Graphics Unit Interface)

- 1991 --> Se comienza a desarrollar Linux

- 1995 --> Microsoft lanza Windows 95

- 2000 --> Macintosh lanza su sistema operativo Mac OS X

- 2015 --> Microsoft lanza Windows 10




El aumento del conocimiento depende por completo de la existencia del desacuerdo.

                     Karl Popper