Mostrando entradas con la etiqueta C++. Mostrar todas las entradas
Mostrando entradas con la etiqueta C++. Mostrar todas las entradas

Operadores de asignación

C dispone de varios operadores de asignación para la abreviatura de las expresiones de asignación. Por ejemplo, el enunciado

c = c + 3;

puede ser abreviado utilizando el operador de asignación += como 

c += 3;

El operador += añade el valor de la expresión, a la derecha del operador, al valor de la variable a la izquierda del operador, y almacena el resultado en la variable a la izquierda del operador. Cualquier enunciado de la forma

variable = variable operador expresión;

donde operador es uno de los operadores binarios +, -, *, / o %, pueden ser escritos de la forma

variable operador = expresión;

Por lo tanto la asignación c += 3 añade 3 a c. En la tabla siguiente aparecen los operadores de asignación aritméticos, con expresiones de muestra utilizando estos operadores y con explicaciones.

Cómo formular algoritmos con refinamiento descendente paso a paso: Estudio de caso 3 (estructuras de control anidadas)

Trabajemos otro problema completo. Volveremos a formular el algoritmo utilizando seudocódigo y refinamiento descendente paso a paso, y escribiremos el programa en C para calculadoras CASIO fx-9860G Series. Hemos visto que las estructuras de control pueden ser apiladas una encima de otra (en secuencia), de la misma forma que un niño apila bloques. En este estudio de caso veremos la única otra forma estructurada que en C pueden conectarse estructuras de control, es decir mediante el anidar una estructura de control dentro de otra.

Considere el siguiente enunciado de problema:

Una universidad ofrece un curso que prepara alumnos para el examen estatal de licenciatura para corredores de bienes raíces. El año pasado, varios de los alumnos que terminaron este curso hicieron el examen de licenciatura. Naturalmente, la universidad desea saber qué tan bien salieron sus alumnos en el examen. Se le ha pedido a usted que escriba un programa para resumir los resultados. Se le ha dado una lista de estos cinco alumnos. A continuación de cada nombre se ha escrito un 1 si el alumno pasó el examen y un 2 si no lo pasó.

Su programa deberá analizar los resultados del examen, como sigue:

Cómo formular algoritmos con refinamiento descendente paso a paso: Estudio del caso 2 (repetición controlada por centinela)

Generalicemos el problema de promedios de clase: considere el problema siguiente:

Desarrolle un programa de promedios de clase que pueda procesar un número arbitrario de notas, cada vez que se ejecute el programa.

En el primer ejemplo de promedio de clase (Estudio de caso 1), se sabía por anticipado el número de notas (5). En este ejemplo, no se da ninguna indicación de cuantas notas se tomarán. El programa debe ser capaz de procesar un número arbitrario de notas. ¿Cómo podrá el programa determinar cuándo parar la captura de notas? ¿Cuándo sabrá que debe calcular e imprimir el promedio de clase?

Una forma de resolver este problema es utilizar un valor especial llamado un valor centinela (también conocido como valor señal, un valor substituto, o un valor bandera) que indicará "fin de la captura de datos". El usuario escribirá notas hasta que haya capturado todas las notas. Entonces escribirá un valor centinela, a fin de indicar que ha sido introducida la última nota. La repetición controlada por centinela a menudo se llama repetición indefinida, porque antes de que se empiece a ejecutar el ciclo el número de repetición no es conocido.

Claramente, el valor centinela deberá ser seleccionado de tal forma que no se confunda con algún valor de entrada aceptable. Dado que normalmente las notas de un examen son enteros no negativos, para este problema, -1 resulta un valor centinela aceptable. Entonces, una ejecución del programa de promedios de clase pudiera procesar un flujo de entradas como 95, 96, 75, 74, y -1. El programa a continuación calcularía e imprimiría el promedio de clase para las notas 95, 96, 75, y 74 (-1 es el valor centinela y, por lo tanto, no debe entrar en el cálculo de promedio).

La estructura de selección if / else

