Entradas populares

domingo, 27 de septiembre de 2015

Programar en C++





Empezemos con lo básico. 

pdf para aprender desde 0

Una vez descargado e instalado el programa desde http://sourceforge.net/projects/orwelldevcpp/,  deberian empezar un nuevo "proyecto". 



¿Que proyecto debo crear? 
Una vez seleccionado "nuevo proyecto", deben seleccionar "aplicacion de consola" y elegir el nombre y destino del proyecto. 

Ahora deberia aparecer una ventana con texto (efectivamente, texto en c++) que veremos mas adelante, aunque este primer tutorial se basara mas en lo basico de los ides. 

Analicemos el codigo. Pero antes hagamos unas modificaciones para poder entenderlo mejor. Sea el programa que sea cambienlo por: 

#include <iostream> 

using namespace std; 

int main() 

cout << "Hola Mundo"; 
cin.get(); 
return 0; 

La primera linea

#include <iostream> 

Con esto, le estamos diciendo al programa que incluya una libreria (conjunto de codigo ya escrito que nos permitira programar). la libreria <iostream> es la libreria estandard de c++ y nos permite usar las sentencias(las "ordenes" que le damos a la computadora) mas basicas. 

using namespace std; 

como vimos antes, le dijimos al programa que incluya la libreria <iostream>, todo lo que esta escrito en <iostream>, esta escrito en lo que se llama un namespace (nombre de espacio).al escribir esto, nos ahorramos tener que escribir std:: antes de cada sentencia que escribamos, porque ya declaramos que vamos a usar este nombre de espacio. 
Es importante destacar que al final de la sentencia pusimos un ";" esto significa que ese es el final de la sentencia, y lo vamos a tener que poner al final de todas las sentencias(con algunas exepciones). Sino recibiremos un error al compilar. 

int main() 

Aqui declaramos una funcion. Una funcion es una parte de codigo a la que le asignamos un nobmre. En este caso, el nombre main(). Es importante que despues del nombre esten los parentesis, luego veremos porque. 
En resumen: 

makefiles

cout << "Hola Mundo"; 

Ahora lo que veremos en la consola. cout significa character output(salida de caracteres). A esta salida le vamos a insertar el valor "Hola Mundo". Lo que hara que en la consola se escriba "Hola Mundo". Si no ponemos las comillas, la computadora creera que "Hola Mundo" es una sentencia y nos dara error. 

cin.get(); 

Esta instruccion hara que la computadora espere a que presionemos la tecla "enter" para continuar, ya que sino se abrira y cerrara antes de que podamos leer nada. 
Algunos ides al ejecutar el programa esperan a que se apriete la tecla "enter" por mas que no lo agreguemos al programa, pero si ejecutamos el "Tutorial T!.exe"(resultado de la compilacion) sin el ide, se cerrara solo al instante porque lo ejecutaremos sin el ide. 

return 0; 

Por decirlo de alguna manera, todas las funciones deben retornar un valor. Y la funcion main(), retornara el valor 0 si no hubo ningun error. Las funciones deberan retornaran el valor especificado al declararlas "int main()" significa que la funcion main devolvera un numero entero(a los numeros enteros se los llama int por "integer" que significa entero en ingles). 



Existen tres sentencias condicionales en C, if, else, y else if: 


-Sentencia if: Esta sentencia permite la ejecución de un bloque de código, si y solo si, se ha cumplido la condición dentro del "if", si no se cumplió la condición, se pasa a las instrucciones que estén fuera del "if". 

-Sentencia else: En esta sentencia no se plantea directamente una condición, es mas bien, una respuesta a la condición que se formulo dentro de la sentencia "if". Si la condición de "if" no se cumplió, entonces se ejecuta el bloque de código que contenga la sentencia "else". 
Además, no puedo haber una sentencia "else" sin su respectiva sentencia "if" 

