jueves, 14 de marzo de 2019

Pasos para elaborar un Programa

Pasos para elaborar un programa



Resultado de imagen para pasos para elaborar





1- Definición de un problema

Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa. Es importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa.

2- Análisis de un problema

Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir:
1-. Los datos de entrada.
2-. Cuál es la información que se desea producir (salida).

3-  Diseño del Algoritmo

Las características de un buen algoritmo son:
-Debe de contener un punto particular de inicio.
-Debe ser definido, no debe permitir dobles interpretaciones.
-Debe ser general, es decir soportar la mayoría de las variantes que se puedan presentar en la definición del problema. 
-Debe ser finito en tamaño y tiempo de ejecución.

4- Codificación

La codificación es la operación de escribir la solución del problema (de acuerdo a la lógica del diagrama de flujo o pseudocódigo), en una serie de instrucciones detalladas, en un código reconocible por la computadora. La serie de instrucciones detalladas se le conoce como código fuente, el cual se escribe en un lenguaje de programación o lenguaje de alto nivel.

5- Prueba y Depuración

Los errores humanos dentro de la programación son muchos y aumentan consideradamente con la complejidad del problema. El proceso de identificar y eliminar errores, para dar paso a una solución sin errores se le llama depuración. La prueba consiste en la captura de datos hasta que el programa no presente errores (los mas comunes son los sintácticos y lógicos).

6 - Documentación

Es la guía o comunicación escrita en sus variadas formas, ya sea en forma de enunciados, procedimientos, dibujos o diagrama de flujo que puedan representar lo elaborado.
A menudo un programa escrito por una persona es usado por otra. Por ello la documentación sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento).
La documentación se divide en tres partes esenciales:
1-. Documentación interna
2-. Documentación externa
3-. Manual del usuario

7- Mantenimiento

Se lleva acabo después de terminar el programa, cuando se detecta que es necesario hacer algún cambio, ajuste o complementación al programa para que se siga trabajando de manera correcta, Para poder realizar este trabajo se requiere que el programa este correctamente documentado.




Identificador

¿Qué es un identificador?

Resultado de imagen para pregunta.
Un identificador es un conjunto de caracteres alfanumericos de cualuiqer longitud que sirve para identificar las entidades del programa (clases, funciones, variables, tipos compuestos).
Los identificadores pueden ser combinaciones de letras y números. Cada lenguaje tiene sus propias reglas que definen como pueden estar construidos. Cuando un identificador se asocia a una entidad concreta, enconces es el "nombre" de dicha entidad, y en adelante la represetna en el programa. Nombrar entidades hace posible referirse a las mismas, lo cual es esencial para cualquier tipo de procesamiento simbolico.


En los lenguajes informáticos, los identificadores son elementos textuales (también llamados símbolos) que nombran entidades del lenguaje. Algunas de las de entidades que un identificador puede denotar son las variables, las constantes, los tipos de dato, las etiquetas, las subrutinas (procedimientos y funciones) y los paquetes.
En muchos lenguajes algunas secuencias tienen la forma léxica de un identificador pero son conocidos como palabras clave (o palabras reservadas). Lo habitual es que si un identificador se corresponde con una palabra clave o reservada, éste ya no pueda utilizarse para referirse a otro tipo de entidades como variables o constantes (en unos pocos lenguajes, como PL/1, esta distinción no está del todo clara).

Los lenguajes informáticos normalmente ponen restricciones en qué caracteres pueden aparecer en un identificador. Por ejemplo, en las primeras versiones de C y C++, los identificadores están restringidos para que sean una secuencia de una o más letras ASCII, dígitos numéricos (que en ningún caso deben aparecer como primer carácter) y barras bajas. Las versiones posteriores de estos lenguajes, así como otros muchos más lenguajes modernos soportan casi todos los caracteres Unicode en un identificador. Una restricción común es que no está permitido el uso de espacios en blanco ni operadoresdel lenguaje.

En lenguajes de programación compilados, los identificadores generalmente son entidades en tiempo de compilación, es decir, en tiempo de ejecución el programa compilado contiene referencias a direcciones de memoria y offsets más que identificadores textuales (estas direcciones de memoria u offsets, han sido asignadas por el compilador a cada identificador)

Tipos de Datos



