You are on page 1of 49

Programación en Lenguaje C

Clase 2: Operadores y
Funciones

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

Temario:

– Organización de memoria en un programa


– Campo de visión
– Valor literal
– Operaciones lógicas
– Modularidad

– Declaración y definición de funciones


– Operadores aritméticos
– Operadores de incremento y decremento
– Operadores de relación
– Operadores lógicos
– Operadores a nivel de bits
– El operador condicional
– Precedencia en operadores
– Funciones recursivas
– Buenas prácticas

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

1.- CONCEPTOS Y DEFINICIONES

1.1.- Organización de memoria

¿Cómo está organizada la


memoria en un programa en C?

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

1.- CONCEPTOS Y DEFINICIONES

1.1.- Organización de memoria

Entrada Procedimiento Salida

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

1.- CONCEPTOS Y DEFINICIONES

1.1.- Organización de memoria

Ejemplo Assembler C

Número de botes Valores numéricos. Resultado de una


Datos armados hasta el operación, variables.
momento.

Dobleces aplicados Instrucciones. Sentencias, funciones,


Programa para armar los operaciones.
botes.

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

1.- CONCEPTOS Y DEFINICIONES

1.1.- Organización de memoria

Datos stack

Memoria
de
heap datos

bss
Programa
data

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

1.- CONCEPTOS Y DEFINICIONES

1.1.- Organización de memoria

Interacción con el sistema operativo.

stack Variables automáticas (locales).

heap Espacio asignado de manera dinámica.*

bss Variables estáticas (globales, locales estáticas) no inicializadas

data Variables estáticas (globales, locales estáticas) inicializadas

* Nota.- En este curso no se tratará asignación dinámica de memoria.

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

1.- CONCEPTOS Y DEFINICIONES

1.2.- Campo de visión

var var

var var
var

var

var var

var
var
var

Leyenda: MODULO BLOQUE

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

1.- CONCEPTOS Y DEFINICIONES

1.3.- Valor literal

Literal entero Literal de punto flotante

65 13.0

0x41 0.1247

0b01000001 24.75

‘A’ Caso especial 6.023e23 6.023 x 1023


(8 bits)

Formatos: Formatos:

Decimal Por defecto Notación estándar Punto decimal

Hexadecimal Prefijo 0x Notación científica Punto decimal


+
Binario Prefijo 0b Exponente

Caracter ASCII Caracter entre ‘ ’

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

1.- CONCEPTOS Y DEFINICIONES

1.4.- Operaciones lógicas

Operaciones
binarias

Operaciones
unarias

Buffer seguidor Buffer inversor

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

1.- CONCEPTOS Y DEFINICIONES

1.4.- Operaciones lógicas

“Apruebas el curso si, y


solo si, apruebas las p q r p q r
clases de teoría y
apruebas las sesiones de F F F 0 0 0
laboratorio.” F V F 0 1 0
V F F 1 0 0
V V V 1 1 1
p: apruebas las clases de teoría

q: apruebas las sesiones de laboratorio


Conjunción lógica Operación AND
r: apruebas el curso r↔p∧q r=p.q

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

1.- CONCEPTOS Y DEFINICIONES

1.4.- Operaciones lógicas

“Solo saldrás a jugar


fútbol si terminas de p q r p q r
limpiar tu cuarto, o si
terminas de hacer tu F F F 0 0 0
tarea.” F V V 0 1 1
V F V 1 0 1
V V V 1 1 1
p: terminas de limpiar tu cuarto
Disyunción lógica
q: terminas de hacer tu tarea
inclusiva Operación OR
r: sales a jugar fútbol r↔p∨q r=p+q

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

1.- CONCEPTOS Y DEFINICIONES

1.4.- Operaciones lógicas

“El estado de una puerta


es válido en uno de dos p q r p q r
casos: o la puerta está
abierta, o la puerta está F F F 0 0 0
cerrada.” F V V 0 1 1
V F V 1 0 1
V V F 1 1 0
p: la puerta está abierta
Disyunción lógica
q: la puerta está cerrada
exclusiva Operación XOR
r: el estado de la puerta es válido r↔p⊻q r=p⊕q

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

1.- CONCEPTOS Y DEFINICIONES

