Вы находитесь на странице: 1из 8

Facultad de Informática, Electrónica y Comunicación

Programación III - Estructuras de Datos.


De Pascal a C

Guía 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 según
el concepto de programación 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

Pascal C
Instrucciones
Entrada Read (a); Scanf(“%d”, &a);
Salida Write (a); Printf (“%d”, a);
Atribución b := a; b = a;
If condición If (condición)
Then {
begin Proceso1;
Proceso1; }
Transferencia Condicional end else
Else {
begin Proceso2;
Proceso2; {
end;
for i :=1 to n do for (i = 0; i < n; i++)
begin {
Proceso; Proceso;
end; }

While condición do While (condición)


Repetición Begin {
Proceso; Proceso;
End; }

Repeat Do {
Proceso; Proceso;
Until condición; } While (condición);

Diego Santimateo G. CRUV – FIEC. 1


Facultad de Informática, Electrónica y Comunicación
Programación III - Estructuras de Datos.
De Pascal a C

Esquema general de un programa Pascal y C

Pascal C
Program nombre; #include <librería.h>
var main()
(*declaración de variables *) {
/* declaración de variables */
begin
(* lógica del programa *) /* lógica del programa */
end. }

Las declaraciones en C

En C como en otros lenguajes la declaración incluye el nombre de la variable y el tipo


de dato que puede almacenar la variable. Los tipos de datos básicos en C son: int, flotat,
double y char que corresponden a valores enteros, reales, reales con doble precisión y
caracteres o cadena de caracteres.

Ejemplos
int a,b, c[20], mat[10][7];
char x, des[15];
flotat peso, medidas[20];
double raiz;

Los arreglos en C siempre inician en la posición cero (0). Una cadena de caracteres
es almacenada en un vector y cada carácter de la cadena queda en una posición del mismo
y automáticamente se incluye el carácter de fin de cadena que es el '\0’, así como se ilustra a
continuación:
M A R ‘\0’
0 1 2 3 4

Operadores aritméticos, de relación y lógicos en C

Aritméticos Relación Lógicos


+ ... suma > mayor que ! ...negación
- ...resta >= mayor o igual && ...Y
* ...multiplicación < menor que || ...O
/ ...división <= menor o igual que
% ..residuo de división entera == igual a
!= diferente de

Las expresiones lógicas representan valores numéricos, así uno (1) corresponde a
verdadero o cierto y cero (0) a falso.

Diego Santimateo G. CRUV – FIEC. 2


Facultad de Informática, Electrónica y Comunicación
Programación 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 librería como scanf y printf, que son las que utilizaremos en este
curso.

Entrada de datos
La sintaxis general de la función scanf es:

scanf (“formato de conversión”, lista de direcciones de memoria de las variables);

Los formatos de conversión brindan información sobre el tipo de dato que desea
capturarse y la estructura de ingreso de los mismos. Nótese que la función 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 dirección de una variable utilizando el operador de
dirección & que proporciona la dirección del operando, es decir si x es una variable
entonces &x es la dirección de la variable x.

En la siguiente tabla presentamos los formatos de conversión

Tipo de dato Formato de conversión Explicación


Se utiliza al leer valores
int “%d”
enteros.
Se aplica para números
float “%f”
reales o flotantes.
char “%c” Para lectura de caracteres.
Para lectura de cadena de
char “%s” caracteres terminadas en
espacio.
Permite la entrada de
char “%[^\n]” 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 dígitos */
 scanf (“%f %d %c”, &a, &b, &a);
o /* conviene dejar un espacio en blanco entre formatos y dejarlos también al
introducir los datos o bien usar enter después 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 dirección & ya que el nombre del vector representa la dirección de
memoria */

Diego Santimateo G. CRUV – FIEC. 3


Facultad de Informática, Electrónica y Comunicación
Programación III - Estructuras de Datos.
De Pascal a C

 scanf (“%[^\n]”, corregimiento); /* se captura el corregimiento incluyendo espacios */


 scanf (“%[aeiou]”, texto); /* solo acepta vocales minúsculas */

Salida de datos
La salida al igual que la entrada se puede lograr utilizando diversas funciones, no
obstante, en este curso emplearemos la función printf(), cuya sintaxis es:

printf (“formato de conversión y/o cadena”, lista de nombres de las variables);

Ejemplos

Instrucción Comentario
printf (“%d” , x); /* despliega el valor de la variable entera x */
/* el valor de ry se ubica en un campo de
printf (“%6.2f”, ry); seis posiciones, dos de las cuales son para
los decimales */
/* salta de línea y luego despliega la
printf (“\n nueva línea”);
cadena*/
/* despliega la cadena seguida del valor de
edad , nótese que el lugar que ocupa %d
printf (“La edad es: %d”, edad);
será sustituido por el valor de la variable
edad*/
printf (“El empleado que gana %f es %s”, /* el formato %f será sustituido por el valor
salario, nombre); de salario y %s por el nombre de la persona
*/
printf (“%-5d”, cant) /* el valor se ajusta por la izquierda dentro
del campo de tamaño cinco */

Atribución o asignación
Esta instrucción asigna un valor a una variable, desde una posición de memoria a
otra. Observe que en la entrada de datos también se consigue la asignación de valores a
variables, solo que los valores provienen de algún periférico. La sintaxis general es:

La constante no
variable = variable o constante o expresión; puede ser una
cadena

Es importante recordar que la asignación se hace a partir del miembro derecho del =
hacia la variable que está en la izquierda.

Ejemplos

Diego Santimateo G. CRUV – FIEC. 4


Facultad de Informática, Electrónica y Comunicación
Programación 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 asignación, tales como las


siguientes:

Operador Ejemplo Significado


+= a += b; a = a + b;
-= a -= b; a = a - b;
*= a *= b; a = a * b;
/= a /= b; a = a / b;
%= a %= b; a = a % b;
++ ++i i = i +1 …modifica i antes de usarla para otro propósito
++ i++ i = i +1 …modifica i después de usarla para otro propósito
-- --i i = i -1

Repeticiones o ciclos
Una de las instrucciones más poderosas de los lenguajes de programación es la que
permite repetir un número finito de veces un proceso. En los lenguajes procedurales
usualmente existen las siguientes tres formas de repetición:

El for cuya sintaxis es:

for (inicialización; control de salida; actualización de variable de control)


{
Proceso; /*conjunto de instrucciones*/
}

En C a diferencia de Pascal las expresiones que controlan el for deben estar entre
paréntesis. La inicialización se refiere a la asignación inicial de la variable que controla la
repetición (variable de control), el control de salida es la condición de parada de la repetición
y la actualización es la expresión que modifica a la variable de control a fin de alcanzar en
algún momento la condición de parada para poder salir del ciclo.

Ejemplos

for (i = 0; i < n; i++) La variable de control i se inicializa en cero, se verifica si


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

Diego Santimateo G. CRUV – FIEC. 5


Facultad de Informática, Electrónica y Comunicación
Programación III - Estructuras de Datos.
De Pascal a C

cualquier instrucción, incluyendo otro for.


s = 0;
for (i = 0; i < n; i++)
{ Cálculo de la suma de n valores enteros, en este
scanf (“%d”, &edad); ejemplo las edades.
s += edad;
}

Otra instrucción que podemos utilizar para repetir un Proceso un número finito de
veces es el while:

while (condición) Mientras la condición sea


{ verdadera se repite el Proceso.
Proceso;
}
Ejemplos

i = 0; El while se puede usar como un for tal como lo muestra este


while ( i < n ) ejemplo. Observe que la variable de control se inicializa antes
{ del while y que la condición debe ser verdadera para poder
Proceso; entrar al cuerpo de la repetición, el cual debe contener la
i++; actualización de la variable de control para lograr que la
} condición sea en algún momento falsa y se termine la
repetición.
scanf (“%f”, &n);
scanf("%d", &val);
Aquí se asume que tenemos el vector x en memoria. Se
i = 0;
procede a leer un valor y a buscar el valor en el vector. Como
hallar = 1;
hallar es uno (verdadero) e i<n ( las dos expresiones son
ciertas), entonces garantizamos que entre al Proceso. Cuando
while ((hallar) && (i < n))
encuentra el valor en el vector la variable hallar cambia a
{
cero(falso) lo que hace que la condición de parada sea falsa
if (x [ i ] == val)
en la siguiente verificación y se termine la repetición. Si el
hallar = 0;
valor no está en el vector la variable i llega al valor n, con lo
else
cual (i < n) es falso y se termina la repetición.
i++;
}

La otra forma de repetición es el do...while:

do Observe que el proceso se realiza por lo


{ menos una vez y que la condición de parada
se verifica al final y no al inicio como en el
Proceso; for y el while.
} while (condición);
Diego Santimateo G. CRUV – FIEC. 6
Facultad de Informática, Electrónica y Comunicación
Programación III - Estructuras de Datos.
De Pascal a C

Ejemplos

i = 0; Esta instrucción se puede usar como un for


do , tal como lo muestra este ejemplo. Observe
{ que la variable de control i se inicializa
Proceso; antes del do e inmediatamente se entra en
i++; el Proceso. Luego se actualiza la variable
de control y se verifica la condición de salida.
} while ( i < n ) Si i<n es verdad, se repite el Proceso.

do
{
printf (“\n Menú Principal”); Esta es la clásica presentación de un menú.
printf (“\n1. suma”);
printf (“\n2. divide”); Se despliegan las opciones y luego se
printf (“\n3. multiplica”); captura el número que corresponde a la
printf (“\n9. salir”); opción deseada.
printf (“\n indique una opción:”);
scanf("%d", &op); Este menú se presentará hasta que se
seleccione la opción de salir.
} while ( op ! = 9 )

La transferencia condicional
Esta instrucción permite al programador decidir que proceso desea realizar
dependiendo del resultado de la evaluación de expresión, su sintaxis es:
if (condición)
{
La palabra then no es necesaria. El
Proceso1;
Proceso1 se realiza si la condición es
}
verdadera, en caso contrario, se ejecuta el
else
Proceso2. La parte del else solo se usa si se
{
necesita, es decir, no siempre el if lleva else.
Proceso2;
}

Ejemplos

If (a == 100) Presentamos un if sin else,


{ Proceso se ejecutará cuando el
Proceso; valor de la variable a sea cien.
}

Diego Santimateo G. CRUV – FIEC. 7


Facultad de Informática, Electrónica y Comunicación
Programación III - Estructuras de Datos.
De Pascal a C

If ((a == 100) && (p !=0))


{
Como usamos la Y lógica (&&) en la
Proceso1;
condición, entonces, el Proceso2 se
}
realizará cuando una de las dos
else
condiciones no se cumpla o cuando
{
las dos sean falsas.
Proceso2;
}
do
{
printf (“\n Menú Principal”);
printf (“\n1. suma”);
printf (“\n2. divide”); Complementamos la construcción
printf (“\n3. multiplica”); del menú utilizando if anidados, es
printf (“\n9. salir”); decir, uno dentro de otro.
printf (“\n indique una opción:”);
scanf("%d", &op);
Observe además que, tenemos if
if (op == 1)
dentro de un do...while.
/* llamar a la función que suma*/
else Usted siempre puede hacer
if (op == 2) anidamiento de instrucciones según
/* llamar a la función que divide*/ le indique la lógica que esté
else desarrollando.
if (op == 3)
/* llamar a la función que multiplica*/

} while ( op ! = 9 )

Diego Santimateo G. CRUV – FIEC. 8

Вам также может понравиться