Académique Documents
Professionnel Documents
Culture Documents
C es un lenguaje sensible a mayúsculas y minúsculas, por lo tanto hace diferencia entre una palabra escrita
total o parcialmente con mayúsculas y otra escrita completamente con minúsculas.
Un identificador es cualquier palabra no reservada que comience por una letra o por un subrayado, pudiendo
contener en su interior letras, números y subrayados. La longitud máxima de un identificador depende del
compilador que se este usando, pero, generalmente, suelen ser de 32 caracteres.
Existen cuatro modificadores para los tipos de letras, los cuales son signed, unsigned, long y short. Los
modificadores signed y unsigned actúan sobre los tipos char e int (signed aplica por defecto sobre estos
tipos), long aplica sobre int y doublé y short aplica sobre int.
Es posible aplicar dos modificadores seguidos a un mismo tipo de dato, por ejemplo: unsigned long int. El
rango de valores que permite cada variable depende del sistema operativo sobre el cual se trabaje (pueden
ser de 16, 32 o 64 bits).
Las palabras auto, extern, static y register sirven para hacer explicito el alcance de una variable.
3.- Constantes
Son valores fijos que no pueden modificarse, si queremos asignar un valor constante a un identificador (de tal
forma que ese valor no pueda modificarse) podemos emplear la instrucción const, por ejemplo:
De esta forma el identificador Pi de tipo float, siempre tendrá el valor de 3.141592 y si se intenta modificar se
generará un error.
Otro tipo de constantes son las constantes de caracteres de barra invertida que se presentan a continuación:
A continuación presentamos las tablas que contienen los operadores aritméticos (ordenados de mayor a
menor precedencia), los operadores relacionales y lógicos (ordenados de mayor a menor prioridad.
Observación:
Los operadores ++ y – tienen diferente efecto si se ponen antes o después.
Los operadores relacionales y lógicos tienen menor prioridad que los operadores aritméticos.
El operador de asignación es “=”.
El operador sizeof devuelve el tamaño de una variable o tipo de dato.
5.- Arreglos
Un arreglo es un identificador parecido a una matriz, es decir, un identificador en donde se pueden guardar
varios valores. Un arreglo unidimensional se declara: Tipo nombre[dimensión];.
Una cadena, también llamada string, es un tipo de array unidimensional, es un arreglo de caracteres que
termina con un carácter especial “\0”.
La declaración de arreglos de más de una dimensión se realiza de forma parecida a la de una dimensión, en
este caso es: Tipo nombre[dim1][dim2][dim3]…[dimK].
<Funciones o subrutinas>
7.- Librerias
Las librerías son un conjunto de funciones listas para usarse, para que sean visibles al programa, se añade el
comando del preprocesador #include. Algunas de las librerías más usadas son:
En cada lenguaje de programación hay que verificar que funciones tiene cada librería y entender que valores
recibe y cuales regresa (parecido en matemáticas, entender cual es el dominio y contradominio).
8.- Funciones
La definición de una función tiene dos componentes principales: la primera línea que es donde se hace la
declaración de los argumentos principales y el cuerpo de la función.
La primera línea especifica el tipo de valor que será devuelto por la función, seguido del nombre de la función
y opcionalmente un conjunto de argumentos separados por comas y encerrados entre paréntesis. Si la
definición de la función no incluye ningún argumento hay que incluir después del nombre d la función un par
de paréntesis vacíos. Por ejemplo: int suma(int a, int b) o void ImprimeMensaje();
La estructura general de una función está dada de la siguiente manera:
Aquí cabe aclarar que void es usado cuando la función no va a devolver un valor y que return es la instrucción
para que la función devuelva un valor en la línea donde fue llamada la función.
Instrucción Descripción
move(); Hace que Karel de un paso hacia el frente.
turnleft(); Hace que Karel gire a la izquierda 90º sin cambiar su posición.
pickbeeper(); Hace que Karel recoja un Beeper del suelo.
putbeeper(); Hace que Karel tome un Beeper de la mochila y lo coloque en el suelo
turnoff(); Apaga a Karel
iterate(n){ Instrucciones} Ejecuta la lista de instrucciones n veces.
if( condición ){ Instrucciones } Se ejecutan las instrucciones si la condición es satisfecha
if(condición){ Inst. }else{ Inst. } Igual que if, pero además se ejecutan las instrucciones de else en
caso de que la condición no sea satisfecha
while( condición ){ Instrucciones} Las instrucciones se ejecutan si la condición es satisfecha
#include <stdio.h>
int main()
{
int num1 = 10;
float pi = 3.141592;
char caracter = 'a';
char mensaje[] = "Hola";
printf("5 + 5 = %d \t El número pi es aprox: %f \n ", num1, pi);
printf("Se puede usar la palabra '%s' para saludar \n", mensaje);
printf("La primera letra del abecedario es: %c \n", caracter);
return 0;
}
Instrucción Descripción
frontIsClear Pregunta sí el frente esta libre.
frontIsBlocked Pregunta si enfrente hay una pared.
leftIsClear Pregunta si el lado izquierdo esta libre.
leftIsBlocked Pregunta si en el lado izquierdo hay una pared.
rightIsClear Pregunta si el lado derecho esta libre.
rightIsBlocked Pregunta si en el lado derecho hay una pared.
nextToABeeper Pregunta si hay un beeper en donde esta situado Karel.
notNextToABeeper Pregunta si no hay beeper en donde esta situado Karel.
facingNorth Pregunta si Karel esta volteando hacia el norte
notFacingNorth Pregunta si Karel no esta volteando hacia el norte.
facingSouth Pregunta si Karel esta volteando hacia el Sur
notFacingSouth Pregunta si Karel no esta volteando hacia el Sur.
facingEast Pregunta si Karel esta volteando hacia el Este
notFacingEast Pregunta si Karel no esta volteando hacia el Este.
facingWest Pregunta si Karel esta volteando hacia el Oeste
notFacingWest Pregunta si Karel no esta volteando hacia el Oeste.
anyBeepersInBeeperBag Pregunta si tiene algún beeper en la mochila.
noBeepersInBeeperBag Pregunta si no hay beepers en la mochila.
Cuando usamos condicionales, algunas veces nos es conveniente preguntar si dos o varias condicionantes
se cumplen y otras veces nos interesa saber si se cumple alguna de muchas condicionantes, para ello es
conveniente el uso de los operadores “Y” y “O””.
El operador “Y” se usa para verificar si dos o más condiciones son satisfechas de manera simultánea, el
operador “Y” Karel lo entiende mediante el símbolo “&&”. Es usado interponiendo el símbolo entre las
diferentes condiciones que queremos verificar, es decir, condición1 && condición2 && … && condiciónk,
dando como resultado 1 = verdadero sólo en el caso en que todas las condiciones son satisfechas.
El operador “O” se usa para verificar si al menos una de muchas condiciones es satisfecha, el operador “O”
Karel lo entiende mediante el símbolo “||”. Es usado interponiendo el símbolo entre las diferentes condiciones
que queremos verificar, es decir, condición1 || condición2 || … || condición k, dando como resultado 1 =
verdadero en el caso en que una o más de las condiciones sean satisfechas.
Errores de compilación: Estos errores ocurren cuando el compilador no entiende algo de lo que escribimos
en nuestro programa, esto puede ser debido al uso de una instrucción que no pertenece al lenguaje (esto
sucede al colocar mayúsculas o minúsculas cuando debe ser lo contrario), también cuando no cerramos
algún paréntesis o llave y también si no colocamos u omitimos el punto y coma cuando se debe.
Errores de apagones: Estos errores ocurren cuando Karel no puede realizar la instrucción que le damos,
como por ejemplo, pedirle que se mueva cuando hay una pared, recoger un beeper cuando no lo hay o
pedirle que coloque un beeper cuando no tiene beepers en la mochila.
Errores de intención: Estos errores ocurren cuando no hubieron errores de los anteriores pero al final Karel
no llevó a cabo la tarea que debería. Estos errores son más difíciles de detectar, y se debe a que el orden de
las instrucciones no es el correcto o faltaron instrucciones por hacer, por ejemplo, si queremos que Karel
avance dos lugares y deje un beeper y nosotros le indicamos que sólo avance una vez.