1.4.- Operaciones lógicas

“Dos jugadores, “a” y “b”,


participan en un juego p r p r
donde sólo puede haber
un ganador y un perdedor F V 0 1
(no hay empate).” V F 1 0

p: el jugador “a” gana la partida

r: el jugador “b” gana la partida


Negación lógica Operación NOT

r ↔ ¬p r=p

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

1.- CONCEPTOS Y DEFINICIONES

1.5.- Modularidad

Desarrollo de un sitio web Trabajo en equipo

División del proyecto en sub-sistemas o bloques Código reusable

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

2.- FUNCIONES

2.1.- Declaración y definición de funciones

bloque bloque
var1

Función sin parámetros copia Función con parámetros


var1 var2 y sin valor de retorno de
var1
copia
de
y con valor de retorno
var2

var2
función función

bloque bloque
var1

copia
de Función con parámetros copia
Función sin parámetros
var1 var2 y sin valor de retorno var1 de y con valor de retorno
var2

var2
función función

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

2.- FUNCIONES

2.1.- Declaración y definición de funciones

Declaración:
tipo_funcion nombre_función (tipo1 param1, tipo2 param2, … , tipon paramn);

Tipo de valor de retorno: Lista de parámetros:


Ejemplo: char, int16_t, float, double Ejemplo: (char x, int y, float z)

Función sin valor de retorno: void Función sin parámetros: (void)

Definición:
tipo_funcion nombre_función (tipo1 param1, tipo2 param2, … , tipon paramn){

Cuerpo de la función:
- Declaración/definición de variables
- Bloques
- Sentencias
return (expresión); Cuando hay
} valor de retorno

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

2.- FUNCIONES

2.1.- Declaración y definición de funciones

Observación:

f(x) = x3 - 1 f(x,y) = x2 + xy + y2 f(x,y,z) = x2 + y2 + z2

Función de Entrega un Función de Entrega un Función de Entrega un


1 variable resultado 2 variables resultado 3 variables resultado

int funcion(int x){ int funcion(int x, int y){ int funcion(int x, int y, int z){

return ((x*x*x) ­ 1); return ((x*x) + (x*y) + (y*y)); return ((x*x) + (y*y) + (z*z));


} } }

Función con 1 parámetro Función con 2 parámetros Función con 3 parámetros


Entrega un valor de retorno Entrega un valor de retorno Entrega un valor de retorno

UNA FUNCIÓN EN C SOLO PUEDE RETORNAR UN VALOR

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

2.- FUNCIONES

2.2.- Llamada o invocación de funciones

Sin parámetros Con parámetros

nombre_funcion(); nombre_funcion(param1, param2, … , paramn);


Sin valor de retorno
Ejemplo: Ejemplo:
imprimeMensajeError(); transmiteCoordenadas(x,y,z);

nombre_funcion(); nombre_funcion(param1, param2, … , paramn);


Con valor de retorno
Ejemplo: Ejemplo:
valor = generaNumAleatorio(); mcm = calculaMCM(a,b,c);

LA INVOCACIÓN DE UNA FUNCIÓN CON VALOR DE


RETORNO REPRESENTA UN VALOR NUMÉRICO

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

2.- FUNCIONES

2.2.- La función main()

- Es la única función OBLIGATORIA en un programa escrito en C.

- Es invocada al momento del arranque del programa.

- Cuando se alcanza el final de esta función, el programa llega a su fin (finaliza la ejecución).

- Retorna el valor 0 si el programa se finalizó exitosamente; de lo contrario, retorna un valor


diferente de 0.

- Se puede definir de dos maneras diferentes:

Con parámetros Sin parámetros

int main(int argc, char *argv[]) int main(void)

Forma estándar Forma reducida


(Sistema operativo, manejo de excepciones) (Código “bare metal”, sin manejo excepciones )

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

2.- FUNCIONES

2.3.- La función printf()

Es parte de la biblioteca estándar: stdio.h

int printf(char *format, arg1, arg2, …);

Ejemplos de uso:

printf("Bienvenidos al curso de C");


printf("La raiz cuadrada de %d es %f", var1, var2);
printf("La representacion hexadecimal de %d es %x", var1, var2);

