You are on page 1of 29

Codificación en C

Como pasar de Pseudocódigo a C (con pequeños trucos de C++)

Plantilla
• Librerias #include <stdio.h> #include <stdlib.h> #define PI 3.1416 int main(void){ /*Variables*/ /*Código en C*/ }

• Constantes

• Algoritmo

net/librerias/index.h> – Funciones matemáticas: #include <math.h> • Para más información: – http://c.Librerias • Las más importantes son: – De entrada y salida: #include <stdio.conclase.h> – Operaciones estandar: #include <stdlib.php .

1416 VERDADERO 1 FALSO 0 PI2 PI*PI . • Formato: #define nombre_cte valor • Ejemplos: #define #define #define #define PI 3.Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación.

Codigo en C/C++ int main(void){ /*entradas*/ /*salidas*/ /*variables*/ /*código en C*/ return(0). Variables. } .Algoritmo • Dentro del algoritmo se declaran: – – – – Entradas. Salidas.

a2: ENTERO b: REAL c: LOGICO d: CARACTER • En C: int a1. .Declaración de variables • En Pseudocódigo: a1. float b. (C++) //(true. //bool c. false) char d. //double b. int c.a2.

d = 'a'. //c = 0.0. = 9 / 2. //c = 1. = FALSO. //d = 97. = 9 % 2. //c = true. c = VERDAD.Expresiones aritméticas • En Pseudocódigo: a1 a2 a1 a2 b b c c d 4 (2*a1)+3 . = a1 / (float)a2.9 9 DIV 2 9 MOD 2 9 / 2 a1 / a2 FALSO VERDAD 'a' • En C: a1 a2 a1 a2 b b c = 4. //c = false. = 9. = (2*a1)+3-9.0 / 2. (código ASCII) .