-Sentencia else if o else colgante: Esta sentencia es parecida a "else", con la diferencia de que en ésta si se evalúa una condición. Si la condición de un "if" anterior a "else if" no se cumplió, entonces se evalúa la condición de "else if", en caso de que no se cumpla la condición de la sentencia "else if", se ejecutara el siguiente bloque de código que este fuera de "else if". 
De nuevo, no puede existir un "else if", sin que exista un "if" antes de él. 
Por ejemplo si dada la edad de una persona quiero dar un mensaje de que es o no mayor de edad, suponiendo que una persona mayor de edad tiene por lo menos 21 años, el procedimiento será el siguiente.
#include <iostream>
using namespace std; int main()
{int edad; cout<<"¿Qué edad tienes? "; cin>>edad; if ( edad > 20 )     cout<<"Eres mayor de edad" ; }
#include <iostream>
using namespace std;
int main(){ cout<<"¿Qué edad tienes? \n"; cin>>edad; if ( edad > 20 )    { cout<<"Eres mayor de edad";       cout<<"Te estas volviendo viejo ";    }}
En Pseudocódigo el anterior ejemplo se vería de la siguiente forma:
Inicio Mostrar “¿Qué edad tienes?” Leer edad Si Edad >20 Entonces         Mostrar “Eres mayor de Edad” Fin Si Fin
El diagrama de flujo seria el siguiente 

sentencia  while
  
•Un ciclo while tiene una condición del ciclo, una expresión lógica que controla la secuencia de repetición.
•La posición de esta condición del ciclo es delante del cuerpo del ciclo y significa que un ciclo while es un ciclo de preverificación
 de modo que cuando se ejecuta el mismo, se evalúa la condición antes de que se ejecute el cuerpo del ciclo.
Sintaxis
   while ( condición )    
                estatuto;
 
        Si se requiere realizar más de un estatuto se deben utilizar llaves.    
     while ( condición )    
         {
               bloque de estatutos;
          }
     Aquí se ejecuta el (los) estatuto (s) mientras la condición es verdadera; al momento de ser falsa termina el ciclo.
   Si la condición es falsa la primera vez nunca se  ejecuta(n)  el (los) estatuto(s).
Ejemplo  : Obtener el promedio de calificaciones de un grupo de 20 estudiantes
#include <iostream.h>
  int total, contador, calif;
  double promedio;
 
  void main()
     {
       total = 0;
       contador = 1;
       while (contador <= 20 )
       {
          cout<<" Dame la calificacion "<<endl;
          cin >> calif;
          total = total + calif;
          contador ++;
       }
       promedio = total / 20.0;
       cout<<"El promedio es "<< promedio<<endl;
  }             

for (exp1;exp2;exp3) instrucción;
exp1 es una expresión que sólo se ejecuta una vez al principio del bucle. El bucle for suele utilizarse en combinación con un contador. Un contador es una variable que lleva la cuenta de las veces que se han ejecutado las instrucciones sobre las que actúa el comando for. Por tanto exp1 suele contener una expresión que nos permite inicializar ese contador generalmente a 0 aunque eso depende de para qué deseemos utilizar el bucle.
* La inicialización del contador (exp1).
* La condición de fin de bucle (exp2).
* Y la actualización del contador (exp3).
#include  #include  main()  {  int i;  for ( i=1;i<= 20;i++ )  {  printf( "%d ", i );  }  printf ("\nDespegar");  return 0;  }  "Despegue del 20 al 1"
Este ejemplo permite realizar una cuenta del 20 al 1 y cuando se cumple la condición del for el bucle finaliza e imprime a pantalla Despegar.  #include  #include  main()  {  int i;  for ( i=20;i>= 1;i--)  {  printf( "%d ", i );  }  printf ("\nDespegue\n");  return 0; 
}

sábado, 12 de septiembre de 2015

Numeros Binarios

Numeros Binarios