El símbolo % se emplea para indicar el formato de salida:

d,i → Número entero en representación decimal


o → Número entero en representación octal (sin signo)
x → Número entero en representación hexadecimal (sin signo)
f → Número real en representación decimal con punto flotante

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

3.- OPERADORES EN EL LENGUAJE C

3.1.- Operadores aritméticos

Símbolo Operación Ejemplos

uint16_t a = 2, b = 7;
uint16_t c;

+ Adición c = a + b + 9;

- Sustracción c = b - a;

* Multiplicación c = 5 * a * b;

/ División c = a/4 + b/2;

% Módulo c = a%10 + 48;

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

3.- OPERADORES EN EL LENGUAJE C

3.2.- Operadores de incremento y decremento

Expresión Operación Ejemplos

uint16_t a = 2, b = 7;
uint16_t c;

numero++ Primero evaluar número, c = (a++)* b;


luego incrementarlo

++numero Primero incrementar número, c = b / (++a);


luego evaluarlo

numero-- Primero evaluar número, c = calcPromedio(a--,b);


luego decrementarlo

--numero Primero decrementar número, c = calcPromedio(a,--b);


luego evaluarlo

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

3.- OPERADORES EN EL LENGUAJE C

3.2.- Operadores de incremento y decremento

Ejercicio 01:
Escribir una función que lea una variable global n, entera de 16 bits (sin signo), y que calcule
la suma de los n primeros números naturales. El resultado debe ser retornado y almacenado
en una variable local de 16 bits (sin signo), llamada resultado_sumatoria. Verificar su
correcto funcionamiento mediante el uso de la función printf().

Ejercicio 02:
Escribir una función que reciba dos parámetros enteros de 32 bits (con signo) y que calcule
el cuadrado de la suma de dichos parámetros. El resultado debe ser almacenado en una
variable global entera de 32 bits (con signo) llamada resultado_suma_cuadrado. Verificar
su correcto funcionamiento mediante el uso de la función printf().

Ejercicio 03:
Escribir una función que reciba como parámetros tres números enteros de 8 bits (sin signo) y
que calcule el promedio aritmético de dichos números. El resultado debe ser retornado y
almacenado en una variable local llamada promedio. Verificar su correcto funcionamiento
mediante el uso de la función printf().

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

3.- OPERADORES EN EL LENGUAJE C

3.3.- Valores numéricos y valores lógicos

Lectura de valores lógicos Escritura de valores lógicos

Expresión ≠ 0 → VERDADERO VERDADERO → 1

Expresión = 0 → FALSO FALSO → 0

Operador
Valores numéricos Valor lógico
de relación

Operador
Valores lógicos lógico Valor lógico

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

3.- OPERADORES EN EL LENGUAJE C

3.4.- Operadores de relación

Símbolo Relación Ejemplos

uint16_t a = 2, b = 7;
uint16_t c;

> Mayor a c = (a > b);

>= Mayor o igual a c = (a >= 2);

< Menor a c = (b < 7);

<= Menor o igual a c = ((a + 1) <= b);

== Igual a c = (b == 3 );

!= Diferente a c = (b != 4 );

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

3.- OPERADORES EN EL LENGUAJE C

3.5.- Operadores lógicos

Símbolo Operación Ejemplos

uint16_t a = 2, b = 7;
uint16_t c;

! Negación c = !(a > b);

&& AND c = (a >= 2) && (a != 5);

|| OR c = (b < 7) || (b == 2);

Observación:
Evaluación de valores numéricos

c = a && b; ↔ c = (a != 0) && (b != 0);

c = (!a) || b; ↔ c = (a == 0) || (b != 0);

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

3.- OPERADORES EN EL LENGUAJE C

3.5.- Operadores lógicos

Ejercicio 04:
Escribir una función que reciba como parámetro un número entero de 16 bits (sin signo) y
que determine si el número es par o impar. Si el número es par, la función debe retornar el
valor 1; si el número es impar la función debe retornar el valor 0. Verificar su correcto
funcionamiento mediante el uso de la función printf().

Ejercicio 05:
Modificar la función anterior de modo que retorne 1 si el número es impar, y 0 si el número es
par. Verificar su correcto funcionamiento mediante el uso de la función printf().

