Vous êtes sur la page 1sur 6

1

CODIFICACION DE ALGORITMOS EN LENGUAJE C / C++



Ing. Fernando P. Gusp

La presente gua complementa los temas de algortmica desarrollados en el curso de Informtica,
introduciendo elementos bsicos del lenguaje C que posibilitan al alumno la prueba inmediata y
depuracin en mquina de los algoritmos que ha construido en pseudocdigo durante la ejercitacin.
Se presentan as, en forma selectiva, las sentencias y estructuras necesarias para la tarea, sin entrar en
una descripcin completa de las caractersticas y posibilidades del lenguaje C.

Ejemplo de codificacin de un algoritmo

PSEUDOCODIGO C / C++

Organizacin de un programa en C

Un programa en C puede organizarse en secciones, siguiendo la lnea de los algoritmos estudiados en
el curso.

1) Seccin de declaracin o parte declarativa
El nombre del programa puede colocase en un comentario. Pueden escribirse comentarios en cualquier
parte del programa, precedidos de //. Otra forma de identificar comentarios es encerrarlos entre /* y */,
algoritmo circulos
// calcula areas de circulos
// a partir de diametros
var
entero: n
real: diam, radio, area
const
pi = 3.141592654
inicio
n 0
escribir (ingresar diametro: )
leer (diam)
repetir mientras (diam <> 0)
si (diam < 0) entonces
escribir (error diametro negativo)
sino
n n + 1
radio diam/2
area = pi * radio * radio
escribir (area = , area)
finsi
escribir (ingresar diametro: )
leer (diam)
finmientras
escribir ('se han calculado , n , ' areas)
fin

// programa circulos
// calcula areas de circulos
// a partir de diametros
#include <stdio.h>
#include <math.h>
int n;
float diam, radio, area;
const double pi = 3.141592654;
void main()
{n = 0;
printf("ingresar diametro: ");
scanf("%f",&diam);
while (diam!=0)
{if (diam<0)
printf("error diametro negativo\n");
else
{n++; // equivale a n=n+1
radio=diam/2;
area=pi*radio*radio;
printf("area = %f\n",area) ;}
printf("ingrese diametro: ");
scanf("%f",&diam) ;}
printf ("se han calculado %d",n);
printf(" areas\n");
}
2
y en este caso pueden abarcar ms de una lnea. Luego deben declararse los archivos y bibliotecas
complementarios que se van emplear y esto se hace (en forma ms o menos standard) mediante las
sentencias #include.
La declaracin de variables debe incluir todas las variables con que el programa va a trabajar. Tener en
cuenta que para los nombres de variables en C, las maysculas y las minsculas son letras distintas.
Evitar confusiones en este sentido. Los tipos bsicos de datos son:

entero: int (integer)
real de precisin ordinaria: float (floating point, punto flotante)
real de precisin doble: double
lgico: bool (boolean)
carcter: char (character)

Observar detalles de sintaxis: En C no se escribe la palabra var, no se colocan dos puntos luego del
tipo, y cada lnea termina con ;. Eventualmente C puede operar con datos complejos, para lo que se
deben incluir archivos y bibliotecas diseados a este efecto. En este curso no utilizaremos complejos.

2) Seccin de ejecucin o parte de procesos (cuerpo del algoritmo)
En correspondencia con el inicio-fin de los algoritmos, la seccin de ejecucin de un programa C
comienza con void main() seguido de una llave abierta {, y finaliza con una llave cerrada }.

Expresiones y asignaciones

Las expresiones aritmticas en C se construyen con las mismas reglas, y empleando operadores
similares a los definidos en el pseudocdigo. Las evaluacin de los operadores sigue el orden
jerrquico habitual, aclarando que el operador mod (resto de la divisin entera) se representa en C con
el smbolo %. Cuando se dividen dos enteros, el resultado es entero, es decir se truncan los decimales.
P. ej. 23 / 7 3; 23 % 7 2 . Adems, las versiones originales de C no poseen un operador
especfico para la potenciacin, pero las potencias pueden calcularse mediante la funcin de
biblioteca
pow(a, n) a elevado a la n.

Los operadores de relacin son ==, != , < , > , <= , >= . Las constantes lgicas se expresan mediante
true y false, y los operadores lgicos son (or), & (and), !(not).

En ausencia de parntesis, C evala las expresiones combinadas en el orden que empleamos en los
algoritmos, es decir: 1) aritmticas 2) relacionales 3) lgicas

El operador de asignacin, que corresponde a en seudocdigo, es =

Entrada y salida por terminal

Para ingresar desde teclado el valor de una variable, se utiliza la sentencia

scanf(codigo de formato,&nombre de variable)

Los cdigos de formato (que deben ir entre comillas) dependen del tipo de variable, y los ms usuales
son:
%d : entero
3
%f : real
%c : carcter

Para escribir en la pantalla el valor de una o ms variables o expresiones, se emplea la sentencia

printf(cadena de formato,expresion 1, expresion 2, ...)