La definición de números binarios es: Son números que están dentro del sistema binario de numeración que está constituido por dos cifras 1 y 0, un sistema en el cual se escriben cantidades, códigos, mensajes y otros lenguajes con tan solo dos elementos dentro de la numeración, haciendo que el código se simplifique la comprensión de los sistemas informáticos, pues hará que un elemento tenga un valor unitario o nulo. Es decir que se trabaja en un sistema de puertas cerradas o abiertas. Una ambivalencia. Los elementos que se utilizan son el número uno (1) y el cero (0), donde el 1 significa que la puerta está abierta y el 0, que da como resultado que este elemento sea nulo o que la puerta esté cerrada por lo que la información ignorará este espacio.

Para Qué Sirven Los Números Binarios

El sistema binario de numeración es utilizado con mucha frecuencia y fue el origen de los sistemas informáticos como las calculadoras y las computadoras. Esto se debe a que la simplificación del lenguaje logra un nivel bajo de error pues se basa en dos únicas respuestas por parte del interprete. Es decir, que solo puede haber dos interpretaciones por cada símbolo. Una puerta está abierta o cerrada, nunca puede haber un valor intermedio. Es como si la respuesta a cualquier pregunta fuera sí o no. 1 o 0. Apagado o encendido. Entonces los transistores y chips de un aparato pueden o no conducir la corriente de información en estos dos únicos sentidos.

Sin embargo, antes de la época informática, este tipo de lenguaje también se utilizaba para codificar mensajes que no se deseaba ser descubierto. Y para simplificar la interpretación de un lenguaje a pesar de ser escrito con solo dos símbolos.
Conversión de números decimales a binarios

Convertir un número decimal al sistema binario es muy sencillo: basta con realizar divisiones sucesivas por 2 y escribir los restos obtenidos en cada división en orden inverso al que han sido obtenidos.
Por ejemplo, para convertir al sistema binario el número 7710 haremos una serie de divisiones que arrojarán los restos siguientes:
77 : 2 = 38 Resto: 1
38 : 2 = 19 Resto: 0
19 : 2 = 9 Resto: 1
9 : 2 = 4 Resto: 1
4 : 2 = 2 Resto: 0
2 : 2 = 1 Resto: 0
1 : 2 = 0 Resto: 1
y, tomando los restos en orden inverso obtenemos la cifra binaria:

7710 = 10011012

Conversión de binario a decimal


El proceso para convertir un número del sistema binario al decimal es aún más sencillo; basta con desarrollar el número, teniendo en cuenta el valor de cada dígito en su posición, que es el de una potencia de 2, cuyo exponente es 0 en el bit situado más a la derecha, y se incrementa en una unidad según vamos avanzando posiciones hacia la izquierda.
Por ejemplo, para convertir el número binario 10100112 a decimal, lo desarrollamos teniendo en cuenta el valor de cada bit:

1*26 + 0*25 + 1*24 + 0*23 + 0*22 + 1*21 + 1*20 = 83
10100112 = 8310



Conversión de un número decimal a octal

La conversión de un número decimal a octal se hace con la misma técnica que ya hemos utilizado en la conversión a binario, mediante divisiones sucesivas por 8 y colocando los restos obtenidos en orden inverso. Por ejemplo, para escribir en octal el número decimal 12210 tendremos que hacer las siguientes divisiones:
122 : 8 = 15     Resto: 2
15 : 8 = 1           Resto: 7
1 : 8 = 0               Resto: 1
Tomando los restos obtenidos en orden inverso tendremos la cifra octal:

12210 = 1728
Ejercicio 5:
Convierte los siguientes números decimales en octales:  6310,   51310,   11910


 Conversión octal a decimal

La conversión de un número octal a decimal es igualmente sencilla, conociendo el peso de cada posición en una cifra octal. Por ejemplo, para convertir el número 2378 a decimal basta con desarrollar el valor de cada dígito:
2*82 + 3*81 + 7*80 = 128 + 24 + 7 = 15910

2378 = 15910

Ejercicio 6:
Convierte al sistema decimal los siguientes números octales: 458,   1258,   6258

 Sistema de numeración hexadecimal