Ejercicio 06:
Escribir una función que reciba tres parámetros enteros de 32 bits: número, límite superior
y límite inferior. La función debe verificar si el valor de número es mayor al valor de límite
inferior, y menor o igual al valor de límite superior. Si la condición se cumple, entonces la
función debe retornar el valor 1; de lo contrario, la función debe retornar el valor 0. Verificar
su correcto funcionamiento mediante el uso de la función printf().

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

3.- OPERADORES EN EL LENGUAJE C

3.6.- Operadores a nivel de bits

Símbolo Operación Ejemplos

int8_t a = 2, b = 7;
int8_t c;

~ NOT c = ~b;

& AND c = a & b;

| OR c = a | b;

^ XOR c = a ^ b;

<< Desplazar bits a la izquierda c = a << 3 ;

>> Desplazar bits a la derecha c = b >> a;

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

3.- OPERADORES EN EL LENGUAJE C

3.6.- Operadores a nivel de bits

Ejercicio 07:
Escribir una función que reciba como parámetro un número entero de 8 bits (con signo) y
retorne como resultado el inverso aditivo de ese número (Por ejemplo: si la entrada es 4
debe retornar -4; si la entrada es -35, debe retornar 35). No está permitido el uso del signo
de sustracción (-). Verificar su correcto funcionamiento mediante el uso de la función printf().

Ejercicio 08:
Escribir una función que reciba como parámetro un número entero de 32 bits (con signo) y
extraiga el byte más significativo (los 8 bits del extremo izquierdo). El valor de este byte debe
ser almacenado en una variable local de 32 bits (con signo) llamada resultado_msb.
Verificar su correcto funcionamiento mediante el uso de las función printf().

Ejercicio 09:
Escribir una función que reciba como parámetro dos números enteros de 8 bits (con signo):
num, pos. La función debe extraer de num el valor del bit en la posición pos (de 0 a 7). El
valor debe ser retornado a una variable local. Verificar su correcto funcionamiento mediante
el uso de la función printf().

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

3.- OPERADORES EN EL LENGUAJE C

3.7.- Operadores de asignación

Si se desea escribir una expresión de la forma:

expresion1 = expresion1 op expresion2;

Donde op puede ser: + - * / % << >> & | ^

Puede escribirse de forma abreviada:

expresion1 op= expresion2;

Ejemplos: valor /= 10; contador += 3; cadena <<= 2;

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

3.- OPERADORES EN EL LENGUAJE C

3.8.- El operador condicional

Expresion1 ? Expresion2 : Expresion3;

Inicio

-El valor numérico de Resultado depende


F
¿Expresión1? del valor lógico de Expresión1.

V
-Se forma una rama (o bifurcación) en la
lógica de control.

Resultado = Expresión2 Resultado = Expresión3 -Su uso es más intuitivo que el de los
operadores lógicos.

Fin

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

3.- OPERADORES EN EL LENGUAJE C

3.8.- El operador condicional

Ejercicio 10:
Escribir una función que reciba como parámetro un número entero de 16 bits (con signo) y
retorne como resultado el valor absoluto de dicho número. Verificar su correcto
funcionamiento mediante el uso de la función printf().

Ejercicio 11:
Escribir una función que reciba como parámetros dos números enteros de 32 bits (con signo)
y que retorne el valor del número mayor. Verificar su correcto funcionamiento mediante el uso
de la función printf().

Ejercicio 12:
Escribir una función que reciba como parámetros tres números enteros de 32 bits (con
signo): numero, límite inferior, límite superior. La función debe restringir el valor de
número: si número es menor a límite inferior, entonces la función debe retornar el valor de
límite inferior; si número es mayor a límite superior, entonces la función debe retornar el valor
de límite superior; si número se encuentra entre límite inferior y límite superior
(incluyéndolos), entonces la función debe retornar el valor de número. Verificar su correcto
funcionamiento mediante el uso de la función printf().

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

3.- OPERADORES EN EL LENGUAJE C

3.9.- Precedencia y orden de evaluación de operadores

y = 3 + 4 * 5; P
r
e
y = 3 + 4 * 5 / 10; c
e
y = 8 * 12 % 10; d
e
n
y = 12 % 10 * 8;
c
i
a