La cadena de formato, que debe ir entre comillas, puede contener subcadenas constantes a ser exibidas,
y cdigos de formato como los de la lectura, en correspondencia con las expresiones a escribir. El
cdigo \n indica fin de lnea, o sea la escritura siguiente se har en un nuevo rengln. P- ej. si
alfa=2.35; k=4, la sentencia

printf(los resultados son: %f %d\n,alfa, k+1)

escribir en la pantalla

los resultados son 2.35 5

pasando luego al rengln siguiente.

Separacin de sentencias mediante punto y coma

Al escribir algoritmos en pseudocdigo, y en muchos lenguajes de programacinn, es habitual
considerar que cada sentencia corresponde a un rengln en el texto. C, en cambio, es un lenguaje de
formato libre. Las sentencias pueden escribirse corridas, ya sea varias en un rengln, o una abarcando
varios renglones, etc. Si bien una disposicin desordenada es absolutamente desaconsejable desde el
punto de vista de la claridad de los programas, la necesidad de distinguir las sentencias obliga a
separarlas con punto y coma. Es necesario examinar las reglas de sintaxis del lenguaje para saber qu
elementos constituyen una sentencia completa, pero en general, despus del encabezamiento de una
estructura de control no debe colocarse punto y coma, ni tampoco despus de una llave cerrada }

Estructuras y sentencias de control

Secuencia

Un conjunto de sentencias que se ejecutan consecutivamente constituye una secuencia. En C, una
secuencia puede encerrarse entre llaves { } para formar una sentencia compuesta, que a los efectos de
las sentencias de control que veremos luego, puede considerarse como una sentencia nica.

Seleccin

Seleccin simple y doble

El equivalente a: es en C:

si (expresion_logica) entonces if (expresion_logica)

acciones sentencia;

4
sino else

acciones sentencia;

finsi

Observar bien las diferencias:

a) Tanto el bloque then (entonces) como el bloque else (sino, que puede faltar) constan de una sola
sentencia. Si, para describir las acciones correspondientes, se necesitan varias sentencias, hay que
encerrarlas entre llaves { }, de manera de formar una nica sentencia compuesta.

b) Por la razn anterior, no existe en C una marca especfica de cierre de la estructura, anloga a finsi.
En realidad todo el bloque, desde if hasta el ltimo punto y coma o llave, puede considerarse como una
nica sentencia.

Seleccin mltiple

La estructura se representa en C como

segun sea (expresion) hacer switch (expresion)
{
valor1: case valor1:
acciones sentencia1;
break;
valor2: case valor2:
acciones sentencia;
break;
......
sino default:
acciones sentencia;
}
finsegun

Igual que antes, cada opcin permite ejecutar una nica sentencia. Si se necesita ejecutar varias, hay
que recurrir a las sentencias compuestas.

Iteracin o repeticin

Estructura "repetir mientras"

PSEUDOCODIGO: C:

repetir mientras (expresion_logica) while (expresion_logica)

acciones sentencia;

finmientras

donde la sentencia (nica) puede ser simple o compuesta.
5
Estructura "repetir hasta que"

PSEUDOCODIGO: C:

repetir do

acciones sentencia:

hasta que expresion_logica while (! expresion_logica)

La sentencia interior (nica) puede ser simple o compuesta. Observar que la expresin lgica al final
va precedida de la negacin !, ya que while (mientras) es lo contrario de hasta que.

Estructura "repetir para"

La estructura del pseudocdigo

repetir para indice valor_inicial, valor_final, incremento

acciones

fin_para

tiene un equivalente ms detallado en C, que se representa

for (expresion incial; expresion final; expresion de incremento)

sentencia;

En cada una de las expresiones debe aparecer el ndice de la estructura. Vemoslo con un ejemplo

repetir para i=1 hasta 10 incremento 2

se escribe en C

for (i=1; i <= 10 ; i=i+2)

Tener presente que en C hay una nica sentencia contenida en el rango de la estructura, y puede ser
simple o compuesta.

Ejemplo resumen
Leer un nmero real x, y evaluar la expresin


x
2
x
3
x
n
1 + x +
__
+
__
+ ... +
__

2! 3! n!

de tal manera que el valor absoluto del ltimo sumando sea menor que 0.001. Comparar con e
x
, pues
de acuerdo al Anlisis, la suma dada converge a dicha funcin.
6
// programa serie
#include <stdio.h>
#include <math.h>
int n;
float x, sum, ter;
void main()
{ printf ("ingresar dato x: ");
scanf ("%f",&x);
n = 1; // inicializar cantidad de terminos
sum = 0.; // inicializar suma
ter = 1.; // inic. primer termino de la suma
while (abs(ter) >= 0.001)
{ sum = sum + ter;
ter = ter * x/n; // actualizar potencia y factorial
n++; } // n++ equivale a n=n+1
sum = sum + ter; // sumar ultimo termino
printf ("exponencial de x: %f\n",exp(x)); // funcion de biblioteca
printf ("aproximacion con %d",n);
printf(" sumandos: %f\n",sum);
}


Ejercicio propuesto

Modificar el programa de la introduccin de manera que calcule dimetros de crculos en funcin de
reas. La funcin raz cuadrada es sqrt.

Vous aimerez peut-être aussi