En el sistema hexadecimal los números se representan con dieciséis símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F. Se utilizan los caracteres A, B, C, D, E y F representando las cantidades decima­les 10, 11, 12, 13, 14 y 15 respectivamente, porque no hay dígitos mayores que 9 en el sistema decimal. El valor de cada uno de estos símbolos depende, como es lógico, de su posición, que se calcula mediante potencias de base 16.
Calculemos, a modo de ejemplo, el valor del número hexadecimal 1A3F16:

1A3F16 = 1*163 + A*162 + 3*161 + F*160

1*4096 + 10*256 + 3*16 + 15*1 = 6719

1A3F16 = 671910



Suma en binario


Para aprender a sumar, con cinco o seis años de edad, tuviste que memorizar las 100 combinaciones posibles que pueden darse al sumar dos dígitos decimales. La tabla de sumar, en binario, es mucho más sencilla que en decimal. Sólo hay que recordar cuatro combinaciones posibles:
+
0
1
0
0
1
1
1
0 + 1
Las sumas 0 + 0, 0 + 1 y 1 + 0 son evidentes:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1

Pero la suma de 1+1, que sabemos que es 2 en el sistema decimal, debe escribirse en binario con dos cifras (10) y, por tanto 1+1 es 0 y se arrastra una unidad, que se suma a la posición siguiente a la izquierda. Veamos algunos ejemplos:
010 + 101 = 111 210 + 510 = 710
001101 + 100101 = 110010 1310 + 3710 = 5010

1011011 + 1011010 = 10110101 9110 + 9010 = 18110

110111011 + 100111011 = 1011110110 44310 + 31510 = 75810

Sustracción en binario


La técnica de la resta en binario es, nuevamente, igual que la misma operación en el sistema decimal. Pero conviene repasar la operación de restar en decimal para comprender la operación binaria, que es más sencilla. Los términos que intervienen en la resta se llaman minuendo, sustraendo y diferencia.

-
0
1
0
0
1
1
1 + 1
0

Las restas 0 - 0, 1 - 0 y 1 - 1 son evidentes:
0 – 0 = 0
1 – 0 = 1
1 – 1 = 0

La resta 0 - 1 se resuelve, igual que en el sistema decimal, tomando una unidad prestada de la posición siguiente: 10 - 1, es decir, 210 – 110 = 1.  Esa unidad prestada debe devolverse, sumándola, a la posición siguiente. Veamos algunos ejemplos:
111 – 101 = 010 710 – 510 = 210

10001 – 01010 = 00111 1710 – 1010 = 710

11011001 – 10101011 = 00101110 21710 – 17110 = 4610

111101001 – 101101101 = 001111100 48910 – 36510 = 12410



Multiplicación de números binarios







viernes, 4 de septiembre de 2015

Historia de la computación

Primera generación (1939-1958)

Las computadoras de la primera Generación emplearon bulbos para procesar información. Los operadores ingresaban los datos y programas en código especial por medio de tarjetas perforadas. El almacenamiento interno se lograba con un tambor que giraba rápidamente, sobre el cual un dispositivo de lectura y escritura colocaba marcas magnéticas.
UNIVAC I




Eckert y Mauchly  construyeron la UNIVAC I, la cual el Comité del censo utilizó para evaluar el censo de 1950 













IBM 701


                                                                                Para introducir los datos, estos equipos empleaban el concepto de tarjetas perforadas, que había, sido inventada en los años de la revolución industrial por el francés Jacquard y perfeccionado por el estadounidense Hermand Hollerith en 1890,
   la IBM 701 fue la primera de una larga serie de computadoras de esta compañía

Segunda generación (1959-1964)


Transistor Compatibilidad Limitada
Las computadoras de la llamada segunda generación ya no son de bulbos, sino con transistores son mas  nuevas computadoras es mediante lenguajes mas avanzados que el lenguaje de máquina, y que reciben el nombre de "lenguajes de alto nivel" o lenguajes de programación.pequeñas y consumen menos electricidad que las anteriores, la forma de comunicación con estas
Las características de las computadoras de la segunda generación son entonces Estaban construidas con electrónica de transistores Y se programaban en lenguajes de alto nivel
Se desarrollaron nuevos lenguajes de programación como COBOL y FORTRAN, los cuales eran comercialmente accesibles.
Whirlwind I