Para programar, es necesario identificar a qué tipo de datos pertenecen cada una de las variables o constantes, ya sean estos números, letras, palabras, frases, entre otros y cada uno corresponde a un tipo de dato, que requerirá de una manipulación específica para obtener los resultados deseados. Cada lenguaje de programación dispone de un conjunto de tipos de datos que puede manipular; sin embargo los que aquí se presentan corresponden a aquellos que todos los lenguajes de programación disponen, y que se conocen como tipos de datos estándares. La siguiente tabla presenta una descripción de éstos. 



Resultado de imagen para tipos de datos en programacion


Numericos

Enteros:
Este tipo dato corresponde a aquellas variables que exclusivamente pueden recibir VALORES SIN PARTE DECIMAL. Generalmente se utilizan en las variables que contienen cantidades de elementos que no pueden fraccionarse, como el número de personas, el número de edificios, entre otros.

Reales:Este tipo de dato, en cambio corresponde a aquellas variables cuyos VALORES TIENEN PARTE DECIMAL, aunque al mismo tiempo puede contener valores enteros. Así el lado de un triángulo puede ser 3,5 (0,5 es la parte decimal), pero también podría haber tomado un valor de 3,0 (0,0 es la parte decimal)

Texto

Caracteres:En este tipo de dato se encuentran todos los caracteres conocidos, una letra, un número, un símbolo especial. Por lo tanto, está conformado por los DÍGITOS:'0', '1', '2', ... , '9'; LETRAS: 'a', 'b', 'c', ... , 'z'; MAYÚSCULAS: 'A', 'B', 'C', ... , 'Z'; y  CARACTERES ESPECIALES: '%', '*', '?', ... , '/'.  En algunos lenguajes de programación como Java y C#, se utiliza la comilla simple (' ') para identificar un caracter, sin embargo esto puede cambiar dependiendo del lenguaje de programación.

Cadenas:Constituyen conjuntos de caracteres, es decir la UNIÓN DE VARIOS CARACTERES, que pueden ser palabras o frases. El valor de este tipo de datos se encierra generalmente entre comillas (" ")

Logicos

Boolean:
Los booleanos o tipos de datos lógicos, únicamente reciben dos valores: true o false. Se utilizan generalmente como banderas, para identificar si se realizo o no un proceso

Constante



Constante


Imagen relacionada

En programación, una constante es un valor que no puede ser alterado durante la ejecución de un programa. Corresponde a una longitud fija de un área reservada en la memoria principal del ordenador, donde el programa almacena valores fijos. El nombre de las constantes suele escribirse en mayúsculas en la mayoría de lenguajes.





En C o C++ las constantes se declaran con la directiva #define, esto significa que esa constante tendrá el mismo valor a lo largo de todo el programa. El identificador de una constante así definida será una cadena de caracteres que deberá cumplir los mismos requisitos que el de una variable (sin espacios en blanco, no empezar por un dígito numérico, etc). Ejemplo:
#include <stdio.h> 
  #define PI 3.1415926 
  int main()
  {
  printf("Pi vale %f", PI);
  return 0;
  }
Lo cual mostrará por pantalla:
  Pi vale 3.1415926
Es decir, PI es una constante a la que le hemos asignado el valor 3.1415926 mediante la directiva #define. La directiva #define también se puede utilizar para definir expresiones más elaboradas con operadores (suma, resta, multiplicación etc) y otras constantes que hayan sido definidas previamente, por ejemplo:
  #define X 2.4 
  #define Y 9.2
  #define Z X + Y </div> 

Variable



Variable


Cuando escribimos código, las variables se utilizan para:

  • Guardar datos y estados.
  • Asignar valores de una variable a otra.
  • Representar valores dentro de una expresión matemática.
  • Mostrar valores por pantalla.

Todas las variables deben ser de un tipo de datos, ya sea un dato de tipo primitivo, como un número o texto, o un dato abstracto, como un objeto que se ha creado.Así que básicamente podemos decir que una variable es: 
Tipo de dato → identificador variable → valor almacenado.

Como declarar una variable

