martes, 27 de agosto de 2019

Programa 12 Vectores

Programa para capturar 20 datos en un vector, los datos unicamente deberan guardarse en el vector si son mayores a 35

#include <iostream>
#include <stdio.h>
using namespace std;
int vec[20],i,j,num;

int main()
{
cout << "CAPTURA 20 DATOS EN UN VECTOR SI SON MAYORES A 35" << endl;

    for (i=0; i<=19; i++)
    {
        cout << "INGRESA EL DATO" << endl;
        cin >> num;

       if (num>35)
            vec[i]=num;
    }
    for (j=0; j<=19; j++)
    {
        cout << vec[j] <<endl;
    }


    return 0;
}

Programa 11 Vectores

Programa para capturar datos de un vector de 15 posiciones. La captura empezara a partir de la ultima posicion.

#include <iostream>
#include <stdio.h>
using namespace std;
int vec[15],h,j;

int main()
{
cout << "CAPTURA 15 DATOS EN UN VECTOR" << endl;

    for (h=14; h>=0; h--)
    {
        cout << "INGRESA EL DATO" << endl;
        cin >> vec[h];
    }
    for (j=14; j>=0; j--)
    {
        cout << vec[j] <<endl;
    }


    return 0;
}

Programa 10 Vectores

Programa para la captura de 20 datos en un vector

#include <iostream>
#include <stdio.h>
using namespace std;
int vec[20],i,j;

int main()
{
cout << "CAPTURA 20 DATOS EN UN VECTOR" << endl;

    for (i=0; i<=19; i++)
    {
        cout << "INGRESA EL DATO" << endl;
        cin >> vec[i];
    }
    for (j=0; j<=19; j++)
    {
        cout << vec[j] <<endl;
    }


    return 0;
}

Programa 9 Vectores

Hacer un ciclo de los multiplos de 8, comenzando en 8 y terminando en 80.


#include<iostream>
#include<stdio.h>

using namespace std;
int Vec[10],h,j,multiplo;
int main()
{
     for(h=0;h<=9;h++)
{    
     multiplo=(h+1)*8;
     Vec[h]=multiplo;
}
     for(j=0;j<=9;j++)
{
     cout<<Vec[j] <<"\n";
}
   retun0;
}

    

Programa 8

Capturar el precio de 5 articulos, calcular la compra total, el IVA y el total a pagar. La salida debe ser La compra total es... El iva es... El total a pagar es...
#include <iostream>
#include <stdio.h>

using namespace std;
float arti,ct,iva,tp;
int i;

int main()
{
    for(i=1;i<=5;i++)
    {
        cout <<"INGRESA EL ARTICULO"<<endl;
        cin>>arti;
        ct=ct+arti;
    }
    cout <<"LA COMPRA TOTAL ES "<<ct<<endl;
    iva=ct*0.016;
    cout <<"EL IVA TOTAL ES "<<iva<<endl;
    tp=ct+iva;
    cout <<"EL TOTAL A PAGAR ES "<<tp<<endl;

    return 0;
}

Programa 7

Hacer un programa que capture 20 calificaciones y obtenga el promedio 

#include <iostream>
#include <stdio.h>

using namespace std;
float prom,calif,acum;
int j;

int main()
{
    cout << "PROMEDIO DE 20 CALIFICACIONES"<< endl;
    for(j=1;j<=20;j++)
    {
        cout <<"INGRESA LA CALIICACION"<<endl;
        cin>>calif;
        acum=acum+calif;
    }
    prom=acum/20;
    cout <<"EL PROMEDIO ES "<<prom<<endl;

    return 0;
}

Programa 6

Programa que realice la suma de tres numeros 
#include <iostream>
#include <stdio.h>
using namespace std;
int n1,n2,n3,suma;

int main()
{
  cout<<"Ingresa el primer numero"<<endl;
    cin >>n1;
    cout<<"Ingresa el segundo numero"<<endl;
    cin >>n2;
    cout<<"Ingresa el tercer numero"<<endl;
    cin >>n3;
    cout<<"El resultado es"<<endl;
    suma= n1+n2+n3;
    cout << suma << endl;

    return 0;
}
Agregar leyenda