Recordemos que la estructura de selección if ejecuta una acción indicada sólo cuando la condición es verdadera; de lo contrario la acción es pasada por alto, en cambio la estructura de selección if / else permite que el programador especifique que se ejecuten acciones distintas cuando la condición sea verdadera y cuando la condición sea falsa. Por ejemplo, el enunciado en seudocódigo

If la nota del estudiante es mayor que o igual a 60 
    Print "Aprobo"
else
    Print "Fracaso"

imprime Aprobo, si la calificación del alumno es mayor que o igual a 60 e imprime Fracaso si la calificación del alumno es menor de 60. En cualquiera de los casos, después de haber terminado la impresión, se ejecutará el siguiente enunciado del seudocódigo. Advierta que el cuerpo de else también queda con sangría.

Consejo

Haga sangrías en ambos cuerpos de los enunciados de una estructura if / else.

La estructura de selección if

Una estructura de selección se utiliza para elegir entre cursos alternativos de acción. 

Por ejemplo, suponga que en un examen la nota de 60 es la nota de aprobado. El enunciado en seudocódigo

if la nota del estudiante es mayor que o igual a 60
Print "Aprobó"

determina si la condición "la nota del estudiante es mayor que o igual a 60” es verdadera o falsa. Si la condición es verdadera, entonces se imprime "Aprobó” y el siguiente enunciado en seudocódigo se "ejecuta" (recuerde que el seudocódigo no es un lenguaje de programación verdadero). Si la condición resulta falsa, se ignora la impresión, y se ejecuta el siguiente enunciado del seudocódigo. Note que la segunda línea de esta estructura de selección está con sangría. Esta sangría es opcional, pero es muy recomendada, ya que auxilia a destacar la estructura de los programas estructurados. 

Estructuras de control

Por lo regular, en un programa los enunciados son ejecutados uno después del otro, en el orden en que aparecen escritos. Esto se conoce como ejecución secuencial. Varios enunciados de C, que pronto analizaremos, le permiten al programador especificar que el enunciado siguiente a ejecutar pueda ser otro diferente del que sigue en secuencia. Esto se conoce como transferencia de control.

Durante los años 60, se hizo claro que el uso indiscriminado de transferencias de control era la causa de gran cantidad de dificultades experimentadas por los grupos de desarrollo de software. El problema era causada por el enunciado goto, que le permite al programador especificar una transferencia de control a uno de una amplia gama de destinos posibles, dentro de un programa. Lo que se conoce como programación estructurada se convirtió prácticamente en sinónimo de "eliminación  de goto”.

Las investigaciones de Bohm y de Jacopini hablan demostrado que los programas podían ser escritos sin ningún enunciado goto. Para los programadores el reto se convirtió en modificar sus estilos a "programación sin goto". Y no fue sino hasta entrados los años 70 que la profesión de la programación en general empezó a tomar en serio la programación estructurada. Los resultados han sido impresionantes, ya que los grupos de desarrollo de software han informado reducciones en tiempos de desarrollo, entrega a tiempo más frecuente de sistemas y terminación dentro del presupuesto del software. La clave de estos éxitos es simplemente que los programas producidos con las técnicas estructuradas, son más claros, más fáciles de depurar y de modificar, y tal vez más libres de fallas desde el primer momento.

El trabajo de Bohm y Jacopini demostró que todos los programas podrían ser escritos en términos de sólo tres estructuras de control

  1. La estructura de secuencia
  2. La estructura de selección 
  3. La estructura de repetición

Algoritmos

Antes de escribir un programa para resolver un programa particular, es esencial tener compresión completa del mismo, y un método para su resolución.

Algoritmos
La solución a cualquier problema de cómputo involucra la ejecución de una serie de acciones en un orden específico. Un procedimiento para resolver un problema en términos de las acciones a ejecutarse, y el orden en el cual estas acciones deben de ejecutarse a esto se llama algoritmo.

Veamos el “algoritmo de levantarse” que debe seguir un ejecutivo para salir de la cama y llegar al trabajo:

