miércoles, 18 de mayo de 2016

Estructura, sintaxis y uso de un ciclo Do-While en C++

Los ciclos do-while son una estructura de control cíclica, los cuales permiten ejecutar una o varias líneas de código de forma repetitiva sin necesidad de tener un valor inicial e incluso no tener un valor, hasta aquí son similares a los ciclos while, sin embargo el ciclo do-while nos permite añadir una ventaja adicional, esta consiste en dar la posibilidad de ejecutar primero el bloque de instrucciones antes de evaluar la condición, por esta situación los ciclos do-while, son más efectivos para algunas situaciones.


¿Cómo funciona un Ciclo Do-While?


Para comprender mejor el funcionamiento del ciclo do-while, imaginemos que queremos pedirle a un usuario una serie de números cualquiera y que solo dejaremos de hacerlo cuando el usuario ingrese un número mayor a 100. Esto se puede hacer por medio de un ciclo do-while, estamos en la situación de no tener idea de cuándo al usuario se le va a ocurrir ingresar un número mayor que 100, pues es algo indeterminado para nosotros, sin embargo el do-while nos permite ejecutar cierta acción de forma infinita hasta que se cumpla alguna condición específica, en nuestro caso sería que el numero ingresado sea mayor a 100. De modo que si el usuario nos ingresa de manera sucesiva los siguientes numero 1,50,99, 49, 21, 30, 100 ..., nuestro programa no finalizara, pues ninguno de estos números es mayor que 100, sin embargo si nos ingresara el numero 300, el programa finalizaría inmediatamente.

Sintaxis del Ciclo Do-While:


La sintaxis de un ciclo do-while, de hecho con tan solo tener definida la condición de finalización tendremos prácticamente todo terminado.




Línea 1:

En esta línea la expresión no evalúa ninguna condición, simplemente da paso directo al bloque de instrucción y luego permite la evaluación de la condición.

Línea 2:

Llave abriendo "{" lo cual como sabemos indica que allí comienza un bloque de instrucciones que se ejecutaran cada vez que el ciclo de un "giro". Esta llave no es del todo obligatoria, sin embargo si no la ponemos solo se ejecutará dentro de nuestro ciclo la primera línea inmediatamente posterior a la instrucción do, de modo que si deseamos que se ejecuten varias líneas dentro de nuestro ciclo, debemos usar las llaves. En lo personal, es preferible poner siempre las llaves sin importar cuantas líneas se vayan a ejecutar, es una buena práctica de programación.

Línea 3 a 7:

Aquí estarán todas las operaciones que llevaremos a cabo de manera iterativa durante la ejecución del ciclo, este bloque podrá tener la cantidad de líneas necesarias.

Línea 8:

En esta línea se encuentra la llave cerrando "}", la cual indica el final del bloque de instrucciones ya debemos saber esta nos indica que allí termina el bloque de instrucciones que se ejecutarán de manera cíclica y se dará por terminada la ejecución de este para continuar ejecutando el resto del algoritmo.

Línea 9:

Se encuentra do-while, tiene la misma importancia y función que la linea 1, cabe resaltar que simplemente evalúa la condición y define si se cumple o no para seguir con la ejecución del ciclo o con la del resto del algoritmo, de este modo podemos ver que el ciclo while y el do-while son muy similares, con la pequeña diferencia en que en uno se evalúa la condición desde el principio y en la otra al final de cada ciclo.


Ejemplos de Ciclo Do-While en C++

Ejemplo 1: Pedir números por pantalla hasta que alguno sea mayor a 100
Vamos a retomar el ejemplo anterior, donde queremos hacer que nuestro programa le pida a un usuario una serie de números cualquiera y que solo dejaremos de hacerlo cuando el usuario ingrese un número mayor a 100, una vez mas es un ejemplo sencillo con el que nos aseguraremos de haber comprendido bien todos los conceptos anteriores, vamos a ver cómo hacer lo mismo con dos tipos de ciclos diferentes (el while y el do-while), sin embargo vamos a ver como con uno es más eficiente que con el otro:

Solución Ejemplo 1:

Para solucionar esto, debemos tener clara cuál va a ser la condición que se debe cumplir para que el ciclo este pidiendo el numero contantemente, el ciclo se va a detener solo cuando el numero ingresado sea mayor que 100, así que la condición para que se siga ejecutando es que el numero sea menor a 100, ¿Comprender la lógica?, es simple si para que se detenga el numero debe ser mayor a 100, entonces para seguirse ejecutando el numero debe ser menor o igual a 100, veámoslo entonces.



Estructura, sintaxis y uso de un ciclo While en C++

Los ciclos while son también una estructura cíclica, que nos permite ejecutar una o varias líneas de código de manera repetitiva sin necesidad de tener un valor inicial e incluso en ocasiones sin siquiera conocer cuándo se va a dar el valor final que esperamos, los ciclos while, no dependen directamente de valores numéricos, sino de valores booleanos, es decir que su ejecución depende del valor de verdad de una condición dada, esto es que sea verdadero o falso únicamente. De este modo los ciclos while, son mucho más efectivos para condiciones indeterminadas, ósea que no conocemos cuando se van a dar a diferencia de los ciclos for, con los cuales se debe tener claro un principio, un final y un tamaño de paso.

¿Cómo funciona un Ciclo While?


Ejemplo imaginemos que por algún motivo deseamos pedir al usuario una serie de números cualquiera y que solo dejaremos de hacerlo cuando el usuario ingrese un número mayor a 100. Por lo tanto no podríamos utilizar un ciclo for, pues no tenemos idea de cuándo al usuario se le va a ingresar un número mayor que 100, por lo que es algo indeterminado para nosotros, sin embargo el ciclo while nos permite ejecutar una acción de forma infinita hasta que se cumpla la condición específica, en este ejemplo el caso sería que el número ingresado sea mayor a 100. Por ejemplo el usuario ingresara los números 1, 50, 99, 49, 21, 30, 100, nuestro programa no finalizara, puesto ninguno de estos números es mayor que 100, sin embargo si ingresara el número 300, el programa finalizaría de manera inmediata.

Sintaxis del Ciclo While en C++:


Esta sintaxis es más simple y "legible" que la del ciclo for en C++, pues simplemente requerimos tener una condición clara para que el programa se detenga. En realidad, en la mayoría de los lenguajes de alto nivel la forma en que se escribe un ciclo while es muy similar, así que con tan solo tener clara la condición de finalización para el ciclo se tendrá prácticamente todo hecho.



Veamos línea por línea del código para comprender todo y que quede más claro.

Línea 1:

En esta línea está la parte esencial del ciclo while. La sintaxis es muy simple. Tenemos al interior de los paréntesis una condición cualquiera, es decir por ejemplo "==. >, <, >=, <=, !=" o algunas otras condiciones que se nos puedan ocurrir, esta condición que especifiquemos, es la que permitirá que el ciclo se siga ejecutando hasta que en algún momento en que la condición deje de cumplirse, de esta forma si estamos verificando que un número cualquiera = 100, el ciclo se ejecutara, en cuanto su valor cambie a cualquier otro el ciclo while finalizara y continuara con el resto de la ejecución del programa. De esta forma, es evidente que la condición que allí ingresemos siempre deberá tomar un valor booleano (true o false).

Línea 2:

En la línea 2 tenemos una llave abriendo "{" lo cual como sabemos indica que allí inicia el bloque de instrucciones que se ejecutaran cada vez que repita el ciclo. Esta llave no es del todo obligatoria, sin embargo en caso de no ponerla solo se ejecutara la primera línea inmediata posterior a la declaración del ciclo, de modo que si deseamos que se ejecuten varias líneas de nuestro ciclo, se debe usar las llaves.

Línea 3 a 7:

En estas líneas deben estar todas las operaciones que deseamos llevar a cabo de manera repetitiva, en este bloque se podrá tener la cantidad de líneas necesarias e incluso podría haber uno o más ciclos, de manera que podría tener todo un programa dentro de un ciclo.

Línea 8:

En esta línea hacemos uso de la llave cerrando "}", esta indica que allí termina el bloque del ciclo y se dará por terminada la ejecución de este para continuar ejecutando el resto del algoritmo.


