sábado, 26 de diciembre de 2015

4 Sentencias iterativas

Temas a tratar en este capítulo:

  • Iteración
  • ¿Porqué se producen los ciclos infinitos?
  • Ejemplo
  • Ejercicios propuestos

Iteración

Una instrucción de iteración (ciclo, o también bucle) permite realizar un proceso una o varias veces hasta que se cumpla una condición.

Siempre debe existir alguna sentencia que afecte la condición, en caso contrario se convertirá en un ciclo infinito (loop).

1.- While (Mientras)

while(condición){
    Sentencia 1;
    ...
    Sentencia n;
}

2.- Do-While (Hacer-Mientras)

do{
    Sentencia 1;
    ...
    Sentencia n;
}while(condición);

3.- For (Para)

for(condición inicial; expresión lógica; operación){
    Sentencia 1;
    ...
    Sentencia n;
}

4.- Switch

switch(condición){
    case 1:
        Sentencia A1;
        ...
        Sentencia An;
        break; // Se utiliza para finalizar el ciclo (romperlo)
    case 2:
        Sentencia B1;
        ...
        Sentencia Bn;
        break;
    ...
    default: // Esta función cumple el mismo rol que "else"
        Sentencia M1;
        ...
        Sentencia Mn;
}

¿Porqué se producen los ciclos infinitos?

A continuación tenemos un fragmento de un programa que utiliza una sentencia de tipo iterativa (while):

int i=1, n=20;
while(i<n){
    printf("El numero es: %d", i);
}

Si analizamos el fragmento, nos daremos cuenta de que se trata de un bucle infinito, pues el programa mostrará infinitamente la variable “i” (que equivale a 1) ya que no existe ninguna sentencia que afecte esa condición. La pregunta ahora es ¿Cómo evitarlo? La respuesta está en añadir alguna o algunas sentencias que transformen el proceso infinito, en un proceso finito.

int i=1, n=20;
while(i<n){
    printf("El numero es: %d", i);
    i++;
}

Si a la variable "i" le vamos sumando 1 en cada iteración, por ejemplo, en algún momento el ciclo se detendrá, ya que para el veinteavo proceso la condición no se cumplirá (i=20 no es menor que n=20) y el ciclo terminará, evitando de esta manera un loop.

Ejemplo

Escribir un algoritmo en C o C++ que muestre por pantalla los n primeros números naturales (n se ingresa desde teclado).

En C:

#include <stdio.h>
int main()
{
    int i=1, n;
    printf("Ingrese n: ");
    scanf("%d", &n);
    while(i<=n){
        printf("%d\n", i);
        i++;
    }
}

En C++:

#include <iostream>
int main()
{
    int i=1, n;
    cout << "Ingrese n: ";
    cin >> n;
    while(i<=n){
        cout << i << "\n";
        i++;
    }
}

Ejercicios propuestos

1.- Escribir un algoritmo en C o C++ que muestre por pantalla los n primeros números naturales impares (n se ingresa desde teclado).

2.- Escribir un algoritmo en C o C++ que dado un número cualquiera (ingresado por teclado), determine todos sus divisores y los muestre por pantalla.

jueves, 17 de diciembre de 2015

3 Introducción a C++

Temas a tratar en este capítulo:

  • ¿Qué es un Lenguaje de Programación?
  • Lenguaje C y C++
  • Librerías o Bibliotecas
  • Datos elementales
  • Variable vs Constante
  • Operadores
  • Sentencias
  • Ejemplo
  • Ejercicio propuesto

¿Qué es un Lenguaje de Programación?

Un lenguaje de programación es un lenguaje formal diseñado para realizar procesos que pueden ser llevados a cabo por máquinas como las computadoras.

Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.

Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila (de ser necesario) y se mantiene el código fuente de un programa informático se le llama programación.

Lenguaje C y C++

C

C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL (Lenguaje de Programación Básico Combinado).

Al igual que B, es un lenguaje orientado a la implementación de sistemas operativos (concretamente Unix). C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones.

Se trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de medio nivel pero con muchas características de bajo nivel.

C++

C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al lenguaje de programación C mecanismos que permiten la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.

Una particularidad de C++ es la posibilidad de redefinir los operadores, y de poder crear nuevos tipos que se comporten como tipos fundamentales.