Salir de la cama
Quitarse los pijamas
Darse una ducha
Vestirse
Desayunar
Utilizar vehículo común para llegar al trabajo

Mediante esta rutina el ejecutivo llega al trabajo bien preparado para tomar decisiones críticas.

Suponga sin embargo, que los mismos pasos se llevan a cabo en un orden ligeramente distinto:

Salir de la cama
Quitarse los pijamas
Vestirse
Darse una ducha
Desayunar
Utilizar vehículo común para llegar al trabajo

En este caso, nuestro ejecutivo aparecerá en el trabajo totalmente mojado

Aritmetica

La mayor parte de los programas en C ejecutan cálculos aritméticos. Los operadores aritméticos son todos operadores binarios. Por ejemplo, la expresión 7 + 3 contiene el operador binario + y los operandos 7 y 3.

Los operadores aritméticos se muestran a continuación:

Operación en C
Operador aritmético
Expresión algebraica
Expresión en C
Suma
Substracción
Multiplicación
División
Módulo
+
-
*
/
%
f + 7
p – c
bm
x/y
r mod s
f + 7
p – c
b * m
x / y
r % s

La división de enteros da como resultado también un entero. Por ejemplo al expresión 7 / 4 da como resultado 1, y la expresión 17 / 5 da como resultado 3. El C tiene el operador modulo, %, que proporciona el residuo después de una división entera. Por lo tanto 7 % 4 da como resultado 3, y 17 % 5 da como resultado 2. Analizaremos muchas aplicaciones del operador de módulos.

Error

Un intento de dividir por cero, por lo regular resulta no definido y en general da como resultado un error fatal, es decir, el error hace que el programa termine de inmediato sin haber ejecutado con éxito su tarea.

Memoria

Los nombres de variables como integer1, interger2 y sum son localizaciones o posiciones de memoria de la calculadora. Cada variable tiene un nombre, un tipo y un valor.


Empezando a programar en C

El lenguaje C facilita un método estructurado y disciplinado para el diseño de programas de computación. Desde aquí empezaremos a conocer C a través de programas de ejemplo. Cada ejemplo se analizara de forma cuidadosa, para mejor entendimiento suyo.

Introducción

Bienvenido a la programación en C para calculadoras CASIO fx9860G Series, este tutorial es apropiado para personas con poca o ninguna experiencia de programación, también está enfocado para aquellos programadores con experiencia. No dude en consultar durante el aprendizaje en los post en los que tenga duda, así le brindaremos una mejor explicación y modificaremos el post para un entendimiento más acorde a todos.

Aquí también encontrara métodos de programación que le podrá ser útil en cualquier lenguaje C o sus variantes.

Programación Estructurada en C

Un lenguaje estructurado permite muchas posibilidades de programación. Soporta directamente varias construcciones de bucles, tales como while, do while y for, en un lenguaje estructurado podemos sangrar las sentencias y dar un orden a nuestro programa.

Los lenguajes modernos tienden a ser estructurados. Hoy en día la mayoría de los programadores consideran que se programa más fácil con el lenguaje estructurado ya que son mas fáciles de mantener.




Historia de C

El lenguaje C fue inventando e implementado por primera vez por Dennis Ritchie en un DEC PDP-11 usando UNIX como sistema operativo.

C resulta de un lenguaje anterior denominado BCPL, este fue desarrollado por Martin Richards y es un sucesor de otro lenguaje llamado B, inventado por Ken Thompson, que en los años setenta llevo al desarrollo de C.

Con la llegada de las micro computadoras se crearon muchos programas en C. La mayoría de de los programas eran compatibles. Pero los programas tenían discrepancias. Para solucionar esto, el instituto de estándares americano (ANSI) estableció un comité en 1983 para crear un estándar que definiera el lenguaje C. Finalmente, el lenguaje fue adoptado en 1990 y Turbo C implementa el estándar ANSI de C. Turbo C es un compilador rápido y eficiente, que nos da un entorno integrado de programación, satisfaciendo a muchos programadores.

fx-9860G Sofware Development Kit, Librerías estándar de C