¿En qué orden se llevan


a cabo las operaciones?

Asociatividad

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

4.- FUNCIONES RECURSIVAS

4.1.- Funciones que se invocan a sí mismas

Ejemplo 01:
Escribir una función recursiva que reciba como parámetro un número ‘n’, natural de 16 bits,
y retorne la suma de los ‘n’ primeros números naturales. Verificar su correcto funcionamiento
mediante el uso de la función printf().

Ejemplo 02:
Escribir una función recursiva que reciba como parámetro un número ‘n’, natural de 16 bits,
y retorne el factorial del número ‘n’. Verificar su correcto funcionamiento mediante el uso de
la función printf().

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

5.- BUENAS PRÁCTICAS

5.1.- Uso de paréntesis

¡No confíe demasiado en su memoria!

- No intente memorizar la regla de precedencia al emplear


múltiples operadores.

- Utilizar paréntesis para indicar de manera explícita el orden en


que se desea que los operadores sean evaluados.

- Esto ayuda a evitar ambigüedades y hace el código más legible.

Ejemplos:

valor = 8 * (12 % 10);

resultado = a + (5 * b);

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

5.- BUENAS PRÁCTICAS

5.2.- Uso de espacios en blanco

Coloque un espacio después de cada palabra reservada, a menos que un punto y


coma sea el siguiente caracter.

Ejemplo: return 0;  return; 

Nunca coloque espacios entre el nombre de una función y su lista de argumentos.

Ejemplo: elevaAlCuadrado(uint16_t num);

Coloque un espacio después de cada coma en la lista de argumentos.

Ejemplo: calculaMCM(uint16_t a, uint16_t b, uint16_t c);

Coloque un espacio antes y después de cada operador binario.

Ejemplo: x = a + b;        y = (a << 2) + (b & c);

Nunca coloque un espacio entre un operador unario y su operando.

Ejemplo: x = !a;           y = ~b;

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

5.- BUENAS PRÁCTICAS

5.3.- Uso de la sangría

La sangría como indicador de bloques

-Insertar una sangría en cada línea de código, siempre que la pieza de


código que se está escribiendo se encuentre dentro de un bloque.

-Cada vez que se ingrese a un bloque que se encuentre dentro de


otro, incrementar el espaciado de la sangría para indicar el nivel de
“profundidad” en que se encuentra cada línea de código.

int sumaDigitos(int n){

int suma = 0;

while(n > 0){
suma += n%10;
n /= 10;
}
return suma;
}

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

5.- BUENAS PRÁCTICAS

5.4.- Uso de funciones recursivas

¡Ninguna función debe invocarse a sí misma!

- El uso de funciones recursivas se encuentra terminantemente


prohibido, debido a que presenta el peligro potencial de un
desbordamiento en el segmento stack de la memoria (stack
overflow).

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

5.- BUENAS PRÁCTICAS

5.5.- Asignación de nombres a variables

Los nombres deben brindar información

- Asignar un nombre que describa el papel que desempeña la


variable o, dicho de otra forma, qué relevancia tiene el valor
almacenado en dicha variable.

- No dude en emplear nombres largos si hiciera falta. El objetivo


es escribir un código que sea fácilmente legible.

- Evite el uso de abreviaturas sin haberlas definido primero, a


menos que se trate de abreviaturas estándar dentro de la
industria (USB, LCD, etc.).

Ejemplos:

uint16_t contador_1ms;
uint32_t valor_promedio;
float factor_de_conversion;
double constante_de_tiempo_filtro_rc;

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

5.- BUENAS PRÁCTICAS

5.6.- Asignación de nombres a funciones


Dominio Reino Filo Clase Orden Familia Género Especie

Ursus americanus

Ursus

Taxonomía: Ursidae

Rama de la biología que


Carnivora
clasifica los organismos.

Mammalia

Chordata

Animalia

Eukarya

General Específico

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

5.- BUENAS PRÁCTICAS

5.6.- Asignación de nombres a funciones

Dispositivo Acción Detalles

GLCD Inicializa Pixel

LCD Dibuja Caracter void GLCD_Imprime_Caracter(char x);

UART Imprime String

General Específico

