lunes, 11 de abril de 2016


                                   
 ESTRUCTURA DE UN PROGRAMA 


*Estructura general de un programa. Un programa puede considerarse como una secuencia de acciones (instrucciones) que manipulan un conjunto de objetos (datos).

VARIABLE 
las variables son espacios reservados en la memoria que, como su nombre indica, pueden cambiar de contenido a lo largo de la ejecución de un programa. Una variable corresponde a un área reservada en la memoria principal del ordenador.
Para que nuestro código sea más entendible y claro, el identificador de la variable debe ser mnemotecnia, es decir que debe reflejar el uso dentro del programa de la misma.

TIPOS 

  • Variables primitivas: almacenan datos numéricos, valores lógicos o caracteres
  • De tipo entero:

Son variables que almacenan números enteros. Se pueden dividir en los siguientes tipos:

 



Son variables que almacenan datos numéricos con decimales. Se pueden dividir en los siguientes tipos
 
Son variables que almacenan dos posibles valores: true o false. No se corresponden con ningún valor numérico.
Ejemplo:
boolean tienesCalor=true;

    De tipo char o de carácter:

 Son variables que almacenan caracteres individuales (letra, numero, signo ?, etc...). El carácter que se inicializa debe ir entre apóstrofes o comillas simples 'a'.

Variables referenciadas

Casting o transformaciones de tipo

El casting es un procedimiento para transformar una variable primitiva de un tipo a otro, o transformar un objeto de una clase a otra clase siempre y cuando haya una relación de herencia entre ambas

  • Implícito: no se necesita escribir código para que se lleve a cabo. Ocurre cuando se realiza una  conversión ancha (widening casting), es decir, cuando se coloca un valor pequeño en un contenedor grande
    Explícito: sí es necesario escribir código. Ocurre cuando se realiza una conversión estrecha          (narrowing casting), es decir, cuando se coloca un valor grande en un contenedor pequeño. Son susceptibles de pérdida de datos.

Sentencias (Programación)
Son las unidades ejecutable más pequeña de un programa, en otras palabras una línea de código escrita es una sentencia. Especifican y controlan el flujo y orden de ejecución del programa. Una sentencia consta de palabras clave o reservadas como (cout, cin, for, while, if ... else,etc.), expresiones, declaraciones, o llamadas a funciones. Si no existen sentencias específicas de selección o salto, el programa se ejecuta de forma secuencial en el mismo orden en que se ha escrito el código fuente (es el que podríamos considerar orden "natural" de ejecución).


Definición

Una expresión es una secuencia de operadores; operandos; elementos de puntuación y palabras clave, que especifican una computación. Tiene sentido computacional en sí misma y equivale a una frase en el lenguaje normal. Entre sus características distintivas están las de poder producir un resultado y posibles efectos laterales. Ejemplo:
extern x;        // No produce un valor
y = 22;          // Produce un valor
z = i++;         // Valor + efectos laterales
Cualquier expresión finalizada en un punto y coma ; forma una sentencia:
< expresión >;
Las sentencias se ejecutan evaluando la expresión. Todos los efectos colaterales de la evaluación son tenidos en cuenta antes de ejecutar la próxima sentencia. La mayoría de sentencias son asignaciones o llamadas a funciones. Un caso especial es la sentencia nula; consiste en un punto y coma (;) aislado. Una sentencia nula no hace nada, pero puede ser necesaria en situaciones en que la sintaxis del lenguaje espere una sentencia pero nuestro programa no necesita hacer nada.

Clasificación

Dada la definición anterior, resulta evidente que pueden existir infinitas sentencias distintas, e innumerables criterios para su clasificación. Una de las posibles, que además coincide con la clasificación del Estándar, distingue las siguientes clases de sentencia:
  • De etiqueta
  • De expresión
  • Compuestas
  • De selección
  • De iteración
  • De salto
  • De declaración
  • Bloques de intento
Además de las anteriores, por sus características especiales podríamos considerar las siguientes clases adicionales:
  • Sentencias de preproceso
  • Sentencias ensamblador

Sentencias de etiqueta

Existen tres clases de sentencias etiquetadas: las etiquetas directas, las sentencias case y las default, estas últimas se utilizan en conjunción con las sentencias switch.