La mayoría de lenguajes de programación obliga a declarar la variable (decir como se va a llamar) con el tipo de datos asociado. Por ejemplo, en C#
int total;
En este caso, la variable se llama total, y sabemos que su tipo de datos es un número, al poner int.
Eso significa otra cosa muy importante: la variable no puede almacenar otro tipo de datos. Por ejemplo, para almacenar un número podríamos poner
total = 10;
A esto se le llama asignación de valores a una variable.
También se podría poner todo en una sola línea
int total = 10;
Aquí tenemos el tipo de datos, la declaración y un valor inicial, todo condensado. En muchos otros lenguajes de programación no es necesario declarar el tipo de datos. Por ejemplo, en Python se puede poner directamente
total_Python = 10
y el lenguaje ya sabe que esa variable es un número.

Ejemplos de Variables en Programación

Al crear una variable tenemos en mente que es para guardar datos, pero cuando estamos programando podemos necesitar otra serie de variables que también son importantes.
Para entender un poco los ejemplos de variables que te puedes encontrar, vamos a ver algunos tipos de variables que podemos utilizar.

Variable auxiliar

También se llaman variables temporales. Son las que necesitamos para hacer algo de manera temporal.
Seguramente esa variable no la necesites una vez ha cumplido su objetivo. Veamos un ejemplo.

Quieres intercambiar los valores de
 a a b. Para hacerlo, necesitas una variable auxiliar, que se puede llamar c. El código sería algo así:
c = a;
a = b;
b = c;
Una vez hecho esto, ya no es necesaria la variable c.

Variable acumuladora

Las variables acumuladoras sirven para almacenar un número y sus valores consecutivos. Por ejemplo, si empieza por 0, luego tendrá el valor de 1234
Es tan habitual que una variable incremente o decremente en
 1, que muchos lenguajes tienen una operación que sólo hace eso. Esta operación es ++ o --.

Suelen utilizarse en bucles, como
 for o while.

Variable de estado

Las variables de estado se utilizan para saber como se encuentra un objeto en cada momento.
La más simple podría ser una
 variable booleana, dónde su valor sería true o false.
Pero también podrías definir varios estados. Por ejemplo, si tienes un objeto luchador en un juego, puede estar
 peleando, cayendo, siendo derrotado
El mismo objeto actuaría de manera diferente dependiendo del estado en el que se encuentra.


Operadores Aritmeticos

Operadores Aritméticos

Se llaman operadores aritméticos a aquellos que permiten realizar cálculos con valores numéricos para obtener un resultado. Los operadores aritméticos más habituales son la suma, resta, multiplicación y división. En C y en otros lenguajes disponemos de un operador adicional al que denominamos operador módulo (%), que nos permite obtener el resto de una división entre enteros.
Los operadores básicos en C, son:

Resultado de imagen para operadores aritmeticos


La mayoría de estos operadores nos resultan conocidos, pues ya los hemos estudiado con el pseudocódigo. Las reglas de prioridad son las mismas que explicamos al hablar de pseudocódigo. Los paréntesis definen la prioridad principal. El siguiente orden de prioridad corresponde a las operaciones de multiplicación y división. Las operaciones de suma y resta tienen menor precedencia. Y en último lugar tendríamos la operación para obtener el módulo de una división entera.
C no reconoce el operador ^ para el cálculo de potencias de un número, ni el operador div o barra invertida para la obtención del cociente o división entera de una división. Existen otras alternativas que permiten realizar estas operaciones como veremos más adelante.
Existen otros operadores admitidos que constituyen formas de expresar abreviadamente una operación. Por ejemplo += se puede usar para indicar que la variable a la izquierda toma el valor resultante de sumarse a sí misma con la variable o expresión a la derecha. Si A=4 y se ejecuta A +=3; entonces A pasa a tomar el valor 7, equivalente a realizar la operación A = A + 3;
Algunos programadores utilizan con frecuencia expresiones abreviadas porque les resultan más rápidas a la hora de escribir código. 



Operador condicional

Es un operador ternario, es decir, tiene tres operandos.
Su funcionamiento es el siguiente: para una ejecución ? e1 : e2 siendo ce1 y e2 tres expresiones,
  • Se evalúa c
    • Si el resultado es cierto (es decir, distinto de cero)
      • se evalúa e1 y éste sera el resultado.
    • Si no (el resultado es falso o cero)
      • se evalúa e2 y éste sera el resultado.
