Está en la página 1de 8

Facultad de Informtica, Electrnica y Comunicacin

Programacin III - Estructuras de Datos.


De Pascal a C

Gua para uso del lenguaje C.


Tanto Pascal como C son lenguajes procedurales o imperativos, lo que significa que
debe tomarse en cuenta el orden en que se escriben las instrucciones de un programa. Los
lenguajes procedurales tienen un conjunto de instrucciones que de manera general y segn
el concepto de programacin estructurada de Edsger Dijkstra, pueden considerarse
comunes. La diferencia entonces la encontramos en la sintaxis de cada lenguaje, aunque en
muchos casos son muy parecidas.
Cuadro Comparativo de Instrucciones fundamentales en Pascal y C
Instrucciones
Entrada
Salida
Atribucin

Transferencia Condicional

Repeticin

Diego Santimateo G.

Pascal

Read (a);
Write (a);
b := a;
If condicin
Then
begin
Proceso1;
end
Else
begin
Proceso2;
end;
for i :=1 to n do
begin
Proceso;
end;

Scanf(%d, &a);
Printf (%d, a);
b = a;
If (condicin)
{
Proceso1;
}
else
{
Proceso2;
{

While condicin do
Begin
Proceso;
End;

While (condicin)
{
Proceso;
}

Repeat
Proceso;
Until condicin;

Do

for (i = 0; i < n; i++)


{
Proceso;
}

{
Proceso;
} While (condicin);

CRUV FIEC.

Facultad de Informtica, Electrnica y Comunicacin


Programacin III - Estructuras de Datos.
De Pascal a C

Esquema general de un programa Pascal y C


Pascal

Program nombre;
var
(*declaracin de variables *)

#include <librera.h>
main()
{
/* declaracin de variables */

begin
(* lgica del programa *)
end.

/* lgica del programa */


}

Las declaraciones en C
En C como en otros lenguajes la declaracin incluye el nombre de la variable y el tipo
de dato que puede almacenar la variable. Los tipos de datos bsicos en C son: int, flotat,
double y char que corresponden a valores enteros, reales, reales con doble precisin y
caracteres o cadena de caracteres.
Ejemplos

int
char
flotat
double

a,b, c[20], mat[10][7];


x, des[15];
peso, medidas[20];
raiz;

Los arreglos en C siempre inician en la posicin cero (0). Una cadena de caracteres
es almacenada en un vector y cada carcter de la cadena queda en una posicin del mismo
y automticamente se incluye el carcter de fin de cadena que es el '\0, as como se ilustra a
continuacin:
M A R \0
0 1 2 3 4

Operadores aritmticos, de relacin y lgicos en C


Aritmticos
+ ... suma
- ...resta
* ...multiplicacin
/ ...divisin
% ..residuo de divisin entera

>
>=
<
<=
==
!=

Relacin
Lgicos
mayor que
! ...negacin
mayor o igual
&& ...Y
menor que
|| ...O
menor o igual que
igual a
diferente de

Las expresiones lgicas representan valores numricos, as uno (1) corresponde a


verdadero o cierto y cero (0) a falso.
Diego Santimateo G.

CRUV FIEC.

Facultad de Informtica, Electrnica y Comunicacin


Programacin III - Estructuras de Datos.
De Pascal a C

Instrucciones Fundamentales
En realidad el C no tiene instrucciones de entrada y salida, para realizar estas tarea
se vale de funciones de librera como scanf y printf, que son las que utilizaremos en este
curso.
Entrada de datos
La sintaxis general de la funcin scanf es:
scanf (formato de conversin, lista de direcciones de memoria de las variables);
Los formatos de conversin brindan informacin sobre el tipo de dato que desea
capturarse y la estructura de ingreso de los mismos. Ntese que la funcin scanf exige que
en el segundo argumento se ingresen las direcciones de las variable y no los nombres de las
variables. En C podemos indicar la direccin de una variable utilizando el operador de
direccin & que proporciona la direccin del operando, es decir si x es una variable
entonces &x es la direccin de la variable x.
En la siguiente tabla presentamos los formatos de conversin
Tipo de dato

Formato de conversin

int

%d

float

%f

char

%c

char

%s

char

%[^\n]

Explicacin
Se utiliza al leer valores
enteros.
Se aplica para nmeros
reales o flotantes.
Para lectura de caracteres.
Para lectura de cadena de
caracteres terminadas en
espacio.
Permite la entrada de
cadenas que contienen
espacios en blanco.

Ejemplos
scanf (%d , &x);
/* lectura de la variable entera x */
scanf (%3d, &x);
/* lectura de la variable entera x de tres dgitos */
scanf (%f %d %c, &a, &b, &a);
o /* conviene dejar un espacio en blanco entre formatos y dejarlos tambin al
introducir los datos o bien usar enter despus de cada valor de entrada*/
scanf (%d %s, &edad, nombre);
o /* observe que los vectores tipo char que almacenan cadenas no utilizan el
operador de direccin & ya que el nombre del vector representa la direccin de
memoria */
Diego Santimateo G.

CRUV FIEC.

Facultad de Informtica, Electrnica y Comunicacin


Programacin III - Estructuras de Datos.
De Pascal a C
scanf (%[^\n], corregimiento); /* se captura el corregimiento incluyendo espacios */
scanf (%[aeiou], texto);
/* solo acepta vocales minsculas */
Salida de datos
La salida al igual que la entrada se puede lograr utilizando diversas funciones, no
obstante, en este curso emplearemos la funcin printf(), cuya sintaxis es:
printf (formato de conversin y/o cadena, lista de nombres de las variables);
Ejemplos
Instruccin
printf (%d , x);
printf (%6.2f, ry);
printf (\n nueva lnea);
printf (La edad es: %d, edad);
printf (El empleado que gana %f es %s,
salario, nombre);
printf (%-5d, cant)

Comentario
/* despliega el valor de la variable entera x */
/* el valor de ry se ubica en un campo de
seis posiciones, dos de las cuales son para
los decimales */
/* salta de lnea y luego despliega la
cadena*/
/* despliega la cadena seguida del valor de
edad , ntese que el lugar que ocupa %d
ser sustituido por el valor de la variable
edad*/
/* el formato %f ser sustituido por el valor
de salario y %s por el nombre de la persona
*/
/* el valor se ajusta por la izquierda dentro
del campo de tamao cinco */

Atribucin o asignacin
Esta instruccin asigna un valor a una variable, desde una posicin de memoria a
otra. Observe que en la entrada de datos tambin se consigue la asignacin de valores a
variables, solo que los valores provienen de algn perifrico. La sintaxis general es:
variable==variable
variableooconstante
constanteooexpresin;
expresin;
variable

La constante no
puede ser una
cadena

Es importante recordar que la asignacin se hace a partir del miembro derecho del =
hacia la variable que est en la izquierda.
Ejemplos
Diego Santimateo G.

CRUV FIEC.

Facultad de Informtica, Electrnica y Comunicacin


Programacin III - Estructuras de Datos.
De Pascal a C

x = 100;
c = \0;
p = 0.3e5;
swt = f;
pi = 3.14159;

Algunas asignaciones en C se consideran operadores de asignacin, tales como las


siguientes:
Operador
+=
-=
*=
/=
%=
++
++
--

Ejemplo
a += b;
a -= b;
a *= b;
a /= b;
a %= b;
++i
i++
--i

Significado
a = a + b;
a = a - b;
a = a * b;
a = a / b;
a = a % b;
i = i +1 modifica i antes de usarla para otro propsito
i = i +1 modifica i despus de usarla para otro propsito
i = i -1

Repeticiones o ciclos
Una de las instrucciones ms poderosas de los lenguajes de programacin es la que
permite repetir un nmero finito de veces un proceso. En los lenguajes procedurales
usualmente existen las siguientes tres formas de repeticin:
El for cuya sintaxis es:
for (inicializacin; control de salida; actualizacin de variable de control)
{
Proceso;
/*conjunto de instrucciones*/
}
En C a diferencia de Pascal las expresiones que controlan el for deben estar entre
parntesis. La inicializacin se refiere a la asignacin inicial de la variable que controla la
repeticin (variable de control), el control de salida es la condicin de parada de la repeticin
y la actualizacin es la expresin que modifica a la variable de control a fin de alcanzar en
algn momento la condicin de parada para poder salir del ciclo.
Ejemplos
for (i = 0; i < n; i++)
{
Proceso;
}

Diego Santimateo G.

La variable de control i se inicializa en cero, se verifica si


i < n, si es verdad se realiza el Proceso y luego se
incrementa la i con la expresin i++, si i < n es falsa
termina el for .
Recuerde que Proceso es una secuencia ordenada de
instrucciones, lo que significa que puede contener

CRUV FIEC.

Facultad de Informtica, Electrnica y Comunicacin


Programacin III - Estructuras de Datos.
De Pascal a C
cualquier instruccin, incluyendo otro for.

s = 0;
for (i = 0; i < n; i++)
{
Clculo de la suma de n valores enteros, en este
scanf (%d, &edad); ejemplo las edades.
s += edad;
}
Otra instruccin que podemos utilizar para repetir un Proceso un nmero finito de
veces es el while:
while (condicin)
{
Proceso;
}

Ejemplos
i = 0;
while ( i < n )
{
Proceso;
i++;
}

scanf (%f, &n);


scanf("%d", &val);
i = 0;
hallar = 1;
while ((hallar) && (i < n))
{
if (x [ i ] == val)
hallar = 0;
else
i++;
}

Mientras la condicin sea


verdadera se repite el Proceso.

El while se puede usar como un for tal como lo muestra este


ejemplo. Observe que la variable de control se inicializa antes
del while y que la condicin debe ser verdadera para poder
entrar al cuerpo de la repeticin, el cual debe contener la
actualizacin de la variable de control para lograr que la
condicin sea en algn momento falsa y se termine la
repeticin.
Aqu se asume que tenemos el vector x en memoria. Se
procede a leer un valor y a buscar el valor en el vector. Como
hallar es uno (verdadero) e i<n ( las dos expresiones son
ciertas), entonces garantizamos que entre al Proceso. Cuando
encuentra el valor en el vector la variable hallar cambia a
cero(falso) lo que hace que la condicin de parada sea falsa
en la siguiente verificacin y se termine la repeticin. Si el
valor no est en el vector la variable i llega al valor n, con lo
cual (i < n) es falso y se termina la repeticin.

La otra forma de repeticin es el do...while:

do
{
Proceso;

Observe que el proceso se realiza por lo


menos una vez y que la condicin de parada
se verifica al final y no al inicio como en el
for y el while.

} while (condicin);
Diego Santimateo G.

CRUV FIEC.

Facultad de Informtica, Electrnica y Comunicacin


Programacin III - Estructuras de Datos.
De Pascal a C
Ejemplos
i = 0;
do
{

Esta instruccin se puede usar como un


for , tal como lo muestra este ejemplo.
Observe que la variable de control i se
inicializa antes del do e inmediatamente se
entra en el Proceso. Luego se actualiza la
variable de control y se verifica la condicin
de salida. Si i<n es verdad, se repite el
Proceso.

Proceso;
i++;
} while ( i < n )
do
{
printf (\n Men Principal);
printf (\n1. suma);
printf (\n2. divide);
printf (\n3. multiplica);
printf (\n9. salir);
printf (\n indique una opcin:);
scanf("%d", &op);

Esta es la clsica presentacin de un men.


Se despliegan las opciones y luego se
captura el nmero que corresponde a la
opcin deseada.
Este men se presentar hasta que se
seleccione la opcin de salir.

} while ( op ! = 9 )
La transferencia condicional
Esta instruccin permite al programador decidir que proceso desea realizar
dependiendo del resultado de la evaluacin de expresin, su sintaxis es:
if (condicin)
{
Proceso1;
}
else
{
Proceso2;
}

La palabra then no es necesaria. El


Proceso1 se realiza si la condicin es
verdadera, en caso contrario, se ejecuta el
Proceso2. La parte del else solo se usa si se
necesita, es decir, no siempre el if lleva else.

Ejemplos
If (a == 100)
{
Proceso;
}
Diego Santimateo G.

Presentamos un if sin else,


Proceso se ejecutar cuando el
valor de la variable a sea cien.

CRUV FIEC.

Facultad de Informtica, Electrnica y Comunicacin


Programacin III - Estructuras de Datos.
De Pascal a C
If ((a == 100) && (p !=0))
{
Proceso1;
}
else
{
Proceso2;
}

Como usamos la Y lgica (&&) en la


condicin, entonces, el Proceso2 se
realizar cuando una de las dos
condiciones no se cumpla o cuando
las dos sean falsas.

do
{
printf (\n Men Principal);
printf (\n1. suma);
printf (\n2. divide);
printf (\n3. multiplica);
printf (\n9. salir);
printf (\n indique una opcin:);
scanf("%d", &op);

Complementamos la construccin
del men utilizando if anidados, es
decir, uno dentro de otro.

if (op == 1)
/* llamar a la funcin que suma*/
else
if (op == 2)
/* llamar a la funcin que divide*/
else
if (op == 3)
/* llamar a la funcin que multiplica*/

Usted
siempre
puede
hacer
anidamiento de instrucciones segn
le indique la lgica que est
desarrollando.

Observe adems que, tenemos if


dentro de un do...while.

} while ( op ! = 9 )

Diego Santimateo G.

CRUV FIEC.

También podría gustarte