Ejemplos de Ciclo While en C++



Pedir números por pantalla hasta que alguno sea mayor a 100 vamos a retomar el ejemplo anterior, donde queremos hacer que nuestro programa le pida a un usuario una serie de números cualquiera y que solo dejaremos de hacerlo cuando el usuario ingrese un número mayor a 100, una vez mas es un ejemplo sencillo con el que nos aseguraremos de haber comprendido bien todos los conceptos anteriores.

Solución



Para solucionar esto, debemos tener clara cuál va a ser la condición que se debe cumplir para que el ciclo este pidiendo el numero contantemente, el ciclo se va a detener solo cuando el numero ingresado sea mayor que 100, así que la condición para que se siga ejecutando es que el número sea menor a 100, ¿Comprender la lógica?, es simple si para que se detenga el numero debe ser mayor a 100, entonces para seguirse ejecutando el numero debe ser menor o igual a 100, veámoslo entonces



lunes, 9 de mayo de 2016

Estructura, sintaxis y uso de un ciclo for en C++

Los ciclos for son lo que se conoce como estructuras de control de flujo cíclicas o simplemente estructuras cíclicas, estos ciclos, nos permiten ejecutar una o varias líneas de código de forma iterativa, conociendo un valor especifico inicial y otro valor final, además nos permiten determinar el tamaño del paso entre cada iteración del ciclo.

Es decir un ciclo for es una estructura de control iterativa, que nos permite ejecutar de manera repetitiva un bloque de instrucciones, conociendo previamente un valor de inicio, un tamaño de paso y un valor final para el ciclo.


¿Cómo funciona un Ciclo For?


Para comprender mejor el funcionamiento del ciclo for, pongamos un ejemplo, supongamos que queremos mostrar los números pares entre el 50 y el 100, si imaginamos un poco como seria esto, podremos darnos cuenta que nuestro ciclo deberá mostrar una serie de números como la siguiente: 50 52 54 56 58 60 ... 96 98 100. Como podemos verificar, tenemos entonces los componentes necesarios para nuestro ciclo for, tenemos un valor inicial que sería el 50, tenemos también un valor final que sería el 100 y tenemos un tamaño de paso que es 2 (los números pares).

Sintaxis del Ciclo For en C++:

La sintaxis de un ciclo for es simple en C++, de hecho, con tan solo tener bien claros los 3 componentes del ciclo for (inicio, final y tamaño de paso) tenemos prácticamente todo hecho.


Vamos ahora a ver línea por línea el anterior código para comprender todo y quedar claros. Posteriormente veremos un ejemplo con valores reales.

Línea 1:

En esta línea está prácticamente todo lo esencial de un ciclo for. La sintaxis es simple, tenemos una variable de control llamada i que es tipo entero (int), es importante mencionar que la variable se puede llamar como nosotros deseemos y puede ser del tipo de queramos también. Esta variable "i" se le asigna un valor inicial que puede ser cualquier número correspondiente al tipo de dato asignado. Posteriormente lo que haremos será especificar hasta donde irá nuestro ciclo por medio del valor final, ten en cuenta que cada uno de estos componentes es separado por un punto y coma ";", también es importante saber que la condición final puede ser cualquier número mayor o menor que la condición inicial. Finalmente el último componente de la primera línea es el tamaño del incremento o decremento, este componente se especifica aumentando o disminuyendo en la cantidad deseada la variable.

Línea 2:

Tenemos una llave abriendo "{" indica que allí comienza un bloque de instrucciones que se ejecutaran cada vez que el ciclo de un "paso". Esta llave no es obligatoria, sin embargo si no la ponemos solo se ejecutara dentro de nuestro ciclo la primera línea inmediatamente posterior a la declaración del ciclo, de modo que si deseamos que se ejecuten varias líneas dentro de nuestro ciclo, debemos usar las llaves.

Línea 3 a 7:

En estas líneas estarán todas las operaciones que queramos llevar a cabo de manera iterativa durante la ejecución del ciclo, este bloque podrá tener la cantidad de líneas necesarias.