void Inicializa_GLCD(void); void GLCD_Inicializar(void);

void Inicializa_UART(void); void UART_Inicializar(void);

void Inicializa_LCD(void); void LCD_Inicializar(void);

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

5.- BUENAS PRÁCTICAS

5.7.- Escritura de nombres

Estilos de escritura de nombres

Estilo camello nombreDelElemento int primerNumero = 0;


(camel case) int SegundoNumero = 0;
int tercer_numero = 0;
Estilo Pascal NombreDelElemento

Estilo serpiente nombre_del_elemento


(snake case)

Funciones → nombreDeFuncion
Variables → nombre_de_variable
Estilos
recomendados
Funciones → Nombre_De_Funcion
Variables → nombre_de_variable ¡¡¡NO MEZCLAR ESTILOS!!!

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

5.- BUENAS PRÁCTICAS

5.8.- Comentarios

Criterios generales:

-El código implementa un algoritmo; los comentarios comunican el funcionamiento del


código a usted y a los demás.

- Escribir comentarios de manera clara. No escribir una “novela”: ser conciso y explícito.

- Evite párrafos extensos. Utilice oraciones simples: sustantivo, verbo, objeto.

- Emplee mayúsculas y minúsculas de manera adecuada.

- Introduzca comentarios para describir bloques.

- Introduzca comentarios cuando sean necesarios para aclarar una línea de código, pero
no se sienta obligado a comentar cada línea.

- Explique el significado y la función de cada variable cuando la declare.

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

5.- BUENAS PRÁCTICAS

5.8.- Comentarios

Compatibillidad y orden en los comentarios

- Emplear el formato de comentarios compatible con el estándar C89, el cual utiliza los
símbolos /* y */, en lugar del formato incorporado desde C++, el cual utiliza el
símbolo //.
/* Este comentario es compatible */
// Este comentario no es compatible

- Al comentar una línea de código, de haber un punto y coma, insertar los comentarios
después del punto y coma, dejando antes un espacio en blanco.
while ( ( port & 0x80 ) == 0 ){
; /* espera al pin ­ Correcto */
/* espera al pin */ ; /* Incorrecto, comentario antes de ; */
;/* espera al pin – Incorrecto, falta un espacio después de ; */
}

- Ninguna línea debe contener más de 80 caracteres (incluyendo espacios en blanco).

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

5.- BUENAS PRÁCTICAS

5.8.- Comentarios

Observación:

Aunque es útil resaltar secciones de comentarios con cadenas de asteriscos,


nunca coloce asteriscos al lado derecho de un bloque de comentarios:
/************************************************
* Este comentario utiliza, de forma incorrecta, *
* asteriscos en el lado derecho                 *    
************************************************/

Resulta problemático mantener un espaciado ordenado cuando los comentarios


cambian después de un tiempo. La forma correcta es:

/************************************************
* Este comentario no utiliza asteriscos en el
* lado derecho
*************************************************/

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

5.- BUENAS PRÁCTICAS

5.8.- Comentarios

Recomendación:

Insertar “cabeceras” de comentarios al momento de definir cada función:

/***********************************************************
* Nombre de la función: TIPO foo(TIPO arg1, TIPO arg2...)
* retorna               : descripción del valor que retorna
* arg1                  : descripción
* arg2                  : descripción
* Creado por            : nombre del autor
* Fecha de creación     : fecha
* Descripcion           : descripción detallada
* Notas                 : restricciones, observaciones
***********************************************************/

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

6.- REFERENCIAS

[1] K. N. King, C Programming: A Modern Approach, Second Edition, W.


W. Norton, 2008.

[2] Brian Kernighan & Dennis Ritchie, The C Programming Language,


Second Edition, Prentice Hall, 1988.

[3] Michael Barr, Embedded C Coding Standard, First Edition, Barr Group,
2008.

[4] Randal Bryant & David O’Hallaron, Computer Systems: A Programmer’s


Perspective, Second Edition, Prentice Hall, 2011.

[5] Jack Ganssle, The Art of Designing Embedded Systems, Second


Edition, Newnes, 2008

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro


Programación en Lenguaje C

7.- PREGUNTAS

Clase 2 – Operadores y funciones Miguel A. Torres Lázaro

You might also like