0) || (a1 <= 2).Expresiones lógicas • En Pseudocódigo: c c c c c c 2 > 3 a1 < a2 (b >= 3. c = (c && (a2 == 3)). c = (a1 != a2). . c = (a1 < a2). c = (b >= 3.0) O (a1 <= 2) c Y (a2 = 3) NO c a1 <> a2 (distinto) • En C: c = (2 > 3). c = !c.

a1. a1+b).9 printf("\n").1f". a1 a1. // |5 + 3.1f = %. a1). printf("el resultado es: %i". // |··5 + ··3. b.Salida estándar • En pseudocódigo: ESCRIBIR ESCRIBIR ESCRIBIR ESCRIBIR "hola" "el resultado es: ". a1. a1+b '''SaltoDeLinea''' • En C: printf("hola").9 = 8. a1+b).86000000 // printf("%3i + %5.86000000 = 8. b. printf("%i + %f = %f". // \t (tabulador) \r (retorno de carro) // \b (borrar carácter) . " = ". " + ". b.

&b). b LEER d • En C: scanf("%i". &a1). . &d).Entrada estándar • En Pseudocódigo: LEER a1 LEER a2. &a2. scanf("%i %f". scanf("%c". //d = getchar().

Condicional simple • En Pseudocódigo: SI condición ENTONCES ordenes FIN_SI SI condición ENTONCES ordenes SI_NO ordenes FIN_SI • En C: if( condición ){ ordenes } if( condición ){ ordenes } else { ordenes } .

Condicional compuesto • En Pseudocódigo: EN CASO DE QUE d VALGA HACER 'a': ordenes 'b': ordenes 'c': ordenes '0': ordenes [ EN OTRO CASO: ordenes ] FIN_CASO • En C: switch(d){ case 'a': ordenes break. case '0': ordenes break. case 'c': ordenes break. [ default: ordenes } ] . case 'b': ordenes break.

Estructura cíclica (PARA) • En Pseu docódigo: PARA cont inicio HASTA fin [C.I. incr] HACER sentencias FIN_PARA • En C: for(cont=inicio. cont<=fin. cont=cont+incr){ sentencias Si se utiliza decremento } cambia la condición cont>=fin .

cont=cont+1){ sentencias } cont++ cont+=1 . cont<=10.Ejemplo de PARA • En Pseudocódigo: PARA cont 0 HASTA 10 sentencias FIN_PARA HACER • En C: for(cont=0.

Ejemplo de PARA • En Pseudocódigo: PARA cont 20 HASTA 10 sentencias FIN_PARA C. cont=cont-1){ sentencias } cont-cont-=1 .I. -1 HACER • En C: for(cont=20. cont>=10.

Estructura cíclica (MIENTRAS) • En Pseudocódigo: MIENTRAS condición HACER sentencias FIN_MIENTRAS • En C: while( condición ){ sentencias } .

Ejemplo de MIENTRAS • En Pseudocódigo: MIENTRAS edad=50 HACER sentencias FIN_MIENTRAS • En C: while( edad == 50 ){ sentencias } .

}while( !(condición) ). .Estructura cíclica (REPETIR … HASTA) • En Pseudocódigo: REPETIR sentencias HASTA condición • En C: do{ sentencias.

(a <= b) .Ejemplo REPETIR … HASTA • En Pseudocódigo: REPETIR sentencias HASTA a>b • En C: do{ sentencias. }while( !(a>b) ).

8...8) DE CARACTERES • En C: float Notas[21]..1. int Edad[101]. char Tablero[8][8].Arrays (Declaración) • En Pseudocódigo: Notas: ARRAY (0. int A[11].. No utilizamos la posición 0 .100) DE ENTEROS A: ARRAY (30.20) DE REALES Edad: ARRAY (1.40) DE ENTEROS Tablero: ARRAY (1..

A[32-30] = A[(num+1)-30] * 35.Arrays (uso) • En Pseudocódigo: Notas(5) 2.8) “num” es una variable entera • En C: Notas[5] = 2. &Tablero[8-1][8-1]).5 Edad(22) Edad(15) + 1 A(32) A(num+1) * 35 LEER Tablero(8.5. . scanf(“%c”. Edad[22] = Edad[15] + 1.

. } . return valor..Funciones (Declaración) • En Pseudocódigo: FUNCION Nombre( parametros ): Tipo ENTRADAS: SALIDAS: VARIABLES: INICIO ... DEVOLVER valor FIN • En C: Tipo Nombre( parametros ) { .

int b) .... • En C: int Suma(int a. .. b): ENTERO ENTRADAS: a: ENTERO b: ENTERO SALIDAS: La suma de los 2 números .Funciones (Ejemplo declaración) • En Pseudocódigo: FUNCION Suma(a.

8) valor 8 * Suma(Suma(valor. printf(“%i”. valor = 8 * Suma(Suma(valor.2). 2) ESCRIBIR Suma(valor. Suma(valor. .2).8) ).6).Funciones (Uso) • En Pseudocódigo: valor Suma(3.6) • En C: valor = Suma(3.2).

.Procedimientos (Declaración) • En Pseudocódigo: PROCEDIMIENTO Nombre( parametros ) ENTRADAS: SALIDAS: VARIABLES: INICIO ... } .. FIN • En C: void Nombre( parametros ) { .

b.Procemientos (Ejemplo declaración) • En Pseudocódigo: PROCEDIMIENTO Suma(a.. • En C: void Suma(int a. int &resul) .. VAR resul) ENTRADAS: a: ENTERO b: ENTERO SALIDAS: resul: ENTERO . int b.. ..

b: ENTEROS SALIDAS: a... b: ENTEROS (Valores intercambiados) .. • En C: void Intercambia(int &a. .. int &b) . VAR b) ENTRADAS: a.Procemientos (Ejemplo declaración) • En Pseudocódigo: PROCEDIMIENTO Intercambia(VAR a.

Procemientos (Ejemplo declaración) • En Pseudocódigo: PROCEDIMIENTO Ordena(VAR vector...1000) DE REALES (desordenado) tama: ENTERO SALIDAS: vector: ARRAY(0.1000) DE REALES (ordenado) .. tama) ENTRADAS: vector: ARRAY(0... int tama) .. • En C: void Ordena(int vector[1001]. Los arrays siempre se pasan por referencia en C .

97 ). valor ) Ordena( notas. Ordena( notas. valor ). . Intercambia( maximo. 2. 97 ) • En C: Suma( maximo-3. valor ). valor ) Intercambia( maximo. 2.Procedimientos (Uso) • En Pseudocódigo: Suma( maximo-3.