Línea 8:

En esta última línea hacemos uso de la llave cerrando "}", esta nos indica que allí termina el bloque del ciclo for y se dará por terminada la ejecución de este para continuar ejecutando el resto del algoritmo.

Ejemplo 1: Mostrar en pantalla los números pares

Es un ejemplo sencillo con el que nos aseguraremos de haber comprendido bien lo anterior:

Solución Ejemplo 1:

Tenemos entonces que el valor inicial para nuestro ciclo es el número 50 y el valor final es el 100, además, dado que necesitamos los números pares vamos a ir de dos en dos, así que el tamaño del paso va a ser 2, teniendo estos 3 componentes identificados:




El código funcional completo sería el siguiente:




Ejemplo 2: Cuenta regresiva en un ciclo for


En el ciclo for también puede iterar disminuyendo el valor del contador, lo que haremos será imprimir por pantalla una cuenta regresiva desde el número diez hasta el cero.


Solución Ejemplo 2:


Para este caso, debido a que queremos ir de un número mayor a uno más pequeño, en este ejemplo el valor inicial será 10 y el valor final será cero. Adicional, el tamaño de paso será de 1 negativo, es decir, -1, así:



El código funcional completo sería el siguiente:



Este código del ejemplo dos imprimirá por pantalla la serie numérica 10, 9, 8, 7, 6, 5, 4, 3, 2, 1


Ejemplo 3: Contador con un ciclo for


El ejemplo consiste en contar al interior de un ciclo for, cuántos números entre el 0 y el 10,000 son múltiplos del 13. Para ello haremos uso del operador % (modulo) que obtiene el residuo de una división y también usaremos un pequeño condicional para verificar que el modulo sea cero al dividir por 13.

Solución Ejemplo 3

Para este caso el valor inicial será 0 y el valor final será 10,000. Adicional al tamaño de paso será de 1. Al interior del ciclo, en cada iteración verificaremos si el número en el que estamos es divisible por trece o no y en caso afirmativo aumentaremos el contador en una unidad así:



El código funcional completo sería el siguiente:


Este ciclo for nos permitirá saber que existen 770 múltiplos del 13 en los números del 0 al 10000.


lunes, 25 de abril de 2016

Lenguajes de Programacion y sus Componentes


Es un lenguaje diseñado para describir el conjunto de acciones consecutivas que un equipo debe ejecutar. Por lo que un lenguaje de programación es un modo práctico para que los seres humanos puedan dar instrucciones a una computadora.

Por otro lado, el término "lenguaje natural" define un medio de comunicación compartido por un grupo de personas (por ejemplo: inglés o francés).

Los lenguajes que los equipos usan para comunicarse entre ellos no tienen nada que ver con los lenguajes de programación; se los conoce como protocolos de comunicación. Se trata de dos conceptos totalmente diferentes. Un lenguaje de programación es muy estricto:


Lenguaje Máquina
Consisten en hileras de números y son definidos por el diseño del hardware. En otras palabras, el lenguaje máquina para una Macintosh no es el mismo que el de una PC. Una computadora comprende sólo su lenguaje máquina original, los comandos de su equipo de instrucción. Estos comandos le dan instrucciones a la computadora para realizar operaciones elementales: cargar, almacenar, añadir y sustraer. Esencialmente, el código máquina consiste por completo de los 0 y 1 del sistema numérico binario.

Lenguaje Ensamblador
Fueron desarrollados usando nemotécnicos similares a las palabras del idioma inglés. Los programadores trabajan en editores de texto, que son simples procesadores de palabras, para crear archivos fuente. Los archivos fuente contienen instrucciones para que la computadora las ejecute, pero tales archivos deben primero introducirse al lenguaje máquina. Los investigadores crearon programas traductores llamados ensambladores.
Fue el primer lenguaje de programación utilizado.

Por lo tanto, un lenguaje de programación tiene varias ventajas:

  • Es mucho más fácil de comprender que un lenguaje máquina:
  • Permite mayor portabilidad, es decir que puede adaptarse fácilmente para ejecutarse en diferentes tipos de equipos.