Programa 5

Hacer un programa para imprimir la tabla de multiplicar del 6.
#include <iostream>
#include <stdio.h>

using namespace std;
int i,multiplo;
int main()
{
    cout << "TABLA DE MULTIPLICAR DEL 6"<< endl;
    for(i=1;i<=15;i++)
    {
        multiplo=i*6;
        cout <<"6x"<<i<<"="<<multiplo<<endl;
    }
    return 0;
}


Programa 4

Hacer un programa para imprimir los multiplos de 8 iniciando en 8 y terminando en 160
#include <iostream>
#include <stdio.h>

using namespace std;
int j;
int main()
{

    cout << "Multiplos de 8"<< endl;
    for(j=8;j<=160;j=j+8)
    {
        cout <<j<<endl;
    }
    return 0;
}


Programa 3

Programa que imprima los multiplos de 3 iniciando en 3 terminando en 66
#include <iostream>
#include <stdio.h>

using namespace std;
int h,contador,multiplo;
int main()
{

    cout << "Multiplos de 3"<< endl;
    for(h=3;h<=66;h=h+3)
    {
        cout <<h<<endl;
    }
    return 0;
}


Programa 2

Elaborar un programa para obetener los siguentes areas del triangulo,circulo,cuadrado y rectangulo y los siguentes volumenes cilindro y cubo. El programa debe mostrar las 6 opciones al usuario dependiendo de la opcion o del caso elegido por el usuario el calculo debera reaizarse.

#include <iostream>

using namespace std;
 int b,h,d,L,b1,h1,r,rec,cd,opc,h3,h4;
  float tr,cir,cil,cub;
