1.¿Qué es un
programa?
|
En informática, un programa es un conjunto
de instrucciones u órdenes que indican a la máquina las operaciones que ésta
debe realizar con unos datos determinados. En general, todo programa indica a
la computadora cómo obtener unos datos de salida, a partir de
unos datos de entrada. En la siguiente figura se muestra, gráficamente, el
funcionamiento básico de un programa.
|
|
|
|
|
|
|
2. ¿Qué es
una APP?
Una App es una aplicación de software que se instala
en dispositivos móviles o tablets para ayudar al usuario en una labor concreta,
ya sea de carácter profesional o de ocio y entretenimiento, a diferencia de una
webapp que no es instalable.
El objetivo de una app es facilitarnos la consecución
de una tarea determinada o asistirnos en operaciones y gestiones del día a día.
Existen infinidad de tipos de aplicaciones: Apps de
noticias (elmundo.es), juegos (CSR
Racing), herramientas de comunicación como Whatsapp, redes sociales como
Google+, apps para salir de fiesta (Liveclubs),
promociones comerciales (McDonnalds), aplicaciones para vender tus cosas
usadas desde el móvil (YuMe)…etc, que nos pueden ayudar en el trabajo o
intentar hacernos el día más ameno.
3. ¿Qué es
un lengaje de programación?
Un lenguaje de programación es un sistema con una
estructura de comunicación similar al humano, este permite que los aparatos se
entiendan entre sí y que a su vez interprete y ejecute las instrucciones de los
usuarios.
Los lenguajes de programación de una computadora en
particular se conoce como código de máquinas o lenguaje de máquinas.
Estos lenguajes codificados en una computadora
específica no podrán ser ejecutados en otra computadora diferente.
Para que estos programas funcionen para diferentes
computadoras hay que realizar una versión para cada una de ellas, lo que
implica el aumento del costo de desarrollo.
Por otra parte, los lenguajes de programación en
código de máquina son verdaderamente difíciles de entender para una persona, ya
que están compuestos de códigos numéricos sin sentido nemotécnico.
Los lenguajes de programación facilitan la tarea de
programación, ya que disponen de formas adecuadas que permiten ser leidas y
escritas por personas, a su vez resultan independientes del modelo de
computador a utilizar.
Los lenguajes de programación representan en forma
simbólica y en manera de un texto los códigos que podrán ser leidos por una
persona.
Los lenguajes de programación son independientes de
las computadoras a utilizar.
Existen estrategias que permiten ejecutar en una
computadora un programa realizado en un lenguaje de programación simbólico. Los
procesadores del lenguaje son los programas que permiten el tratamiento de la
información en forma de texto, representada en los lenguajes de programación
simbólicos.
3.1 ¿Cuántos
tipos existen?
Lenguaje de Programación de bajo nivel
Este tipo de lenguaje de programación es utilizado
para controlar directamente el hardware del dispositivo y dependen únicamente
de la máquina, es decir, no pueden ser usados en aparatos diferentes de los que
fueron creados originalmente. También conocido como “código máquina”, solo
pueden ordenar las operaciones primarias para el funcionamiento del
dispositivo, tienden a ser complejos por lo que lo suelen utilizar los
fabricantes de hardwares. Con este lenguaje de programación de bajo nivel se
puede reproducir audios y videos, mostrar imágenes, realizar operaciones
matemáticas, seguir el movimiento del puntero, etc.
Lenguajes de programación de alto nivel
Este tipo de lenguaje de programación es más parecido
al humano, no dependen del dispositivo y
sirven para crear programas informáticos que solucionan distintos tipos de
requerimientos y necesidades.
Se tratan de lenguajes independientes de la
arquitectura del ordenador. Por lo que, en principio, un programa escrito en un
lenguaje de alto nivel, lo puedes migrar de una máquina a otra sin ningún tipo
de problema.
Estos lenguajes permiten al programador olvidarse por
completo del funcionamiento interno de la maquina/s para la que están diseñando
el programa. Tan solo necesitan un traductor que entiendan el código fuente
como las características de la maquina.
Suelen usar tipos de datos para la programación y hay
lenguajes de propósito general (cualquier tipo de aplicación) y de propósito
especifico (como FORTRAN para trabajos científicos).
Lenguajes de Medio nivel
Se trata de un termino no aceptado por todos, pero q
seguramente habrás oído. Estos lenguajes se encuentran en un punto medio entre
los dos anteriores. Dentro de estos lenguajes podría situarse C ya que puede
acceder a los registros del sistema, trabajar con direcciones de memoria, todas
ellas características de lenguajes de bajo nivel y a la vez realizar
operaciones de alto nivel.
Generaciones
La evolución de los lenguajes de programación se puede
dividir en 5 etapas o generaciones.
Primera
generación: lenguaje maquina.
Segunda
generación: se crearon los primeros lenguajes ensambladores.
Tercera
generación: se crean los primeros lenguajes de alto nivel. Ej. C, Pascal,
Cobol…
Cuarta
generación. Son los lenguajes capaces de generar código por si solos, son los
llamados RAD, con lo cuales se pueden realizar aplicaciones sin ser un experto
en el lenguaje. Aquí también se encuentran los lenguajes orientados a objetos,
haciendo posible la reutilización d partes del código para otros programas. Ej.
Visual, Natural Adabes…
Quinta
generación: aquí se encuentran los lenguajes orientados a la inteligencia
artificial. Estos lenguajes todavía están poco desarrollados. Ej. LISP
3.2
¿Qué es DevC++?
Dev-C++ es un compilador y entorno de desarrollo para
C/C++
Consiste en un editor de múltiples ventanas integrado
con un compilador que nos permitirá una compilación, un enlace y una ejecución
de aplicaciones rápida y de fácil uso.
C/C++ son lenguajes de programacion, donde c++ fue
creado para extender el legunaje de programcion c y asi dar la posibilidad de
usar manipulacion de objetos.
A diferencia de DFD que habiamos visto antes de
comenzar con Dev-C++, pues no usa simbolos ( ver entrada sobre los simbolos en
DFD ) así como en los diagramas de flujo que aprendimos, si no que usa codigos
para reemplazar aquellos simbolos, por eso es importante saber hacer un
diagrama de flujo / algoritmo, para poder realizar bien un programa en c, c++,
o cualquier programa que use lenguaje de programaicon con codigo, porque la
idea sigue siendo la mismo solo cambian los simbolos por palabras restringidas
en dicho lenguaje.
4.¿Qué es una instrucción?
Las acciones que realiza un programa se expresan en instrucciones.
Entre las acciones comunes se incluyen declarar variables, asignar valores,
llamar a métodos, recorrer colecciones en bucle y crear una bifurcación a uno u
otro bloque de código, en función de una condición determinada. El orden en el
que se ejecutan las instrucciones en un programa se denomina flujo de control o
flujo de ejecución. El flujo de control puede variar cada vez que se ejecuta un
programa, en función de cómo reacciona el programa a la entrada que recibe en
tiempo de ejecución.
Una instrucción puede constar de una sola línea de
código que finaliza en un punto y coma o de una serie de instrucciones de una
sola línea en un bloque. Un bloque de instrucciones se incluye entre llaves {}
y puede contener bloques anidados. En el código siguiente se muestran dos
ejemplos de instrucciones de una sola línea y un bloque de instrucciones de
varias líneas:
4.1 ¿Cuántos tipos de instrucciones existen en DevC++?
Estos son los tipos de instrucciones:
Instrucciones declarativas
Sirven para declarar librerias, variables, constantes,
arreglos , punteros, estructuras…
Por ejemplo:
1.) Para librerias:
Las librerias las declaramos porque vamos a usar
recursos que contienen ellas.
#include <iostream.h> ——> cin , cout..
#include <conio.h> ——> funcion getch()..
#include <string.h> ——> para manipular
cadenas
2.) Para variables:
las variables las declaramos con el fin de tener un
espacio para almacenar algun dato que va a cambiar con el tiempo.
char nombre; ——> Declarando variable
tipo caracter
int a,b,c; ——>
Declarando variable tipo entero
3.) Para constantes:
Las constantes las declaramos con el fin de tener un
espacio para almacenar algun dato que no va a cambiar.
Se las puede declarar de dos formas:
Tomemos como ejemplo la formula para hallar el area de
un triangulo:

4.) Para arreglos:
Los arreglos son un conjunto de variables del mismo
tipo y nombre, pero indexadas por una posicion diferente.
float vector [12]; ——> Declarando un arreglo tipo
flotante ( decimal )
ése “vector” que se ha declarado arriba, al ser un
arreglo quiere decir que hay 12 variables con el mismo nombre
y son del mismo tipo, pero diferenciadas unicamente en
su posicion, asi:
vector[0],vector[1],vector[2],vector[3],vector[4],vector[5],vector[6],
………….. ,vector[10],vector[11].
Instrucciones de asignación
Sirven para dar
valores a las variables, y llevan éste formato:
nombre_variable =
expresión ;
Por ejemplo:
a = 15 ;
x = a + 5 ;
z = x / 2 ;
Instrucciones selectivas
Son mediante las
cuales podemos ejecutar diferentes acciones, como resultado de una expresion
que estemos evaluando en ese momento y pueden ser:
– Las selectivas
simples: Las que como resultado de una
expresión que se esté evaluando, solo podemos ejecutar una opcion por verdadero.
– Las selectivas
dobles: Nos permite seleccionar entre dos
diferentes acciones, una por verdadero y otra por falso.
– Las selectivas
multiples: Podemos ejecutar diferentes
acciones como resultado de una expresión que estemos evaluando.
Instrucciones repetitivas
Sirven para repetir
una condicion N veces, siempre y cuando la condicion sea verdadera.
Instrucciones de entrada y salida de datos
El lenguaje C++ no
tiene palabras reservadas para ingresar o mostrar datos, para ello usan
recursos que se encuentran en las librerias.
Por ejemplo:
En la libreria
<iostream.h> tenemos para la entrada y salida de datos a cin y cout
respectivamente.
Uso:
– Para la entrada de
datos ( pedir )
cin >>
nombre_del_usuario ;
– Para la salida de
datos ( mostrar )
cout <<
nombre_del_usuario
Instrucciones de bifurcación
Interrumpen el flujo
normal de un programa, es decir que evitan que se ejecute alguna instrucción
del programa y salta a otra parte del programa.
Por ejemplo: el “
break “
Switch ( expresión
que estamos evaluando )
{
case 1 : cout
<< ” Hola! “ ; break ;
case 2 : cout
<< ” amig@s “ ;
5. ¿Qué es
una palabra reservada?
Las palabras reservadas son aquellas que tienen un uso
determinado para el lenguaje y, por lo tanto, no pueden ser empleadas en el
código como identificadores (por ejemplo, nombres para las variables).
Éstas no pueden ser utilizadas por el usuario para
nombrar a las variables, funciones, procedimientos, objetos y demás elementos
de programación que cree.
En lenguaje de programación PHP, las palabras
reservadas no pueden ser usadas para nombres de constantes, de clases, de
funciones o de métodos. Sí pueden emplearse como nombres de variables, pero
puede prestarse a confusiones por lo que se desaconseja. Ejemplos de palabras
reservadas son break, do, clone, for, switch, echo, etc.
Cada lenguaje de programación tiene su propio grupo de
palabras reservadas, pero en general coinciden algunas de las siguientes: and,
array, begin, case, const, default, do, else, end, file, for, function, goto,
if, in, label, mod, not, of, or, repeat, return, then, to, type, until, void,
while, etc.
6. ¿Qué es
una librería?
Se emplea el término librería para referirse a una
biblioteca, por la similitud con el original inglés library. Ambos términos,
biblioteca y librería, son correctos según las definiciones de la RAE, aunque
en términos formales, la acepción correcta es biblioteca, porque es la
traducción correcta de library.
Independientemente de lo anterior comentado, una
biblioteca es un Kit de herramientas software pequeño y autónomo que ofrece una
funcionalidad muy específica al usuario. Normalmente se usa junto con otras
librerías y herramientas para hacer una aplicación completa, ya que por lo
general las bibliotecas no son ejecutables, pero sí pueden ser usadas por
ejecutables que las necesiten para poder funcionar.
Las ventajas enormes de esto son:
· No
tener que volver a escribir el código (o hacer copy-paste).
· Nos
ahorraremos el tiempo de compilar cada vez ese código que ya está compilado.
Además, ya sabemos que mientras hacemos un programa, probamos y corregimos, hay
que compilar entre muchas y "más muchas" veces.
· El
código ya compilado estará probado y será fiable. No las primeras veces, pero
sí cuando ya lo hayamos usado en 200 programas distintos y le hayamos ido
corrigiendo los errores.
6.1 ¿Cuántos
tipos de librería tiene DevC++?
El Estándar C++ las
clasifica según su utilidad:
·
Soporte del lenguaje.
·
Diagnóstico
·
Utilidades generales
·
Cadenas alfanuméricas
("Strings")
·
Localización
·
Contenedores
·
Iteradores
·
Algoritmos
·
Cálculo numérico
·
Entrada/Salida
Para poner un poco
de orden, el Estándar C++ define la denominada Librería Estándar que debe acompañar a cada implementación del
compilador que se adhiera al estándar. Es decir: la norma determina cuales son,
como se llaman y como se utiliza este conjunto de algoritmos que deben
acompañar (como mínimo) a cada implementación del compilador que quiera
llamarse "Estándar". La última versión, ISO/IEC 14882 del año
1998, especifica que se compone de 32 ficheros de cabecera de nombres fijos y
conocidos agrupados según la funcionalidad de los algoritmos. Son los
siguientes:
|
Ficheros
|
Funcionalidad/funciones
|
|
<algorithm>
|
Parte de la STL
que describe los algoritmos.
|
|
<bitset>
|
Parte de la STL
relativa a contenedores tipo bitset. Set de valores booleanos.
|
|
<complex>
|
Parte de la
librería numérica de la STL relativa a los complejos.
|
|
<deque>
|
Parte de la STL
relativa a contenedores tipo deque; un tipo de colas:
"Double-ended-queue".
|
|
<exception>
|
Parte de la
librería de diagnóstico relativa al manejo de excepciones.
|
|
<fstream>
|
Flujos
hacia/desde ficheros.
|
|
<functional>
|
Parte de la STL
relativa a Objetos-función.
|
|
<iomanip>
|
Manipuladores.
|
|
<ios>
|
Supreclases para
manejo de flujos de E/S.
|
|
<iosfwd>
|
Contiene
declaraciones adelantadas de todas las plantillas de flujos y sus typedefs
estándar. Por ejemplo ostream.
|
|
<iostream>
|
Parte del a STL
que contiene los algoritmos estándar de E/S.
|
|
<istream>
|
Algoritmos
estándar de flujos de entrada.
|
|
<iterator>
|
Parte de la STL
relacionada con iteradores, un tipo de puntero que permite utilizar los
algoritmos de la Librería con las estructuras de datos representadas por los
contenedores.
|
|
<limits>
|
Descripción de
propiedades dependientes de la implementación , que afectan a los tipos
fundamentales.
|
|
<list>
|
Parte de la STL
relativa a contenedores tipo list; listas doblemente enlazadas.
|
|
<locale>
|
Parte de la STL
relativa a la internacionalización .
|
|
<map>
|
Parte de la STL
relativa a contenedores tipo map.
|
|
<memory>
|
Utilidades
relativas a la gestión de memoria, incluyendo asignadores y punteros
inteligentes (auto_ptr).
|
|
<new>
|
Manejo de memoria
dinámica.
|
|
<numeric>
|
Parte de la
librería numérica de la STL relativa a operaciones numéricas.
|
|
<ostream>
|
Algoritmos
estándar para los flujos de salida.
|
|
<queue>
|
Parte de la STL
relativa a contenedores tipo queue; colas de objetos.
|
|
<set>
|
Parte de la STL
relativa a contenedores tipo set.
|
|
<sstream>
|
Flujos
hacia/desde cadenas alfanuméricas.
|
|
<stack>
|
Parte de la STL
relativa a contenedores tipo stack); pilas de objetos.
|
|
<stdexcept>
|
Parte de la STL
relativa a las clases de las que derivan los objetos lanzados por las
excepciones ocasionadas en los algoritmos de la propia STL y otras
expresiones. Estas clases son utilizadas para reportar errores
detectados durante runtime. Los usuarios también pueden utilizar
excepciones para reportar errores en sus propios programas.
|
|
<streambuf>
|
Parte de la STL
relativa al Almacenamiento de flujos de E/S ("Stream
buffers"). Define los tipos que controlan la capa de transporte.
|
|
<string>
|
Parte de la STL
relativa a contenedores tipo string; una generalización de las
cadenas alfanuméricas para albergar cadenas de objetos.
|
|
<typeinfo>
|
Mecanismo de
identificación de tipos en tiempo de ejecución.
|
|
<utility>
|
Parte de la STL
que contiene elementos auxiliares como operadores y pares (pairs).
|
|
<valarray>
|
Parte de la
librería numérica de la STL relativa a manejo de matrices numéricas.
|
|
<vector>
|
Parte de la STL
relativa a los contenedores tipo vector; una generalización de las
matrices unidimensionales C/C++ .
|
7. Tipos de
datos en DevC++
En lenguaje C tenemos en general 4 grandes tipos de
datos, estos son los basicos, enumerados, voids, y derivados.
Tipos de
datos básicos (numéricos y caracteres):
A continuación esta
tabla muestra los tipos de datos y el rango de valores que puede tomar, algunos
varían dependiendo del tipo de maquina en el que se desarrolle, si es 16 bits,
32 bits, o 64 bits, algunos tipos de datos pueden variar su rango de valores y
tamaño.
|
Tipo
|
Tamaño
en memoria
|
Valores
posibles
|
Descripción
|
|
char
|
1
byte
|
-128
a 127 o 0 a 255
|
Guarda
caracteres del codigo ASCII
|
|
int
|
2
or 4 bytes
|
-32,768
a 32,767 o -2,147,483,648 a 2,147,483,647
|
Guarda
numeros enteros,
|
|
float
|
4
bytes
|
1.2E-38
a 3.4E+38
|
Guarda
numeros decimales con precisión de 6 digitos decimales
|
|
short
|
2
bytes
|
-32,768
a 32,767
|
Guarda
numeros enteros con menor capacidad de almacenamiento(y rango) que int
|
|
double
|
8
bytes
|
2.3E-308
a 1.7E+308
|
Igual
que Float pero con mayor precisión (hasta 15 digitos decimales) y mayor rango
|
|
long
|
4
bytes
|
-2,147,483,648
a 2,147,483,647
|
Guarda
numeros enteros con mayor capacidad de almacenamiento que int
|
|
long
double
|
10
bytes
|
3.4E-4932
to 1.1E+4932
|
Mucho
mayor precisión en calculo decimal, incluso mayor que double (hasta 19
digitos decimales)
|
8. Tipos de
operaciones de DevC++
Para poder realizar
una operación en el lenguaje de programación C hay que seguir los siguientes
pasos:
1. Declarar
el nombre de las variables que representan a los operandos.
2. Declarar
el nombre de la variable que representa el resultado.
3. Asignarle
un valor a los operandos. Esto se puede hacer directamente desde nuestro código
o recogiendo los valores por teclado.
4. Escribir
la operación que queremos realizar
5. Mostrar,
si se desea, el resultado por pantalla.
Las operaciones que
se pueden realizar son las siguientes:
|
Operaciones Aritméticas
|
|
|
Suma
|
+
|
|
Resta
|
-
|
|
Multiplicación
|
*
|
|
División
|
/
|
|
Incremento
|
++
|
|
Decremento
|
--
|
|
Módulo
|
%
|
|
Operaciones de comparación
|
|
|
Mayor que
|
>
|
|
Menor que
|
<
|
|
Menor o igual que
|
<=
|
|
Mayor o igual que
|
>=
|
|
Igual que
|
==
|
|
Distinto que
|
!=
|
Muchos de estos
operadores no necesitan explicación ya que realizan la misma acción que en la
vida real, pero existen unos pocos que sí necesitan explicación. Estos son:
·
Operador aritmético Módulo:
Este operador da como resultado el resto de la división entera y se puede
utilizar también con números reales.
·
Operadores incremento y decremento:
la operación de incremento y decremento, suma o resta respectivamente, una
unidad al valor de la variable. Existen dos formas de llevar a cabo estas
operaciones. La primera es el postincremento y el postdecremento que primero
calcula el valor de la variable y luego la incrementa o decrementa, y la
segunda es el preincremento y predecremento que primero incrementa o decrementa
en valor de la variable y después calcula la expresión.
9. Ejemplo
de programa en DevC++
Que pida un número del 1 al 12 y diga el nombre del mes
correspondiente.
#include
<stdio.h>
#include
<stdlib.h>
int main(void)
{
int i;
printf("Introduzca número del 1 al 12:");
scanf("%d",&i);
switch(i){
case 1:
printf
("Enero\n");
break;
case 2:
printf ("Febrero\n");
break;
case 3:
printf ("Marzo\n");
break;
case 4:
printf ("Abril\n");
break;
case 5:
printf ("Mayo\n");
break;
case 6:
printf ("Junio\n");
break;
case 7:
printf ("Julio\n");
break;
case 8:
printf ("Agosto\n");
break;
case 9:
printf ("Septiembre\n");
break;
case 10:
printf ("Octubre\n");
break;
case 11:
printf ("Noviembre\n");
break;
case 12:
printf ("Diciembre\n");
break;
default:
printf ("Opción no válida\n");
break;
}
system("PAUSE");
return 0;}
Que pida 3 números y los muestre en pantalla de mayor a
menor en líneas distintas. En caso de haber números iguales se pintan en la
misma línea.
#include
<stdio.h>
#include
<stdlib.h>
int main(void)
{
int num1,num2,num3;
printf("Introduzca
número 1:");
scanf("%d",&num1);
printf("Introduzca
número 2:");
scanf("%d",&num2);
printf("Introduzca
número 3:");
scanf("%d",&num3);
if (num1>num2 && num1>num3)
{
if (num2>num3)
{
printf("%d\n",num1);
printf("%d\n",num2);
printf("%d\n",num3);
}
else if (num3>num2)
{
printf("%d\n",num1);
printf("%d\n",num3);
printf("%d\n",num2);
}
else
{
printf("%d\n",num1);
printf("%d",num3);
printf("%d\n",num2);
}
}
else if (num2>num1 && num2>num3)
{
if (num1>num3)
{
printf("%d\n",num2);
printf("%d\n",num1);
printf("%d\n",num3);
}
else if (num3>num1)
{
printf("%d\n",num2);
printf("%d\n",num3);
printf("%d\n",num1);
}
else
{
printf("%d\n",num2);
printf("%d",num3);
printf("%d\n",num1);
}
}
else if (num3>num1 && num3>num2)
{
if (num1>num2)
{
printf("%d\n",num3);
printf("%d\n",num1);
printf("%d\n",num2);
}
else if (num2>num1)
{
printf("%d\n",num3);
printf("%d\n",num2);
printf("%d\n",num1);
}
else
{
printf("%d\n",num3);
printf("%d",num2);
printf("%d\n",num1);
}
}
else
{
printf("%d",num1);
printf("%d",num2);
printf("%d",num3);
}
system("PAUSE");
return 0;
}
Referencias
http://desarrollomovilmultiplataforma.blogspot.mx/2012/08/aspectos-teoricos-libreria-biblioteca.html