Los lenguajes de alto nivel
Estos fueron desarrollados para hacer más fácil la programación. Estos lenguajes son llamados de alto nivel porque su sintaxis es más cercana al lenguaje humano que el código del lenguaje máquina o ensamblador. Usan palabras familiares en lugar de comunicar en el detallado embrollo de los dígitos que comprenden las instrucciones de la máquina. Para expresar las operaciones de la computadora estos lenguajes usan operadores, como los símbolos de más o menos, que son los componentes familiares de las matemáticas. Como resultado, leer, escribir y comprender programas de cómputo es más fácil con un programa de alto nivel, a pesar de que las instrucciones todavía deba ser introducidas al lenguaje máquina antes de que la computadora pueda comprenderlas y llevarlas a cabo.


Componentes de los lenguajes de programación

  • Interpretes

  • Compiladores


miércoles, 16 de marzo de 2016

Entidades Primitivas

Tipos de datos

Un dato  se define como la expresión general que describe los objetos con los cuales opera una computadora. Los datos de entrada se transforman por el programa, después de las etapas intermedias, en datos de salida.

Datos Numéricos:

Son aquéllos que representan una cantidad o valor determinado. Su representación se lleva a cabo en los formatos ya conocidos (enteros, punto y fracciones decimales si estas existen). Estos pueden representarse en dos formas
distintas :

Tipo Numérico Entero (integer):

Es un conjunto finito de los números enteros. Los enteros son números completos, no tienen componentes fraccionarios o decimales y pueden ser negativos y positivos.
Ejemplo: 108 20 50 2015

Tipo Numérico Real (real):

Consiste en un subconjunto de los números reales. Estos números siempre tienen un punto decimal y pueden ser positivos o negativos. Un número real consiste de un número entero  y una parte decimal. También son representados como punto flotante.
Ejemplo: 3.1416 314.16 x 10-2 31416.  x 10-4 78.375

Carácter o Cadenas:

Son los datos que representan información textual (palabras, frases, símbolos, etc). No representan valor alguno para efectos numéricos. Pueden distinguirse porque son delimitados por apóstrofes o comillas. Se clasifica en dos categorías:
  • Datos tipo carácter (char) :

Es un conjunto finito y ordenado de caracteres que la computadora reconoce.  Un dato de este tipo contiene  solo  un  carácter. Utiliza  tablas  de  código  como  el  ASCII para su representación. Reconoce los siguientes caracteres :

Caracteres Alfabéticos (A,B,C,…Z,a,b,c…z)
Caracteres Numéricos (0,1,2,…9)
Caracteres Especiales (+, -, *, /, ^, . , ;, <, >, $, …….)



  • Datos tipo Cadena (string):

Es un sucesión de caracteres que se encuentran delimitados por una comilla (apóstrofe) o dobles comillas, según el tipo de lenguaje de programación. La longitud de una cadena de caracteres es el número de ellos comprendidos entre los separadores o delimitadores. Ejemplos :

lunes, 14 de marzo de 2016

Metodología para la solución de problemas

DEFINICIÓN DEL PROBLEMA
Aquí se determina toda la información de inicio para la elaboración del programa. Se determina qué es lo que desea resolver, por lo tanto la computadora requiere una definición clara y precisa. Esto es importante para que la computadora reconozca lo que tiene que realizar; mientras esto no se conozca no tiene ningún sentido continuar.

ANÁLISIS DEL PROBLEMA
Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir:
  • Los datos de entrada.
  • Cuál es la información que se desea producir (salida)
  • Los métodos y fórmulas que se necesitan para procesar los datos.
Una recomendación muy práctica es el de colocarse en el lugar de la computadora y analizar qué es lo que se necesita que se ordene y en qué secuencia para producir los resultados esperados.

DISEÑO DEL ALGORITMO
Las características de un buen algoritmo son:
  • Debe tener 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.