El nombre C++ fue propuesto por Rick Mascitti en el año 1983, cuando el lenguaje fue utilizado por primera vez fuera de un laboratorio científico. Antes se había usado el nombre “C con clases”. En C++, la expresión “C++” significa “incremento de C” y se refiere a que C++ es una extensión de C.

Librerías o Bibliotecas

Una librería o biblioteca es código predefinido, es decir, paquetes o colecciones de clases y funciones que nos permiten dar solución a problemas comunes y que generalmente requieren de acciones genéricas.

Estructura:

#include <nombre_libreria>

Algunas librerías:

stdio: Proporciona el núcleo de las capacidades de entrada/salida de C.
iostream: Utilizada para operaciones de entrada/salida.
stdlib: Para gestión de memoria dinámica, control de procesos, entre otras.
string: Para manipulación de cadenas de caracteres.
time: Para tratamiento y conversión entre formatos de fecha y hora.
math: Contiene las funciones matemáticas comunes.

Datos elementales

Se llama tipo primitivo o tipo elemental a los tipos de datos originales de un lenguaje de programación, es decir, aquellos que nos proporciona el lenguaje y con los que podemos (en ocasiones) construir tipos de datos abstractos y estructuras de datos.



En C++ existe el "boolean" o tipo de dato lógico, el cual puede representar sólo 2 valores: Verdadero o Falso.

Variable vs Constante

Una Variable es un espacio de almacenamiento en memoria RAM, donde el primer símbolo es una letra del alfabeto inglés y queda definida por 4 elementos: nombre, dirección, tipo y valor. Por ejemplo:

int a=10;

Significa que:

Nombre: a
Dirección: 6000 (en memoria RAM)
Tipo: entero (int)
Valor: 10

En cambio, una Constante es aquella que no cambia en la ejecución de un programa y se define anteponiendo la palabra “const”. Por ejemplo:

const float pi=3.14;

Operadores

1.- Aritméticos

a) Suma (+)
b) Resta (-)
c) Multiplicación (*)
d) División (/)
e) Resto (% o mod)

2.- Relación

a) Mayor (>)
b) Mayor igual (>=)
c) Menor (<)
d) Menor igual (<=)
e) Igual (==)
f) Distinto (!=)

3.- Lógicos

a) Y (&& o and)
b) O (|| o or)
c) No (!)

4.- Asignación

a) Simple (=)
b) Incremento (++)
c) Decremento (--)
d) Suma (+=)
e) Resta (-=)
f) Multiplicación (*=)
g) División (/=)

Sentencias

1.- Entrada: Permite el ingreso de datos desde el exterior.

scanf(“formato”, &variable); // C
cin >> variable; // C++

2.- Salida: Permite desplegar un mensaje o información por algún dispositivo de salida.

printf(“mensaje … formato”, variable); // C
cout << “mensaje ... ” << variable; // C++

3.- Asignación: Permite almacenar un dato o resultado de una operación al interior de una variable.

tipo variable=valor;

4.- Selección: Permite seleccionar una sentencia de otra a partir de una condición.

if(condición){
    Sentencia 1;
    ...
    Sentencia n;
}

O también:

if(condición){
    Sentencia A1;
    ...
    Sentencia An;
}
else{
    Sentencia B1;
    ...
    Sentencia Bn;
}

5.- Iteración: Permite realizar un proceso una o varias veces hasta que se cumpla la condición (éstas se verán con más detalle en el siguiente capítulo).

Ejemplo

Escribir un algoritmo en C o C++ que lea desde teclado un número cualquiera y muestre por pantalla su doble.

En C sería algo así:

#include <stdio.h> // Incluímos la librería de entrada/salida para poder utilizar printf y scanf
int main() // Main significa programa principal, todo lo que hagamos se ejecutará dentro del main
{
    int n; // Declaramos la variable a utilizar
    printf("Ingrese un numero cualquiera: ");
    scanf("%d", &n); // Se leerá la variable que el usuario ha ingresado por teclado
    n*=2; // Utilizamos el operador de asignación de la multiplicación
    printf("Su doble es: %d", n); // Finalmente mostramos por pantalla el resultado
}

En C++:

#include <iostream>
int main()
{
    int n;
    cout << "Ingrese un numero cualquiera: ";
    cin >> n;
    n*=2;
    cout << "Su doble es: " << n;
}

Ejercicio propuesto

Escribir un algoritmo en C o C++ que lea dos números desde teclado, calcule su producto y luego lo muestre por pantalla.