Vous êtes sur la page 1sur 7

Notas de C

A continuación presentamos un resumen de cosas importantes a considerar para programar en C. El entorno


de desarrollo integrado que usaremos es DevC++.

1.- Palabras reservadas

auto break case char const continue default do


double else enum extern float for goto if
int long register return short signed sizeof static
struct switch typedef union unsigned void volatile while

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.

2.- Tipo de datos y modificadores de tipos de datos.


El identificador en esencia es el nombre usado para nombrar una variable que contendrá datos, estos datos
pueden ser de diferente tipo, como por ejemplo: caracteres o números. En la siguiente tabla mostramos los
diferentes tipos de datos:

Tipo de dato Descripción


char Carácter o entero pequeño (byte)
Int Entero
float Punto flotante
double Punto flotante de mayor rango
void Sin tipo o uso especial

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 variables pueden ser declaradas en cuatro lugares:


 Fuera de todas las funciones del programa, son llamadas variables globales y son accesibles desde
cualquier parte del programa.
 Dentro de una función y es llamada variable local, accesible sólo en la función donde se declara.
 Como parámetro a la función, sólo en la función donde se declara.
 Dentro de un bloque de código del programa, accesible sólo dentro del bloque donde se declara.

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:

const float Pi = 3.141592;

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:

Constante Significado Constante Significado


\b Retroceso \0 Nulo
\f Alimentación de hoja \\ Barra invertida
\n Nueva línea \v Tabulador vertical
\r Retorno de carro \a Alerta
\t Tabulador horizontal \o Constante octal
\” Doble comilla \x Constante hexadecimal
\’ Comilla simple

4.- Operadores aritméticos, relacionales y lógicos

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.

Operador Operador Descripción Operador Descripción


++ Incremento -- Decremento
- Menos unitario
* Multiplicación / División % Módulo
+ Suma - Resta
Operadores aritméticos

Operador Operador Operador Operador


! Negación
> Mayor >= Mayor o igual < Menor <= Menor igual
== != No igual
&& And (y)
|| Or (o)
Operadores relacionales y lógicos

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].

Es posible inicializar los arreglos en el momento de declaralos, su sintaxis es:


Tipo nombre[dim1][dim2][dim3]…[dimK] = { lista_de_valores}.

6.- Estructura de programa en C


Para que Karel realice las tareas, debemos escribir un conjunto de instrucciones que llamaremos Programa.
La estructura general de un programa esta dada por:

Cabecera < Llamada a librerías y definición de variables y funciones >


main ()
{
Variables locales;
Sentencias;
}

<Funciones o subrutinas>

En la sección “Definiciones de funciones” se declaran los diferentes procedimientos que emplearemos en la


ejecución del programa, esto lo veremos más adelante.

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:

 stdio.h  Funciones básicas de entrada y salida de datos.


 math.h  Funciones comunes de matemáticas.
 string.h  Funciones para manipulación de cadenas de caracteres.
 stdlib.h  Funciones conversión de conversión de tipos, generación de números pseudo-aleatorios, etc.

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:

Tipo nombre(tipo argumento1, …, tipo argumento k)


{
sentencias;
return(Valor);

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.

9.- Instrucciones básicas


Karel sólo puede entender unas cuantas instrucciones, las instrucciones básicas que Karel puede entender se
enlistan a continuación (cabe aclarar que Karel hace diferencia entre mayúsculas y minúsculas):

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

10.- Printf y scanf


Este par de funciones son par de la librería stdio.h. Un ejemplo de la función printf es el siguiente:

#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;
}

Obteniendo como resultado


5 + 5 = 10 El número pi es aprox: 3.141592
Se puede usar la palabra 'Hola' para saludar
La primera letra del abecedario es: a
Observación: las letras usadas son %d (entero), %f (flotante), %c (carácter), %s cadena de texto.
8.- Condicionales
Las condicionales nos arrojan un valor de 1= verdadero si la condición es satisfecha y 0 = falso si no es
satisfecha.

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.

9.- Tipos de Errores


Para que Karel pueda ejecutar una tarea completamente, debemos proporcionarle un programa bien hecho y
sin errores. Es por ello que debemos aprender que tipos de errores on los que podemos cometer y como
corregirlos.

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.

Vous aimerez peut-être aussi