Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor...

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

Transcript of Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor...

Page 1: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Codificación en C

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

Page 2: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Plantilla• Librerias

• Constantes

• Algoritmo

#include <stdio.h>#include <stdlib.h>

#define PI 3.1416

int main(void){/*Variables*//*Código en C*/

}

Page 3: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Librerias

• Las más importantes son:– De entrada y salida:#include <stdio.h>

– Operaciones estandar:#include <stdlib.h>

– Funciones matemáticas:#include <math.h>

• Para más información:– http://c.conclase.net/librerias/index.php

Page 4: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Constantes

• En realidad son macros que sustituyen un nombre por un valor antes de la compilación.

• Formato:#define nombre_cte valor

• Ejemplos:#define PI 3.1416#define VERDADERO 1#define FALSO 0#define PI2 PI*PI

Page 5: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Algoritmoint main(void){/*entradas*//*salidas*//*variables*/

/*código en C*/return(0);

}

• Dentro del algoritmo se declaran:– Entradas.– Salidas.– Variables.– Codigo en C/C++

Page 6: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Declaración de variables

• En Pseudocódigo:a1, a2: ENTERO

b: REAL

c: LOGICO

d: CARACTER

• En C:int a1,a2;

float b;//double b;

int c; //bool c; (C++) //(true, false)

char d;

Page 7: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Expresiones aritméticas• En Pseudocódigo:a1 4a2 (2*a1)+3 - 9a1 9 DIV 2a2 9 MOD 2b 9 / 2b a1 / a2c FALSO

c VERDAD

d 'a'

• En C:a1 = 4;a2 = (2*a1)+3-9;a1 = 9 / 2;a2 = 9 % 2;b = 9.0 / 2.0;b = a1 / (float)a2;c = FALSO;

//c = 0; //c = false;c = VERDAD;

//c = 1; //c = true;d = 'a';

//d = 97; (código ASCII)

Page 8: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Expresiones lógicas

• En Pseudocódigo:

c 2 > 3c a1 < a2c (b >= 3.0) O

(a1 <= 2)

c c Y (a2 = 3)c NO cc a1 <> a2 (distinto)

• En C:

c = (2 > 3);c = (a1 < a2);c = (b >= 3.0) ||

(a1 <= 2);c = (c && (a2 == 3));c = !c;c = (a1 != a2);

Page 9: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Salida estándar• En pseudocódigo:

ESCRIBIR "hola"ESCRIBIR "el resultado es: ", a1ESCRIBIR a1, " + ", b, " = ", a1+bESCRIBIR '''SaltoDeLinea'''

• En C:printf("hola");printf("el resultado es: %i", a1);printf("%i + %f = %f", a1, b, a1+b); // |5 + 3.86000000 = 8.86000000// printf("%3i + %5.1f = %.1f", a1, b, a1+b);// |··5 + ··3.9 = 8.9

printf("\n");// \t (tabulador) \r (retorno de carro)// \b (borrar carácter)

Page 10: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Entrada estándar

• En Pseudocódigo:LEER a1LEER a2, bLEER d

• En C:scanf("%i", &a1);scanf("%i %f", &a2, &b);scanf("%c", &d); //d = getchar();

Page 11: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Condicional simple

• En Pseudocódigo:SI condición ENTONCES

ordenesFIN_SI

SI condición ENTONCESordenes

SI_NOordenes

FIN_SI

• En C:if( condición ){

ordenes}

if( condición ){ordenes

} else {ordenes

}

Page 12: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

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':ordenesbreak;

case 'b':ordenesbreak;

case 'c':ordenesbreak;

case '0':ordenesbreak;

[ default: ordenes ]}

Page 13: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Estructura cíclica (PARA)

• En Pseu docódigo:PARA cont inicio HASTA fin [C.I. incr] HACER

sentenciasFIN_PARA

• En C:for(cont=inicio; cont<=fin; cont=cont+incr){sentencias

}

cont>=fin

Si se utiliza decremento cambia la condición

Page 14: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Ejemplo de PARA

• En Pseudocódigo:PARA cont 0 HASTA 10 HACERsentencias

FIN_PARA

• En C:for(cont=0; cont<=10; cont=cont+1){sentencias

}cont++

cont+=1

Page 15: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Ejemplo de PARA

• En Pseudocódigo:PARA cont 20 HASTA 10 C.I. -1 HACERsentencias

FIN_PARA