Por lo tanto una computadora no tiene la capacidad de pensar y resolver el problema por sí misma; una vez que el problema ha quedado bien definido debemos plantearnos buscar una secuencia de pasos que lo resuelvan e indiquen a la computadora las instrucciones a ejecutar, es decir, hemos de encontrar un buen algoritmo.
Entonces podríamos decir que un  algoritmo se podría definir como un método para resolver un problema.
Por lo tanto la resolución de un problema exige el diseño de un algoritmo que resuelva el mismo. La propuesta para la resolución de un problema es la siguiente:


Por consiguiente los pasos que debemos seguir para la resolución de un problema constan de:
1.- Diseño del algoritmo, este describe la secuencia ordenada de pasos, que conducen a la solución de un problema dado. (Análisis del problema y desarrollo del algoritmo).
2.- Expresar el algoritmo como un programa en un lenguaje de programación. (Fase de codificación).
3.- Ejecución y validación del programa por computadora

Para llegar a la resolución de un problema es necesario el diseño previo de un algoritmo, de modo que sin algoritmo no puede existir un programa.
Los algoritmos son independientes tanto del lenguaje de programación en que se expresan como de la computadora que los ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de programación y ejecutarse en una computadora distinta; sin embargo, el algoritmo será siempre el mismo. Así, por ejemplo, en una analogía con la vida diaria, la receta de un platillo de cocina se puede expresar en español, inglés o francés, pero cualquiera que sea el lenguaje, los pasos para la elaboración, del mismo se realizarán sin importar el idioma del cocinero.

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.

PRUEBA Y DEPURACION
Se denomina prueba de escritorio a la comprobación que se hace de un algoritmo para saber si está bien hecho. Esta prueba consiste en tomar datos específicos como entrada y seguir la secuencia indicada en el algoritmo hasta obtener un resultado, el análisis de estos resultados indicará si el algoritmo está correcto o si por el contrario hay necesidad de corregirlo o hacerle ajustes.

martes, 8 de marzo de 2016

A. Identificación de fases del ciclo de vida de un software

Identificación de fases del ciclo de vida de un software

El término ciclo de vida del software describe el desarrollo de software, desde la fase inicial hasta la fase final. El propósito de este programa es definir las distintas fases intermedias que se requieren para validar el desarrollo de la aplicación, es decir, para garantizar que el software cumpla los requisitos para la aplicación y verificación de los procedimientos de desarrollo: se asegura de que los métodos utilizados son apropiados.

Estos programas se originan en el hecho de que es muy costoso rectificar los errores que se detectan tarde dentro de la fase de implementación. El ciclo de vida permite que los errores se detecten lo antes posible y por lo tanto, permite a los desarrolladores concentrarse en la calidad del software, en los plazos de implementación y en los costos asociados.

El ciclo de vida básico de un software consta de los siguientes procedimientos:
  1. Definición de objetivos: definir el resultado del proyecto y su papel en la estrategia global.
  2. Análisis de los requisitos y su viabilidad: recopilar, examinar y formular los requisitos del cliente y examinar cualquier restricción que se pueda aplicar.
  3. Diseño general: requisitos generales de la arquitectura de la aplicación.
  4. Diseño en detalle: definición precisa de cada subconjunto de la aplicación.
  5. Programación (programación e implementación): es la implementación de un lenguaje de programación para crear las funciones definidas durante la etapa de diseño.
  6. Prueba de unidad: prueba individual de cada subconjunto de la aplicación para garantizar que se implementaron de acuerdo con las especificaciones.
  7.  Integración: para garantizar que los diferentes módulos se integren con la aplicación. Éste es el propósito de la prueba de integración que está cuidadosamente documentada.
  8. Prueba beta (o validación), para garantizar que el software cumple con las especificaciones originales.
  9. Documentación: sirve para documentar información necesaria para los usuarios del software y para desarrollos futuros.
  10. Implementación
  11. Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo) y las actualizaciones secundarias del software (mantenimiento continuo).

El orden y la presencia de cada uno de estos procedimientos en el ciclo de vida de una aplicación dependen del tipo de modelo de ciclo de vida acordado entre el cliente y el equipo de desarrolladores.

Análisis del problema

Diseño del procedimiento de solución (Algoritmo)

Pruebas del funcionamiento

Documentación

Mantenimiento