La marina de los Estados Unidos desarrolla el primer simulador de vuelo, "Whirlwind I"









IBM Stretch




Se construyeron las supercomputadoras Remington Rand UNIVAC LARC, e IBM Stretch 






Tercera Generación (1964-1971)
Las computadoras de la tercera generación emergieron con el desarrollo de los circuitos integrados (pastillas de silicio) en las cuales se colocan miles de componentes electrónicos, en una integración en miniatura. Las computadoras nuevamente se hicieron más pequeñas, más rápidas, desprendían menos calor y eran energéticamente más eficientes.
circuitos integrados



IBM 360
IBM marca el inicio de esta generación, cuando el 7 de abril de 1964 presenta la impresionante IBM 360, con su tecnología SLT (Solid Logic Technology). Esta máquina causó tal impacto en el mundo de la computación que se fabricaron más de
30000, al grado que IBM llegó a conocerse como sinónimo de computación.



CDC 6600


Control Data Corporation presenta la supercomputadora CDC 6600, que se consideró como la más poderosa de las computadoras de la época, ya que tenía la capacidad de ejecutar unos 3 000 000 de instrucciones por segundo (mips).



Se desarrollaron los "chips" para almacenar y procesar la información. Un "chip" es una pieza de silicio que contiene los componentes electrónicos en miniatura llamados semiconductores.
Los circuitos integrados recuerdan los datos, ya que almacenan la información como cargas eléctricas.
Surge la multiprogramación.
Las computadoras pueden llevar a cabo ambas tareas de procesamiento o análisis matemáticos.
Emerge la industria del "software".

Cuarta generación (1971-1981)

Dos mejoras en la tecnología de las computadoras marcan el inicio de la cuarta generación: el reemplazo de las memorias con núcleos magnéticos, por las de chips de silicio y la colocación de muchos más componentes en un Chip: producto de la microminiaturización de los circuitos electrónicos. El tamaño reducido del microprocesador y de chips hizo posible la creación de las computadoras personales (PC)

Esta generación de computadoras se caracterizó por grandes avances tecnológicos realizados en un tiempo muy corto. En 1977 aparecen las primeras microcomputadoras, entre las cuales, las más famosas fueron las fabricadas por Apple Computer, Radio Shack y Commodore Busíness Machines. IBM se integra al mercado de las microcomputadoras con su Personal Computer, de donde les ha quedado como sinónimo el nombre de PC, y lo más importante; se incluye un sistema operativo estandarizado, el MS- DOS (MicroSoft Disk Operating System).

Fundadores de Microsoft, Paul Allen a la izquierda y Steve Jobs
Fundación de Microsoft corporation en 1975 por William Henry Gates y Paul Allen en la ciudad de Alburquerque, Nuevo México, debido a que la sede de la MITS estaba en esa ciudad. Microsoft fue el proveedor de la versión del lenguaje BASIC para la computadora personal MITSAltair.


Quinta generación (1982-      )

Las aplicaciones exigen cada vez más una mayor capacidad de procesamiento y almacenamiento de datos. Sistemas especiales, sistemas multimedia (combinación de textos, gráficos, imágenes y sonidos), bases de datos distribuidas y redes neutrales, son sólo algunos ejemplos de esas necesidades. Una de las principales características de esta generación es la simplificación y miniaturización del ordenador, además de mejor desempeño y mayor capacidad de almacenamiento


Procesadores Pentium
El primer Pentium se lanzó al mercado el 22 de marzo de 1993,1 con velocidades iniciales de 60 y 66 MHz, 3.100.000 transistores, cache interno de 8 KiB para datos y 8 KiB para instrucciones






Macintosh por Steve Jobs





Apple 1984 Apple presenta la Macintosh, la cual se caracteriza por su sistema operativo que cuenta con una vistosa e intuitiva GUI. 








Inicios del Internet, La compañía BELL crea el primer módem que permitía transmitir datos binarios sobre una línea telefónica simple