Ejemplos. Para x = 4y = 2z = 7:
  • La expresión x >= 5? 1:0 se evalúa a 1
  • La expresión x >= 5? y:z se evalúa a 7
  • La expresión x <= 5? y:z se evalúa a 2
  • La expresión x ? z+y:z-y se evalúa a 9
  • La expresión x >= 0 ? sqrt(x):0 se evalúa a 2.0 (sqrt: raíz cuadrada, prototipo en math.h)
DdFCDescripción
: ?: ?Operador condicional ? e1 : e2




Operadores de asignación

La operación más importante en cualquier lenguaje de programación es la asignación: 
DdFCDescripción
=Asignación
En C hay muchos operadores de asignación que serán en realidad simplificaciones de expresiones más complejas, como las auto-operaciones (+=-=*=/=&=, ...) y los pre/post incrementos/decrementos (++--).
En general estas expresiones no podrán ser utilizadas en los diagramas de flujo.


Operadores lógicos

Los operandos son considerados falsos (valor 0) ó ciertos (valor distinto de 0). El resultado siempre es 0 ó 1.
DdFCDescripción
^&&And, y, conjunción
||Or, o, disyunción
¬!Not, no, negación



Operadores relacionales

DdFCDescripción
>>Mayor
>=Mayor o igual
<<Menor
<=Menor o igual
===Igual
!=Diferente


Operador de Incremento


El operador de incremento (++) puede ser posicionado antes (prefijo) o después de (postfijo) de la variable que será incrementada en 1. Cuando el operador se posiciona antes de la variable (e.g. ++a), el valor de ésta se incrementa en 1, y luego es usado en la expresión en la que aparece. Por otro lado, cuando el operador se posiciona después de la variable (e.g. a++), el valor de la variable es usado y después de la evaluación de la expresión el valor de la variable se incrementa en una unidad.




Operador de Decremento


El operador de decremento en C# es -- permite reducir en una unidad el valor de una variable. Si el operador de decremento se posiciona antes de la variable, ésta se decrementada y su valor es reducido en 1, y el nuevo valor es utilizado en la expresión donde el identificador de la variable aparece. Por el contrario, si el operador de decremento se posiciona después de la variable, el valor de ésta es utilizado en la expresión en que aparece, y realizada la evaluación el valor de la variable es reducido en 1.

Estructuras de Control Selectiva

Estructuras de Control Selectiva

Estructuras Básicas de Control.

Estas estructuras básicamente nos ayudan a resolver algoritmicamente problemas mas complejos. Con ellas es posible tomar decisiones y repetir grupos de acciones.
Para la redacción de un pseudocodigo se pueden utilizar tres tipos de estructuras de control:
-Selectivas
-Secuenciales
-Repetitivas

Estructuras Selectivas


Se utilizan para tomar decisiones lógicas, se evalúa una condición y en función al resultado se realizar una determinada secuencia de instrucciones. 
Estas estructuras se clasifican en :
-Simples
-Dobles
-Múltiples


- Estructuras Selectivas simples
Se identifican porque están compuestos únicamente de una condición, La estructura "SI" entonces evalúa la condición y en tal caso: Si la condición es verdadera, entonces ejecuta la acción Si( o acciones en caso de ser varias de ellas). Si la condición es falsa no se hará nada.
Su sintaxis es la siguiente en pseudocodigo:





if <condicion>
hen
<Accion SI>
End_if






- Estructura Selectiva doble
Son estructuras logicas que permiten controlar la ejecucion de varias acciones y se utilizan cuando se tienen dos opciones de accion, por la naturaleza de estas se debe ejecutar una o la otra, pero no ambas a la vez, es decir, son mutuamente excluyentes.
Su sintaxis es la siguiente en pseudocodigo:






if<condicion>then
<Accion S1>
else
<Accion S2>
End_if








- Estructura Selectiva múltiple:
Aplicando la estructura de decisión múltiples se evaluara una expresión que podrá tomar "n" valores distintos, 1, 2, 3, ........., n y según que elija uno de estos valores en la condición, se realizara una de las n acciones o lo que es igual, el flujo del algoritmo seguirá solo un determinado camino entre los n posibles. Esta estructura se representa por un selector el cual si toma el valor 1 ejecutara la acción 1, si tomara el valor 2 ejecutara la acción 2, si toma el valor "n" realizara la acción "n".
Su sintaxis es la siguiente:

switch (selector)
{
case 1: Accion 1
break;
case 2: Accion 2
break;
case n: Accion n
break;
default: Excepción;
break;
}