Sentencias de expresión

Podríamos decir que son las que no pertenecen a ninguno de los otros grupos y que, en la práctica, son las más abundantes. Generalmente son asignaciones o invocaciones de funciones. Ejemplo:
pint = &x;
foo(c);

Sentencias compuestas

Las sentencias compuestas, también denominadas bloques se utilizan en aquellas situaciones en que la sintaxis espera una sentencia pero se necesita usar varias. Ejemplo:
if (first) ++x;
else {
  --x; z = a;
}
En caso de cumplirse la condición hay que incrementar x, lo que puede hacerse en una sola sentencia, pero si la condición resulta falsa, se precisan dos computaciones. Para que se comporten como una sola frente a else, se recurre a englobarlas en un bloque entre llaves { ... }. Las sentencias dentro del bloque se comportan como una sola y constituyen un ámbito léxico. Los identificadores definidos en su interior eclipsan a los exteriores y las variables automáticas creadas en él son destruidas al salir del ámbito.

Sentencias de selección

Las sentencias de selección o de control de flujo, pueden decidir entre varios cursos de acción distintos en función de ciertos valores. Existen dos tipos de estas sentencias de selección: if...else y switch. Ejemplo:
switch ( foo() ) {
   case 0: case 1:
      if (first) break;
      else ++x;
   case 2:
      ...
   default:
      break;
}

Sentencias de iteración

Las sentencias de iteración permiten repetir un conjunto de sentencias ejecutando un bucle. En C++ existen tres formas de iteraciones: los bucles while, do…while y for. Ejemplo:
while (first) {
  ...
  for (int x = 1; x < y; ++x) {
     ...
     do {                  // begin second
        ...
        ...
     } while (second);     // end second
     ...
  }      // end for
  ...
}         // end first

Sentencias de salto

Las sentencias de salto permiten transferir el control del programa de forma incondicional. Existen cuatro de estas sentencias: break, continue, y return. Ejemplo:
while (foo) {
   start:
   if (some) break;
   ...
   if (first) goto start;
   ...
   if (second) continue;
   ...
   if (! any) return;
   ...
}

Sentencias de declaración

Este tipo de sentencias introducen uno o más identificadores en un bloque. Ejemplo:
void foo (int x, y z) {
  float f = 3.14;
  char c;
  int x;
  ...
}

Bloques de intento

Estas sentencias deben estar seguidas de una sentencia catch y tienen la forma:
try {
  ...
}

Sentencias de preproceso

Constituyen un tipo muy especial, tanto en su sintaxis como en su comportamiento. No representan una computación en tiempo de ejecución (runtime), sino de compilación, ya que su efecto es realizar modificaciones sobre el código fuente. Su sintaxis también es especial; no requieren el punto y coma de terminación y comienzan siempre con el símbolo #.

Sentencias ensamblador

C++ dispone de la opción de poder escribir directamente instrucciones en lenguaje ensamblador junto con el resto del código fuente. Para esto dispone de una palabra clave específica: asm. La palabra asm indica que la cadena literal que sigue será incluida en el código objeto en la posición indicada. La sintaxis empleada depende del compilador. En el caso de C++ Builder, es la siguiente: asm <opcode> <operandos> <; o NL> Ejemplo
asm pop dx;
asm push ebx;
asm call @@std@%basic_ostream$c19std@%char_traits$c%%@put$qc;
asm add esp,8;
asm push ebx;
Se permite que varias instrucciones ensamblador puedan ser agrupadas en un solo bloque precedido por el indicador asm. Ejemplo:
asm {
 mov ax, 0x0e07;
 xor bx, bx;
 int 0x10;
}
La sintaxis empleada por el compilador C++ GNU para Windows utilizado por Dev-C++ no utiliza la sintaxis de Intel, sino la de AT&T. Ejemplo:
int AdrIO;            // variable global
static char ValIO;    // variable global
void foo() {
 __asm("mov _AdrIO, %dx") ;  // cargar un registro de 16 bits
 __asm("mov _ValIO, %al") ;  // cargar un registro de 8 bits
 __asm("mov %ax,%dx") ;      // mover contenido registro AX a DX
} 