int main()
{
    cout << "Menu de opciones" << endl;
    cout << "Area del triangulo" << endl;
    cout << "Area del circulo" << endl;
    cout << "Area del cuadrado" << endl;
    cout << "Volumen del cilindro" << endl;
    cout << "Volumen del  cubo" << endl;
    cout<< "Elige la opcion"<< endl;

    cin>> opc;
    switch(opc)
    {
        case 1:
            cout<<"Ingresa la base"<<endl;
            cin>>b;
            cout<<"Ingresa la altura"<<endl;
             cin>>h;
             tr= b*h/2;
             cout<<"El area del triangulo es"<<tr<<endl;
             break;


        case 2:
            cout<<"Ingresa el radio"<<endl;
            cin>>r;
             cir= 3.14*(r*r);
             cout<<"El area del circulo"<<cir<<endl;
             break;

        case 3:
            cout<<"Ingresa el lado"<<endl;
            cin>>L;
             cd= L*L;
             cout<<"El area del cuadrado es"<<cd<<endl;
             break;


        case 4:
            cout<<"Ingresa la base"<<endl;
            cin>>b1;
            cout<<"Ingresa la altura"<<endl;
             cin>>h1;
             rec= b*h;
             cout<<"El area del rectangulo es"<<rec<<endl;
             break;

       case 5:
            cout<<"Ingresa el radio"<<endl;
            cin>>r;
             cir= 3.14*(r*r);
             cout<<"El area del circulo"<<cir<<endl;
            cout<<"Ingresa la altura"<<endl;
            cin>>h3;
             cil=cir*h3;
             cout<<"El volumen del cilindro es"<<cil<<endl;

             break;

    case 6:
            cout<<"Ingresa el lado"<<endl;
            cin>>L;
             cd= L*L;
             cout<<"El area del cuadrado es"<<cd<<endl;

             cout<<"Ingresa la altura"<<endl;
            cin>>h4;
            cub=cd*h4;
            cout<<"El volumen del cubo es"<<cub<<endl;
             break;

    default:"Opcion no valida";
    break;

    }


    return 0;

Programa 1

Hacer un programa que imprima la siguente serie
0,1,1,2,3,5,8,13,21,34,55,89


#include <iostream>

#include <stdio.h>



using namespace std;

int n,n1,n2,cont;

int main()

{

   n1=0;

   n2=1;

   cout<<n1 <<endl;

   cout<<n2 <<endl;

   for(cont=1;cont<=12;cont=cont+1)

   {

       n=n1+n2;

       cout<<n <<endl;

       n1=n2;

       n2=n;

   }

   return 0;

}




viernes, 23 de agosto de 2019

Estucturas de control

If

if(condicion)
if(condicion)
{
instrucciones;
}
if(condicion)
instruccion1;
instruccion 2; 

   if
(a>b)
  >=
  <=
  !=
  ==
if(a>b)&&(b>c)
if(a>b)||(b>c)



If-Else
if(condicion)
{
}
else
instruccion;
if(condicion)
(>,<,>=,<=,!=,==)&&(condicion)



Switchs

Switch (a)
{case 1: Instrucciones;
                     break;
case 2: Instrucciones;
                     break;
case 3: Instrucciones;
                     break;
default: instrucciones;

                                For

For (J=0;J=10;J++)
{Cout<<"HOLA";

}
For(J=10;J>=0;J--)

While

while (instruccion)

Do -While

 Do While(instruccion)

Principales funciones del Lenguaje C

*Funciones de entrada y salida*

A diferencia de otros lenguajes, C no dispone de sentencias de entrada/salida . En su lugar se utilizan funciones contenidas en la librería estándar y que forman parte integrante del lenguaje.
Las funciones de entrada/salida (Input/Output) son un conjunto de funciones, incluidas con el compilador, que permiten a un programa recibir y enviar datos al exterior. Para su utilización es necesario incluir, al comienzo del programa, el archivo stdio.h en el que están definidos sus prototipos:
#include <stdio.h>
donde stdio proviene de standard-input-output .

Función printf()
double tiempo;
float masa;
printf("Resultado nº: %d. En el instante %lf la masa vale %f\n",i, tiempo, masa);

Carácter
Tipo de argumento
Carácter
Tipo de argumento
d, i
int decimal
o
octal unsigned
u
int unsigned
x, X
hex. unsigned
c
char
s
cadena de char
f
float notación decimal
e, g
float not. científ. o breve
p
puntero (void *)
Un número entero positivo, que indica la anchura mínima del campo en caracteres.
Un signo (-), que indica alineamiento por la izda (el defecto es por la dcha).
Un punto (.), que separa la anchura de la precisión .
Un número entero positivo, la precisión , que es el nº máximo de caracteres a imprimir en un string , el nº de decimales de un float double , o las cifras mínimas de un int long .
Un cualificador : una (h) para short o una (l) para long double.
"Con cien cañones por banda,","viento en popa a toda vela,",
"no cruza el mar sino vuela,",
"un velero bergantín.");
Función scanf()

carácter
caracteres leídos
argumento
c
cualquier carácter
char *
d, i
entero decimal con signo
int *
u
entero decimal sin signo
unsigned int
o
entero octal
unsigned int
x, X
entero hexadecimal
unsigned int
e, E, f, g, G
número de punto flotante
float
s
cadena de caracteres sin ' '
char
h, l
para short, long y double
L
modificador para long double
double distancia;
char nombre[20];
scanf("%d%lf%s", &n, &distancia, nombre);
Macros getchar() y putchar()
escribe el carácter a . Esta sentencia equivale a printf("a");
char name[100];
while((c = getchar()) != '\n') // se leen caracteres hasta el '\n'
         name[i++] = c; // se almacena el carácter en Name[]
name[i]='\0'; // se añade el carácter fin de cadena 

La función printf() imprime en la unidad de salida (el monitor, por defecto), el texto, y las constantes y variables que se indiquen. La forma general de esta función se puede estudiar viendo su prototipo :
int printf("cadena_de_control", tipo arg1, tipo arg2, ...)
Explicación: La función printf() imprime el texto contenido en cadena_de_control junto con el valor de los otros argumentos, de acuerdo con los formatos incluidos en cadena_de_control . Los puntos suspensivos (...) indican que puede haber un número variable de argumentos. Cada formato comienza con el carácter (%) y termina con un carácter de conversión .
Considérese el ejemplo siguiente,
int i; 
en el que se imprimen 3 variables ( i , tiempo y masa ) con los formatos ( %d , %lf y %f ), correspondientes a los tipos (intdouble float ), respectivamente. La cadena de control se imprime con el valor de cada variable intercalado en el lugar del formato correspondiente.
Tabla 8.1. Caracteres de conversión para la función printf() .
Lo importante es considerar que debe haber correspondencia uno a uno (el 1º con el 1º, el 2º con el 2º, etc.) entre los formatos que aparecen en la cadena_de_control y los otros argumentos (constantes, variables o expresiones). Entre el carácter % y el carácter de conversión puede haber, por el siguiente orden, uno o varios de los elementos que a continuación se indican:
Los caracteres de conversión más usuales se muestran en la Tabla 8.1.
A continuación se incluyen algunos ejemplos de uso de la función printf() . El primer ejemplo contiene sólo texto, por lo que basta con considerar la cadena_de_control .
printf("Con cien cañones por banda,\nviento en popa a toda vela,\n"); 
El resultado serán dos líneas con las dos primeras estrofas de la famosa poesía. No es posible partir cadena_de_control en varias líneas con caracteres intro , por lo que en este ejemplo podría haber problemas para añadir más estrofas. Una forma alternativa, muy sencilla, clara y ordenada, de escribir la poesía sería la siguiente:
printf("%s\n%s\n%s\n%s\n",
En este caso se están escribiendo 4 cadenas constantes de caracteres que se introducen como argumentos, con formato %s y con los correspondientes saltos de línea. Un ejemplo que contiene una constante y una variable como argumentos es el siguiente:
printf("En el año %s ganó %ld ptas.\n", "1993", beneficios); 
donde el texto 1993 se imprime como cadena de caracteres (%s), mientras que beneficios se imprime con formato de variable long (%ld). Es importante hacer corresponder bien los formatos con el tipo de los argumentos, pues si no los resultados pueden ser muy diferentes de lo esperado.
La función printf() tiene un valor de retorno de tipo int , que representa el número de caracteres escritos en esa llamada.

La función scanf() es análoga en muchos aspectos a printf() , y se utiliza para leer datos de la entrada estándar (que por defecto es el teclado). La forma general de esta función es la siguiente:
int scanf("%x1%x2...", &arg1, &arg2, ...);
donde x1, x2, ... son los caracteres de conversión , mostrados en la Tabla 8.2, que representan los formatos con los que se espera encontrar los datos. La función scanf() devuelve como valor de retorno el número de conversiones de formato realizadas con éxito. La cadena de control de scanf() puede contener caracteres además de formatos. Dichos caracteres se utilizan para tratar de detectar la presencia de caracteres idénticos en la entrada por teclado. Si lo que se desea es leer variables numéricas, esta posibilidad tiene escaso interés. A veces hay que comenzar la cadena de control con un espacio en blanco para que la conversión de formatos se realice correctamente.
En la función scanf() los argumentos que siguen a la cadena_de_control deben ser pasados por referencia , ya que la función los lee y tiene que trasmitirlos al programa que la ha llamado. Para ello, dichos argumentos deben estar constituidos por las direcciones de las variables en las que hay que depositar los datos, y no por las propias variables. Una excepción son las cadenas de caracteres , cuyo nombre es ya de por sí una dirección (un puntero), y por tanto no debe ir precedido por el operador (&) en la llamada.
Tabla 8.2. Caracteres de conversión para la función scanf() .
Por ejemplo, para leer los valores de dos variables int double y de una cadena de caracteres, se utilizarían la sentencia:
int n; 
en la que se establece una correspondencia entre n y %d , entre distancia y %lf , y entre nombre y %s . Obsérvese que nombre no va precedido por el operador (&). La lectura de cadenas de caracteres se detiene en cuanto se encuentra un espacio en blanco, por lo que para leer una línea completa con varias palabras hay que utilizar otras técnicas diferentes.
En los formatos de la cadena de control de scanf() pueden introducirse corchetes [...], que se utilizan como sigue. La sentencia,
scanf("%[AB \n\t]", s); // se leen solo los caracteres indicados 
lee caracteres hasta que encuentra uno diferente de ( 'A','B',' ','\n','\t' ) . En otras palabras, se leen sólo los caracteres que aparecen en el corchete. Cuando se encuentra un carácter distinto de éstos se detiene la lectura y se devuelve el control al programa que llamó a scanf() . Si los corchetes contienen un carácter (^), se leen todos los caracteres distintos de los caracteres que se encuentran dentro de los corchetes a continuación del (^). Por ejemplo, la sentencia,
scanf(" %[^\n]", s);
lee todos los caracteres que encuentra hasta que llega al carácter nueva línea '\n'. Esta sentencia puede utilizarse por tanto para leer líneas completas, con blancos incluidos. Recuérdese que con el formato %s la lectura se detiene al llegar al primer delimitador (carácter blanco, tabulador o nueva línea).

Las macros 6 getchar() y putchar() permiten respectivamente leer e imprimir un sólo carácter cada vez, en la entrada o en la salida estándar. La macro getchar() recoge un carácter introducido por teclado y lo deja disponible como valor de retorno. La macro putchar() escribe en la pantalla el carácter que se le pasa como argumento. Por ejemplo:
putchar('a'); 
mientras que
c = getchar();
equivale a
scanf("%c", &c);
Como se ha dicho anteriormente, getchar() y putchar() son macros y no funciones , aunque para casi todos los efectos se comportan como si fueran funciones. El concepto de macro se verá con más detalle en la siguiente sección. Estas macros están definidas en el fichero stdio.h , y su código es sustituido en el programa por el preprocesador antes de la compilación.
Por ejemplo, se puede leer una línea de texto completa utilizando getchar() :
int i=0, c; 

*Los operadores aritméticos*

En informática y lenguajes de programación, se entiende por expresión aritmética a aquella donde los operadores que intervienen en ella son numéricos, el resultado es un número y los operadores son aritméticos. Los operadores aritméticos más comúnmente utilizados son:
El signo más (+) se emplea para sumar dos valores, el signo menos (-) para restar un valor de otro, el asterisco (*) para multiplicar dos valores, la división (/) para dividir un valor por otro, y el signo % para obtener el resto de una división entera. Estos símbolos se conocen como operadores binarios, pues operan sobre dos valores o variables.
La lista siguiente son ejemplos de expresiones aritméticas:
resultado = x - y;
total = capital+ interés;
cuadrado = x * x;
celcius = (fahrenheit - 32) / 1.8
Hay que comprender que el signo igual (=) en las expresiones anteriores se le conoce como "operador de asignación". Asigna el valor de la derecha de dicho signo igual a la variable de la izquierda.
En la última expresión, se utilizan paréntesis () para realizar primero cierta operación. Esto sucede porque en C, los operadores siguen unas reglas de preferencia. *, / y % tienen preferencia sobre + y -. Para soslayar esta preferencia, se deben utilizar paréntesis. Las expresiones con operadores de la misma preferencia se suelen evaluar de izquierda a derecha. Otro punto a tener en cuenta es que en una expresión que entraña una división, hay que tener cuidado de evitar la división por cero, que da como resultado infinito o un valor anómalo. En el capítulo 5 sobre declaraciones de control, veremos cómo hacer una revisión previa a la división para prevenir estos resultados.

*Operadores loguicos*

Muy utilizados en Informática, Lógica proposicional y Álgebra booleana, entre otras disciplinas. Los operadores lógicos nos proporcionan un resultado a partir de que se cumpla o no una cierta condición, producen un resultado booleano, y sus operandos son también valores lógicos o asimilables a ellos (los valores numéricos son asimilados a cierto o falso según su valor sea cero o distinto de cero). Esto genera una serie de valores que, en los casos más sencillos, pueden ser parametrizados con los valores numéricos 0 y 1. La combinación de dos o más operadores lógicos conforma una función lógica.
Los operadores lógicos son tres; dos de ellos son binarios, el último (negación) es unario. Tienen una doble posibilidad de representación en el estándar C++ actual: la representación tradicional que se indica a continuación, y la natural introducida recientemente que se detalla más adelante.

  • Y lógico && AND
  • O lógico || OR
  • Negación lógica  ! NOT

Las expresiones conectadas con los operadores && y || se evalúan de izquierda a derecha, y la evaluación se detiene tan pronto como el resultado verdadero o falso es conocido (muchos programas tienen una lógica que se basa en este propiedad).

*Operadores relacionales*

Los operadores relacionales son símbolos que se usan para comparar dos valores. Si el resultado de la comparación es correcto la expresión considerada es verdadera, en caso contrario es falsa.




El carácter ~ se obtiene manteniendo pulsada la tecla Alt y pulsando en el teclado numérico las teclas 126. Corresponde al carácter ASCII decimal 126.
Se debe tener especial cuidado en no confundir el operador asignación con el operador relacional igual a. Las asignaciones se realizan con el símbolo =, las comparaciones con ==.
Si dos escalares a y b se comparan el resultado puede ser verdadero (1) o falso (0) de acuerdo con la tabla anterior.
Si a son vectores de la misma dimensión, se compara cada elemento a(i) con b(i) el resultado es que el elemento (i) del vector resultado u(i) puede contener un 1 ó 0.
Si se comparan dos matrices (de la mismas dimensiones) la comparación se hace elemento a elemento y el resultado es otra matriz de la misma dimensión con unos y ceros de acuerdo con el resultado de la comparación.

Estructura de un programa en leguaje en C

*La estructura del programa*

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

Bloques de un programa


  • Bloque de declaraciones: en él se especifican todos los objetos que utiliza el programa (constantes, variables, tablas, registros, archivos, etc.).
  • Bloque de instrucciones: constituido por el conjunto de operaciones que se han de realizar para la obtención de los resultados deseados.


Partes principales de un programa

Dentro del bloque de instrucciones de un programa se pueden diferenciar tres partes fundamentales. En algunos casos, estas tres partes están perfectamente delimitadas, pero en la mayoría sus instrucciones quedan entremezcladas a lo largo del programa, si bien mantienen una cierta localización geométrica impuesta por la propia naturaleza de las mismas.

  • Entrada de datos: la constituyen todas aquellas instrucciones que toman datos de un dispositivo externo, almacenándolos en la memoria central para que puedan ser procesados.
  • Proceso o algoritmo: está formado por las instrucciones que modifican los objetos a partir de su estado inicial hasta el estado final, dejando éstos disponibles en la memoria central.
  • Salida de resultados: conjunto de instrucciones que toman los datos finales de la memoria central y los envían a los dispositivos externos.


Clasificación de las instrucciones

Una instrucción se caracteriza por un estado inicial y final del entorno. El estado final de una instrucción coincide con el inicial de la siguiente. No siempre una instrucción modifica el entorno, pues su cometido puede limitarse a una mera observación del mismo o a un cambio en el orden de ejecución de otras. Las instrucciones pueden ser:

  • Instrucciones de declaración: Se utilizan en aquellos lenguajes de programación que no tienen declaración explícita de los objetos. Su misión consiste en indicar al procesador que reserve espacio en la memoria para un objeto del programa, indicando asimismo su nombre, tipo y características.
  • Instrucciones primitivas: Son aquellas que ejecuta el procesador de modo inmediato. Las principales son asignación, entrada y salida.
  • Instrucción de asignación: Consiste en calcular el valor de una expresión y almacenarlo en una variable. En algún lenguaje es preciso calcular previamente el resultado de la expresión, pues la instrucción de asignación sólo permite el movimiento de un valor simple.
  • Instrucción de entrada: Toma un dato de un dispositivo de entrada y lo almacena en un objeto. En algún lenguaje, los datos de entrada no provienen de un dispositivo externo, sino que han sido colocados previamente en el mismo programa.
  • Instrucción de salida: Toma el valor de una expresión u objeto y lo lleva a un dispositivo externo.
  • Instrucciones compuestas: Son aquellas que el procesador no puede ejecutar directamente, sino que realiza una llamada a un subprograma, subrutina o párrafo.
  • Instrucciones de control: Son aquellas de controlar la ejecución de otras instrucciones.
  • Instrucción alternativa: Controla la ejecución de unas u otras instrucciones según una condición. Puede ser simple o doble (SI y SINO).
  • Instrucción de salto incondicional: Altera la secuencia normal de ejecución de un programa, continuando la misma en la línea indicada en la propia instrucción (IR A).
  • Instrucción de salto condicional: Altera la secuencia normal de ejecución de un programa únicamente en el caso de cumplimiento de una condición asociada a la propia instrucción (SI ... IR A).
  • Instrucción repetitiva: Hace que se repitan una o varias instrucciones un número determinado o indeterminado de veces (PARA, MIENTRAS, HASTA e ITERAR).


Elementos auxiliares de un programa

Son variables que realizan funciones específicas dentro de un programa, y por su gran utilidad, frecuencia de uso y peculiaridades, conviene hacer un estudio separado de las mismas. Las más importantes son:

  • Contadores: Un contador es un campo de memoria cuyo valor se incrementa en una cantidad fija, positiva o negativa, generalmente asociado a un bucle. Toma un valor inicial antes de comenzar su función, y cada vez que se realiza el suceso, incrementa su valor. Se utiliza en los siguientes casos:
  • Para contabilizar el número de veces que es necesario repetir una acción (variable de control de un bucle).
  • Para contar un suceso particular solicitado por el enunciado del problema (asociado a un bucle o independientemente).
  • Acumuladores: Un acumulador es un campo de memoria cuyo valor se incrementa sucesivas veces en cantidades variables. Se utiliza en aquellos casos en que se desea obtener el total acumulado de un conjunto de cantidades, siendo preciso inicializarlo con el valor 0. También en las situaciones en que hay que obtener un total como producto de distintas cantidades se utiliza un acumulador, debiéndose inicializar con el valor 1.
  • Interruptores (switches): Un interruptor es un campo de memoria que puede tomar dos valores exclusivos (0 y 1, -1 y 1, FALSO y CIERTO, etc.). Se utiliza para:
  • Recordar en un determinado punto de un programa la ocurrencia o no de un suceso anterior, para salir de un bucle o para decidir en una instrucción alternativa qué acción realizar.
  • Para hacer que dos acciones diferentes se ejecuten alternativamente dentro de un bucle.


Tipos de programa

Un programa, por lo general, estará compuesto por una secuencia de acciones, algunas de las cuales serán alternativas o repetitivas. En determinados programas sencillos, no se da esta mezcla de acciones, en cuyo caso se pueden clasificar como sigue:

  • Programas lineales: consisten en una secuencia de acciones primitivas (su ejecución es lineal en el orden en que han sido escritas).
  • Programas alternativos: consisten en el anidamiento de acciones alternativas (las tablas de decisión se realizan mediante programas alternativos).
  • Programas cíclicos: son aquellos en los que un conjunto de acciones se repiten un número determinado o indeterminado de veces (un programa de este tipo se denomina bucle).
  • Programas de gestión: se caracterizan por el manejo de gran cantidad de datos con pocos cálculos (resuelven problemas de gestión).
  • Programas técnicos-científicos: al contrario que los anteriores, realizan gran cantidad de cálculos con pocos datos (revuelven problemas matemáticos, físicos, etc.).
  • Programas de diseño (CAD): se caracterizan por la utilización de técnicas gráficas para resolver problemas de diseño.
  • Programas de simulación: intentan reflejar una situación real, para facilitar su estudio.
  • Programas educativos (EAO): utilizan las ventajas del ordenador para la docencia.
  • Programas de inteligencia artificial: se utilizan para simular el razonamiento humano.

Otra clasificación relativa a la aplicación desarrollada por el programa es:

Lenguajes de programación

Un lenguaje de programación es una notación para escribir programas, es decir, para describir algoritmos dirigidos al computador. Un lenguaje viene dado por una gramática o conjunto de reglas que se aplican a un alfabeto. El primer lenguaje de programación que se utilizó fue el lenguaje máquina, el único que entiende directamente el computador, cuyo alfabeto es el binario, formado por los símbolos 0 y 1. El lenguaje ensamblador, resultó de la evolución del lenguaje máquina, al sustituir las cadenas de símbolos binarios por nemotécnicos. Posteriormente surgieron los lenguajes de alto nivel, cuya evolución es:
  • 1955: FORTRAN.
  • 1960: LISP, ALGOL, COBOL.
  • 1965: APL, SNOBOL, PL/1, BASIC.
  • 1970: PROLOG, ALGOL68, SIMULA67.
  • 1975: C, PASCAL.
  • 1980: MODULA-2, LIS, EUCLID.
  • 1985: ADA.
Los lenguajes de programación pueden clasificarse de la siguiente manera:
  • Según su parecido con el lenguaje natural:
  • Bajo nivel: lenguajes máquina y ensambladores.
  • Alto nivel: todos los demás.
  • Según la estructura de los programas:
  • Convencionales o línea a línea: ensambladores, FORTRAN, BASIC, COBOL, etc.
  • Estructurados: Algol, PL/I, Pascal, Ada, COBOL estructurado, etc.
  • Según la realización de los programas:
  • Funcionales: Lisp, Prolog, APL, etc.
  • Imperativos: la mayoría.
  • Según el tipo de proceso:
  • Interactivos o conversacionales: BASIC, Pascal, APL, etc.
  • Orientados al proceso por lotes (batch): COBOL, FORTRAN, PL/I, etc. factorial.

*Estructura de un programa en lenguaje en c que tiene funciones*


Un programa en C es un conjunto de funciones, definiciones de tipos de datos y declaraciones de variables contenidos en un conjunto de ficheros. Un programa en C siempre comienza a ejecutar por la función con nombre main. Cualquier función puede llamar a cualquier función, y las variables declaradas fuera de las funciones tienen ámbito global o local al fichero que las contiene (si se declaran con el prefijo static). La siguiente figura ilustra la estructura de un programa en C contenido en varios ficheros.

El compilador es el programa encargado de traducir un conjunto de funciones, definiciones y declaraciones en múltiples ficheros a un fichero ejecutable. El compilador de C tiene un comportamiento sorprendentemente sencillo y realiza mucho menos trabajo del que se está acostumbrado con otros compiladores como el de Java. Para crear un ejecutable, el compilador procesa los ficheros de código uno a uno de forma independiente, de forma que las definiciones de variables y funciones de un fichero no las recuerda cuando procesa el fichero siguiente. Además, el compilador realiza una única pasada por el texto, por lo que cuando se traduce un fichero, en un punto concreto del texto, sólo se dispone de las definiciones que se han encontrado hasta ese punto.
Como consecuencia de este comportamiento, una variable no puede ser utilizada, a no ser que se haya declarado previamente en ese mismo fichero. Igualmente, una función no puede ser invocada a no ser que se haya incluido previamente en el mismo fichero. Para poder dividir igualmente el código en múltiples ficheros el lenguaje permite la definición de prototipos de funciones (el tipo del resultado que devuelven, seguido del nombre de la función y del tipo de sus parámetros entre paréntesis) sin incluir el código, y además permite la definición de variables como externas, es decir, que están en otro fichero. A continuación se muestran dos ficheros en los que la funciónfill_in y la variable table están definidas en un fichero pero las utiliza la función main en el otro fichero.