Como aprenderá más adelante, los programas en C consisten en módulos o piezas que se denominan funciones. Usted puede programar todas las funciones que necesita para formar un programa C, pero aquí le mostramos las funciones existentes que son soportadas por la calculadora.

Para aprender el extenso mundo de C le recomendamos en aprender el lenguaje C en si mismo y como utilizar las funciones. Evite volver a inventar la rueda; utilice piezas existentes -Esto se conoce como reutilización de software-.

Las siguientes funciones de C son soportadas para programar en la calculadora fx-9860G Series.

Tome nota: las funciones mostradas a continuación son las únicas soportadas.

Nombre de Archivo:
stddef.h

Función / Constante / Macro / tipo de dato
ptrdiff_t
size_t
NULL
errno

Nombre de Archivo:
Ctype.h

Función / Constante / Macro / tipo de dato
int isalnum(int c)
int isalpha(int c)
int iscntrl(int c)
int isdigit(int c)
int isgraph(int c)
int islower(int c)
int isprint(int c)
int ispunct(int c)
int isspace(int c)
int isupper(int c)
int isxdigit(int c)
int tolower(int c)
int toupper(int c)

Calculadora FX-9860GII

Calculadora escolar y gráfica fx-9860GII

Esta es la calculadora que se usara para programar, a continuación se le muestra algunas características de esta calculadora.

Comodidad de cálculo: La calculadora gráfica FX-9860GII con pantalla grande de elevado contraste, entrada y reproducción natural, iluminación de fondo y 1,5 MB de memoria Flash-Rom.



Calculadora FX-9860GII SD

Calculadora escolar y gráfica fx-9860GII

Cómoda: la calculadora gráfica FX-9860GII SD con introducción y reproducción natural, cálculo de tablas y ranura de tarjeta SD.





Cómo formular algoritmos: Estudio de caso 1 (repetición controlada por contador)

A fin de ilustrar cómo se desarrollan los algoritmos, resolveremos algunas variantes de un programa de promedios de clase. Considere el siguiente enunciado de programa:

Una clase de cinco alumnos hizo un examen. Las notas (enteros en el rango 0 a 100) correspondientes a este examen están a su disposición. Determine el promedio de la clase en este examen.

El promedio de la clase es igual a la suma de las notas dividida por el número de alumnos. El algoritmo para resolver este problema en una calculadora:

Debe introducir cada una de las calificaciones
Ejecutar el cálculo de promedio
Imprimir el resultado.

Utilicemos el seudocódigo, enlistemos las acciones a ejecutarse, y especifiquemos el orden en el cual estas acciones deberán ser ejecutadas. Utilizaremos repetición controlada por contador, para introducir las calificaciones una a la vez. Esta técnica utiliza una variable llamada contador para definir el número de veces que deberá ejecutarse un conjunto de enunciados. En este ejemplo, la repetición terminará cuando el contador exceda de 5.

El algoritmo en seudocódigo será

Cómo utilizar operadores de igualdad y relacionales

Los programas en C, ejecutan ya sea acciones o toman decisiones. Por ejemplo podemos tomar una decisión en un programa para determinar si una persona aprobó un curso.

Aquí veremos una versión simple de la estructura de control if de C, que permite al programa tomar una decisión en base a la verdad o falsedad de la condición.

Las condiciones se forman utilizando los operadores de igualdad y los operadores relacionales.





Cómo utilizar #include

Cada biblioteca estándar tiene su archivo de cabecera correspondiente, que contiene los prototipos de función de todas las funciones de dicha biblioteca y las definiciones de varios tipos de datos y contantes requeridas por dichas funciones.

La directiva de preprocesador #include hace que en lugar de la directiva se incluya una copia del archivo especificado.

El programador puede crear archivos de cabecera personalizados. Estos archivos de cabecera deben terminar también en .h

Crearemos una función que introduce una cadena (string) desde teclado e imprime en pantalla.

El nombre del siguiente código es: inout.h, hace referencia a funciones de entrada y salida.