PROCESO DE EJECUCION DE UN PROGRAMA EN C

Edición.  El  código  se  escribe  en  un  editor  de  texto  o  en  un  editor  de  código preparado  para  esta acción.  El  archivo  se  suele  guardar  con  extensión  .cpp (también en cxx, c++ o cc).

Preprocesado.   Antes   de   compilar   el   código,   el   preprocesador   lee   las instrucciones de preprocesador y las convierte al código fuente equivalente.

Compilación. El código fuente resultante en lenguaje C++  se compila mediante el software apropiado, obteniendo un código máquina llamado archivo objeto (cuya  extensión  suele  ser  .obj).  Este  código  aún  no es  ejecutable  ya  que necesita  incluir  el  código  máquina  relativo  a  las  funciones  y  módulos  que  se utilizaban  en  nuestro  código.  Estas  funciones  están  incluidas  en  archivos externos (librerías).

Enlazado.  El  código  objeto  se  une  al  código  compilado  de  las  librerías  y módulos invocados por el código anterior. El resultado es un archivo ejecutable (extensión .exe en Windows)

Cargado.  Normalmente  lo  realiza  el  propio  entorno  de  ejecución.  El  archivo ejecutable se lanza en el Sistemas Operativo.

Ejecución de las instrucciones por la CPU. Es entonces cuando el procesador accede al código máquina del programa ya convertido y ejecuta las acciones. Será entonces cuando veamos los resultados.

DISEÑO

Definimos el diseño, como un proceso o labor a , proyectar, coordinar, seleccionar y organizar un conjunto de elementos para producir y crear objetos visuales destinados a comunicar mensajes específicos a grupos determinados. 





domingo, 14 de febrero de 2016

MAPA CONCEPTUAL



MAPA MENTAL 




EL ALGORITMO,PSEUDOCODIGO Y DIAGRAMA DE FLUJO


Algoritmos

Los algoritmos son el fundamento de la programación de computadoras, para que la computadora pueda ejecutar una tarea es necesario que primero se diseñe el algoritmo correspondiente, es decir, especificar las operaciones necesarias para transformar los datos de entrada en datos de salida. Una vez diseñado y probado el algoritmo, se trasforma en el programa correspondiente. El programa esta compuesto por el algoritmo, la especificación de los datos y las instrucciones que permiten la comunicación entre los usuarios del programa y la máquina.
Definición de algoritmo: Un algoritmo es un conjunto finito de instrucciones cuyo fin es realizar una tarea; este conjunto finito de instrucciones debe también ser preciso y determinístico.
  • Preciso: el algoritmo debe ejecutar la tarea para el cual fue diseñado.
  • Determinístico: significa que el resultado debe depender estrictamente de los datos suministrados, siempre que el algoritmo se ejecute con un mismo conjunto de datos de entrada, el resultado debe ser siempre el mismo.
Son ejemplos de algoritmos los métodos utilizados en aritmética para sumar, restar, multiplicar y dividir cantidades; la aplicación de la fórmula cuadrática para encontrar las raíces de un polinomio de segundo grado En todos ellos se cumplen las tres características anteriores.
Un algoritmo eficiente y confiable es el producto de un análisis exhaustivo del problema, para determinar la mejor alternativa de solución.

Elementos básicos en el diseño de algoritmos

  • HERRAMIENTAS PARA EL DISEÑO DE ALGORITMOS
Las dos herramientas más utilizadas para diseñar algoritmos son el Pseudocódigo y el Diagrama de flujo.
  • 1. Pseudocódigo