• En C:for(cont=20; cont>=10; cont=cont-1){sentencias

}cont--

cont-=1

Page 16: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Estructura cíclica (MIENTRAS)

• En Pseudocódigo:MIENTRAS condición HACERsentencias

FIN_MIENTRAS

• En C:while( condición ){sentencias

}

Page 17: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Ejemplo de MIENTRAS

• En Pseudocódigo:MIENTRAS edad=50 HACERsentencias

FIN_MIENTRAS

• En C:while( edad == 50 ){sentencias

}

Page 18: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Estructura cíclica(REPETIR … HASTA)

• En Pseudocódigo:REPETIRsentencias

HASTA condición

• En C:do{sentencias;

}while( !(condición) );

Page 19: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Ejemplo REPETIR … HASTA

• En Pseudocódigo:REPETIRsentencias

HASTA a>b

• En C:do{sentencias;

}while( !(a>b) ); (a <= b)

Page 20: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Arrays (Declaración)

• En Pseudocódigo:Notas: ARRAY (0..20) DE REALESEdad: ARRAY (1..100) DE ENTEROSA: ARRAY (30..40) DE ENTEROSTablero: ARRAY (1..8,1..8) DE CARACTERES

• En C:float Notas[21];int Edad[101];int A[11];char Tablero[8][8];

No utilizamos la posición 0

Page 21: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Arrays (uso)

• En Pseudocódigo:Notas(5) 2.5Edad(22) Edad(15) + 1A(32) A(num+1) * 35LEER Tablero(8,8)

• En C:Notas[5] = 2.5;Edad[22] = Edad[15] + 1;A[32-30] = A[(num+1)-30] * 35;scanf(“%c”, &Tablero[8-1][8-1]);

“num” es una variable entera

Page 22: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Funciones (Declaración)• En Pseudocódigo:FUNCION Nombre( parametros ): TipoENTRADAS:SALIDAS:VARIABLES:INICIO

...DEVOLVER valor

FIN

• En C:Tipo Nombre( parametros ){

...return valor;

}

Page 23: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Funciones (Ejemplo declaración)

• En Pseudocódigo:FUNCION Suma(a, b): ENTEROENTRADAS:a: ENTEROb: ENTERO

SALIDAS:La suma de los 2 números

...

• En C:int Suma(int a, int b)...

Page 24: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Funciones (Uso)

• En Pseudocódigo:valor Suma(3, 2)ESCRIBIR Suma(valor,8)valor 8 * Suma(Suma(valor,2),6)

• En C:valor = Suma(3,2);printf(“%i”, Suma(valor,8) );valor = 8 * Suma(Suma(valor,2),6);

Page 25: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Procedimientos (Declaración)• En Pseudocódigo:PROCEDIMIENTO Nombre( parametros )ENTRADAS:SALIDAS:VARIABLES:INICIO

...FIN

• En C:void Nombre( parametros ){

...}

Page 26: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Procemientos(Ejemplo declaración)

• En Pseudocódigo:PROCEDIMIENTO Suma(a, b, VAR resul)ENTRADAS:a: ENTEROb: ENTERO

SALIDAS:resul: ENTERO...

• En C:void Suma(int a, int b, int &resul)...

Page 27: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Procemientos(Ejemplo declaración)

• En Pseudocódigo:PROCEDIMIENTO Intercambia(VAR a, VAR b)ENTRADAS:a, b: ENTEROS

SALIDAS:a, b: ENTEROS (Valores intercambiados)...

• En C:void Intercambia(int &a, int &b)...

Page 28: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Procemientos(Ejemplo declaración)

• En Pseudocódigo:PROCEDIMIENTO Ordena(VAR vector, tama)ENTRADAS:

vector: ARRAY(0..1000) DE REALES (desordenado)tama: ENTERO

SALIDAS:vector: ARRAY(0..1000) DE REALES (ordenado)

...

• En C:void Ordena(int vector[1001], int tama)...

Los arrays siempre se pasan por referencia en C

Page 29: Codificación en C · Constantes • En realidad son macros que sustituyen un nombre por un valor antes de la compilación. • Formato: #define nombre_cte valor • Ejemplos: #define

Procedimientos (Uso)

• En Pseudocódigo:Suma( maximo-3, 2, valor )Intercambia( maximo, valor )Ordena( notas, 97 )

• En C:Suma( maximo-3, 2, valor );Intercambia( maximo, valor );Ordena( notas, 97 );