de pascal a c

13
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 Instrucciones Pascal C Entrada Read (a); Scanf(“%d”, &a); Salida Write (a); Printf (“%d”, a); Atribución b := a; b = a; Transferencia Condicional If condición Then begin Proceso1; end Else begin Proceso2; end; If (condición) { Proceso1; } else { Proceso2; { Repetición for i :=1 to n do begin Proceso; end; for (i = 0; i < n; i+ +) { Proceso; } While condición do Begin Proceso; End; While (condición) { Proceso; } Diego Santimateo G. CRUV – FIEC. 1

Upload: api-3753179

Post on 07-Jun-2015

3.162 views

Category:

Documents


6 download

DESCRIPTION

Breve comparación de Instrucciones Fundamentales de Pascal y C.

TRANSCRIPT

Page 1: De Pascal a C

Facultad de Informática, Electrónica y ComunicaciónProgramació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

Instrucciones Pascal C

Entrada Read (a); Scanf(“%d”, &a);Salida Write (a); Printf (“%d”, a);Atribución b := a; b = a;

Transferencia Condicional

If condiciónThen begin Proceso1; endElse begin Proceso2; end;

If (condición) { Proceso1; }else { Proceso2; {

Repetición

for i :=1 to n do begin Proceso; end;

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

While condición do Begin Proceso; End;

While (condición) { Proceso; }

Repeat Proceso;Until condición;

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

Diego Santimateo G. CRUV – FIEC. 1

Page 2: De Pascal a C

0 1 2 3 4

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

Esquema general de un programa Pascal y C

Pascal CProgram nombre; var (*declaración de variables *)

begin (* lógica del programa *) end.

#include <librería.h>main() { /* declaración de variables */

/* lógica del programa */ }

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.

EjemplosEjemplosint 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’

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

Page 3: De Pascal a C

Facultad de Informática, Electrónica y ComunicaciónProgramació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 datosLa sintaxis general de la función scanf es:

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

int “%d”Se utiliza al leer valores enteros.

float “%f”Se aplica para números reales o flotantes.

char “%c” Para lectura de caracteres.

char “%s”Para lectura de cadena de caracteres terminadas en espacio.

char “%[^\n]”Permite la entrada de cadenas que contienen espacios en blanco.

EjemplosEjemplos

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 */

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

Diego Santimateo G. CRUV – FIEC. 3

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

Page 4: De Pascal a C

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

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

Salida de datosLa 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:

EjemplosEjemplos

Instrucción Comentarioprintf (“%d” , x); /* despliega el valor de la variable entera x */

printf (“%6.2f”, ry);/* el valor de ry se ubica en un campo de seis posiciones, dos de las cuales son para los decimales */

printf (“\n nueva línea”);/* salta de línea y luego despliega la cadena*/

printf (“La edad es: %d”, edad);

/* despliega la cadena seguida del valor de edad , nótese que el lugar que ocupa %d será sustituido por el valor de la variable edad*/

printf (“El empleado que gana %f es %s”, salario, nombre);

/* el formato %f será sustituido por el valor 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:

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

EjemplosEjemplos

x = 100;

Diego Santimateo G. CRUV – FIEC. 4

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

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

Page 5: De Pascal a C

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

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:

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.

EjemplosEjemplos

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

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 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 cualquier instrucción, incluyendo otro for.

Diego Santimateo G. CRUV – FIEC. 5

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

Proceso; /*conjunto de instrucciones*/ }

Page 6: De Pascal a C

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

s = 0;for (i = 0; i < n; i++) { scanf (“%d”, &edad); s += edad; }

Cálculo de la suma de n valores enteros, en este ejemplo las edades.

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

EjemplosEjemplos

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

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 condición debe ser verdadera para poder entrar al cuerpo de la repetición, el cual debe contener la 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); i = 0;hallar = 1;

while ((hallar) && (i < n)) {

if (x [ i ] == val) hallar = 0;else i++;

}

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 condición de parada sea falsa en la siguiente verificación y se termine la repetición. 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 repetición.

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

Diego Santimateo G. CRUV – FIEC. 6

while (condición) {

Proceso; }

Mientras la condición sea verdadera se repite el Proceso.

do {

Proceso;

} while (condición);

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 for y el while.

Page 7: De Pascal a C

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

EjemplosEjemplos

i = 0;do { Proceso; i++;

} while ( i < n )

Esta instrucción 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 condición de salida. Si i<n es verdad, se repite el Proceso.

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

} while ( op ! = 9 )

Esta es la clásica presentación de un menú.

Se despliegan las opciones y luego se captura el número que corresponde a la opción deseada.

Este menú se presentará hasta que se seleccione la opción de salir.

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:

EjemplosEjemplos

If (a == 100) { Proceso; }

Presentamos un if sin else, Proceso se ejecutará cuando el valor de la variable a sea cien.

Diego Santimateo G. CRUV – FIEC. 7

if (condición) {

Proceso1; }else { Proceso2; }

La palabra then no es necesaria. El Proceso1 se realiza si la condición 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.

Page 8: De Pascal a C

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

If ((a == 100) && (p !=0)) { Proceso1; }else { Proceso2; }

Como usamos la Y lógica (&&) en la condición, 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 opción:”); scanf("%d", &op);

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

} while ( op ! = 9 )

Complementamos la construcción del menú utilizando if anidados, es decir, uno dentro de otro.

Observe además que, tenemos if dentro de un do...while.

Usted siempre puede hacer anidamiento de instrucciones según le indique la lógica que esté desarrollando.

Diego Santimateo G. CRUV – FIEC. 8