Es un lenguaje simplificado para describir un algoritmo utilizando una mezcla de frases en lenguaje común, y palabras claves que indican el inicio y el fin del algoritmo y las instrucciones específicas a realizar.
Por ejemplo, el siguiente pseudocódigo corresponde al algoritmo para calcular el área del rectángulo: el algoritmo calcula el área (a) de un rectángulo cualquiera, si se le suministra la longitud de de la base (b) y la longitud de la altura (h).
Monografias.com
Las palabras subrayadas se llaman palabras reservadas, se deben utilizar sangrías que facilitan la lectura del algoritmo Las instrucciones en pseudocódigo son fáciles de codificar en un lenguaje de programación.
El diagrama de flujo es la representación gráfica de un algoritmo; para ello se utiliza un conjunto de símbolos estándares mundialmente utilizados y desarrollados por organizaciones tales como ANSI (American National Institute) e ISO (International Standard Organization para la elaboración de diagramas de flujo;
En el diagrama cada símbolo representa una acción en concreto; y cada instrucción del algoritmo se visualiza dentro del símbolo adecuado. Los símbolos se conectan con flechas para indicar el orden en que se ejecutan las instrucciones.
Por ejemplo, el siguiente diagrama de flujo corresponde al algoritmo para calcular el área del rectángulo
Monografias.com
El ovalo rotulado con la palabra Inicio indica el comienzo del algoritmo, el paralelogramo es el símbolo de entrada de datos e indica que se lee el valor de la base (b) y el valor de la altura (h), el rectángulo es el símbolo de proceso e indica que se realiza un proceso sobre los datos de entrada para calcular el área (a) multiplicando la base por la altura, (utilizaremos el * como operador de multiplicación), el siguiente es el símbolo de salida y representa un documento e indica que se muestra el valor del área obtenido, en cualquier dispositivo de salida, finalmente el ovalo rotulado con la palabra Fin indica que se ha llegado al fin del algoritmo.
Los símbolos que se utilizaran para dibujar los diagramas de flujo son los siguientes:

El pseudocódigo (o falso lenguaje) es comúnmente utilizado por los programadores para omitir secciones de código o para dar una explicación del paradigma que tomó el mismo programador para hacer sus códigos, esto quiere decir que el pseudocódigo no es programable sino facilita la programación.

El principal objetivo del pseudocódigo es el de representar la solución a un algoritmo de la forma más detallada posible, y a su vez lo más parecida posible al lenguaje que posteriormente se utilizará para la codificación del mismo

El pseudocódigo utiliza para representar las acciones sucesivas palabras reservadas en inglés (similares a sus homónimos en los lenguajes de programación), tales como star,begin, end, stop, if-then-else, while, repeat-until….etc
Es un lenguaje de especificación de algoritmos. El uso de tal lenguaje hace el paso de codificación final (esto es, la traducción a un lenguaje de programación) relativamente fácil.

El pseudocódigo nació como un lenguaje similar al inglés y era un medio representar básicamente las estructuras de control de programación estructurada. Se considera un primer borrador, dado que el pseudocódigo tiene que traducirse posteriormente a un lenguaje de programación. Cabe señalar que el pseudocódigo no puede ser ejecutado por una computadora.


Un diagrama de flujo es una representación gráfica de un proceso. Cada paso del proceso es representado por un símbolo diferente que contiene una breve descripción de la etapa de proceso. Los símbolos gráficos del flujo del proceso están unidos entre sí con flechas que indican la dirección de flujo del proceso.
 El diagrama de flujo ofrece una descripción visual de las actividades implicadas en un proceso mostrando la relación secuencial ente ellas, facilitando la rápida comprensión de cada actividad y su relación con las demás, el flujo de la información y los materiales, las ramas en el proceso, la existencia de bucles repetitivos, el número de pasos del proceso, las operaciones de interdepartamentales… Facilita también la selección de indicadores de proceso
variable 
En programación, una variable es un espacio de memoria reservado para almacenar un valor que corresponde a un tipo de dato soportado por el lenguaje de programación. Una variable es representada y usada a través de una etiqueta (un nombre) que le asigna un programador o que ya viene predefinida. Por ejemplo, en la variable de nombre "num", se almacena el número 8 (de tipo entero). De forma genérica, para utilizarla y sumarle un uno se debería programar: num = num + 1. Una variable puede ser del tipo boleano, entero, decimal de coma flotante, caracter, cadena de texto, arreglo, matriz, tipo definido por el usuario, etc. Estos son tipos de datos. Una variable, por lo general, como su nombre lo indica, puede variar su valor durante la ejecución del programa. Dependiendo del lenguaje de programación usado, también puede cambiar el tipo de dato que almacena. 



EVOLUCION