Download I n t r o d u c c i ó n a l o s L e n g u a j e s d e P r o g r a m a c i ó n

Document related concepts

Rust (lenguaje de programación) wikipedia , lookup

Clausura (informática) wikipedia , lookup

Expresión S wikipedia , lookup

Lisp wikipedia , lookup

Scheme wikipedia , lookup

Transcript
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
La importancia del uso de Buenas prácticas en la escritura
de programas.
Limpieza, Legibilidad o Claridad del Código
Respetar los estándares establecidos.
Documentación del Código.
Programando correctamente
Estructura correcta de un programa.
Ejemplo de un programa en C, siguiendo estas normas.
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
Buenas Prácticas en la escritura de Programas.
¿ Cuándo un programa esta bien escrito ?
¿ Qué estilo de programación utilizamos ?
¿ Cuándo se escribe un programa, es necesario seguir
alguna guía ?
¿ Es importante que los programadores entiendan
código de otros programadores ?
¿ Es necesario la documentación de un programa ?
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
¿ Cuándo un programa esta bien escrito ?
Estándares de escritura de programas en ciertos lenguajes de
programación en particular.
Normas de programación, recomendables para la escritura de
todos nuestros programas en lenguaje de programación C.
Estilo.
Indentación.
Anchos de código.
Espacios y Llaves.
Notación, convención y consistencia de nombres.
Todos los lenguajes poseen su manual de Referencia.
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
Estilo
El estilo de programación se refiere a la forma en que se da
formato al código fuente (programa).
Una buena pauta en el estilo de programación es crear código
legible y consistente.
Pensar antes de Programar.Los programadores deben tomar decisiones de diseño y
pensar en la solución mas óptima de desarrollo de código,
en papel.
Escribir código es la parte fácil, con una correcta
planificación si utilizas la sintaxis correcta del lenguaje.
Ahorro en horas, hasta días, y hasta semanas con una
planificación previa de desarrollo, “la gran idea”.
Siempre cerca papel y lápiz para cuando llegue la
“inspiración”.
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
Estilo
Ejemplo.- Se necesita un algoritmo que encuentre el numero
máximo de un conjunto de enteros.
Para encontrar el máximo de un conjunto de enteros positivos.
Se basa en recorrer una vez cada uno de los elementos,
comparándolo con un valor concreto (el máximo entero
encontrado hasta ahora). En el caso de que el elemento actual
sea mayor que el máximo, se le asigna su valor al máximo.
El algoritmo escrito de una manera más formal, tendría el
siguiente aspecto:
ALGORITMO Máximo
ENTRADAS: Un conjunto no vacío de enteros C.
SALIDAS: El mayor número en el conjunto C.
máximo ← -∞
PARA CADA elemento EN el conjunto C, HACER
SI valor_del_elemento > máximo, HACER
máximo ← valor_del_elemento
DEVUELVE máximo
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
Indentación.
Es mover un bloque de texto hacia la derecha insertando
espacios o tabuladores para separarlo del texto adyacente.
Esta norma se utiliza para mejorar la legibilidad del código.
Raramente los compiladores o intérpretes consideran los
espacios en blanco entre las sentencias de un programa.
Siempre genera discusiones entre los programadores, sobre
como o donde usar la indentación.
En ciertos lenguajes de programación (Ej. Python, Haskell y
Occam), la indentación se utiliza para delimitar la estructura
del programa, permitiendo establecer bloques de código.
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
Ejemplo de Indentación en el Lenguaje C.
El siguiente ejemplo muestra por pantalla las tablas de
multiplicar
∉
Sin Indentación:
∉
Con Indentación:
#include <stdio.h>
#include <stdio.h>
int main ()
{
int i, j;
for (i=0;i<=10;i++)
for (j=0;j<=10;j++)
printf("%i x %i = %i\n", i, j, i*j);
return 0;
}
int main ()
{
int i, j;
for (i=0;i<=10;i++)
for (j=0;j<=10;j++)
printf("%i x %i = %i\n", i, j, i*j);
return 0;
}
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
Anchos de Código.
El ancho máximo de código es de 78 a 80 caracteres, en C es
de 78 caracteres.
Si alguna línea del código lo supera, ¿ se hace algo ?.
Se pueden añadir tabulaciones o espacios hasta que queden
correctamente alineados.
Ejemplo. A continuación, la definición de una función con sus nombre
sus parámetros largos también.
No se sigue la norma
nuevo_programa_función_con_nombre_largo(parametro1_enorme;
parametro2_enorme);
Se sigue la norma
nuevo_programa_función_con_nombre_largo(parametro1_enorme;
parametro2_enorme);
Introducción a los Lenguajes de Programación.
¿Características
de un Buen
Programa?.
Ejemplo de Ancho de Código en el Lenguaje C.
•
El siguiente ejemplo se define una estructura de tipo número
complejo.
∉
Sin Ancho de Código:
#include <stdio.h>
#define N 10
typedef struct {
double real; /* Parte Real*/
double imag; /* Parte Imaginaria */
} COMPLEJO;
COMPLEJO SumarComplejos (COMPLEJO a[],
int n);
∉
Con Ancho de Código:
#include <stdio.h>
#define N 10
typedef struct {
double real; /* Parte Real*/
double imag; /* Parte Imaginaria */
} COMPLEJO;
COMPLEJO SumarComplejos(COMPLEJO a[],
int n);
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
Espacios y Llaves.
Se puede o no, añadir espacios adicionales, antes de la
apertura de un paréntesis y después de una coma (,)
separadora de parámetros. Ejemplo.
Con espacios.
función (parametro1, otra _ función (), parametro2);
Sin espacios
función(parametro1,otra_función(),parametro2);
La apertura y el cierre de llaves en los bloque de programas
también siguen un estilo. Lo mejor es verlo con un ejemplo.
Las condiciones que sólo ejecuten una instrucción pueden
ponerse con o sin llaves, aunque es preferible su uso
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
Ejemplo de Espacios y Llaves en el Lenguaje C.
El ejemplo muestra como se elige el menor de tres números.
El segundo ejemplo se muestras la escritura una sola sentencia
sin espacios ni llaves y con estos.
∉
Uso de llaves en C.
float a, b, c, menor;
a=2; b=4; c=1;
if (a < b) {
if (a < c)
menor = a;
else
menor = c;
} else {
if (b < c)
menor = b;
else
menor = c;
}
∉
Una sentencia sin Llaves:
if(NumDiasMes=28)
printf(“El año es bisiesto”);
∉
Una sentencia con Llaves:
if (NumDiasMes = 28 ){
printf (“El año es bisiesto”);
}
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
Notación, Convención y Consistencia de Nombres.
Definir la notación de las variables, objetos, métodos y
funciones.
Es importante seguir una buena convención de nombres para
los símbolos de los programas.
Es importante que las variables se nombren de manera
consistente.
Estándares de Notaciones.
Notación Hungara.
Notación PascalCasing.
Notación CamelCasing.
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
Notación Húngara.
Esta notación es usada por los programadores de Microsoft, y
en particular por la programación de su Sistema Operativo.
También se utilizo en la versiones antiguas de Visual Basic.
Esta notación es un sistema normalmente usado para crear los
nombres de las variables.
El nombre de la notación proviene del hecho de que su inventor
Charles Simonyi nació en Hungría.
Consiste en prefijos en minúsculas que se añaden a los
nombres de las variables, y que indican su tipo y ámbito
Ejemplos.
intEdad: Esta variable representa la Edad de una persona y es del tipo int.
prStrNombre: Esta variable representa un Nombre con valor por referencia (pr) y del
tipo string.
gStrConexion: Esta variable representa un parámetro global del tipo String con
información de Conexión.
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
Notación PascalCasing.
Es similar a la notación Húngara pero sin el prefijo de tipo.
Los identificadores y nombres de variables, métodos y
funciones están compuestos por múltiples palabras juntas,
iniciando cada palabra con letra mayúscula.
Ejemplo.
MuestraNombre: Esta variable esta conformada por dos palabras cada una empieza
con letra mayúscula, representa el nombre de un método que muestra un nombre.
•
Notación CamelCasing.
Este tipo de notación es común en en lenguaje de
programación JAVA.
Es similar a la notación PascalCasing con la excepción que la
letra inicial del identificador no debe estar en mayúscula.
Ejemplo.
salvaRut: Esta variable esta conformada por dos palabras, la primera toda en
minúscula y la segunda empezando con letra mayúscula, recupera un rut.
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
Ejemplo del Uso de Notación de variables en el Lenguaje C.
∉
Definiendo nombres de una variable tipo real para
representar el el nombre de la función que suma
los números complejos siguiendo las 3 notaciones
mostradas anteriormente, en Lenguaje C.
∉
Notacion Hungara.
∉
∉
Notacion PascalCasing
∉
∉
double realSumarComplejos;
double SumarComplejos;
Notacion CamelCasing
∉
double sumarComplejos;
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
¿ Qué es limpieza, Legibilidad o Claridad en el Código ?
Usar un estilo de indentación consistente y una buena
convención o notación para nombrar variables.
El uso correcto de las palabras algunas reservadas del
Lenguaje, veremos un par de palabras reservadas del Lenguaje
C.
const:
Define un elemento constante.
El uso de esta palabra es una practica que permite al
compiladores identificar muchos mas errores. Esto
avisará al usuario si esta intentando ejecutar alguna
operación incorrecta
#DEFINE: Se debe usar esta macro para que definan los
datos en vez de usarlos directamente en el código.
ENUM: Se debe usar si se tiene una lista de posibles valores
para una variable
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
Palabras reservadas en el Lenguaje C.
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
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
¿ Qué es limpieza, Legibilidad o Claridad en el Código ?
No usar más paréntesis de los necesarios.
No escribir sobre código, ya existente y hacerlo inmantenible.
Reescribir código y hacerlo mantenible y extensible.
Comentar el código lo justo y necesario, ejemplo, no escribir
que hace una función, a no ser estrictamente necesario.
Introducción a los Lenguajes de Programación.
¿Características
•
•
•
de un Buen
Programa?.
Palabras reservadas en el Lenguaje C.
auto
double
int
struct
break
else
long
switch
case
enum
register
typedef
char
extern
return
union
const
float
short
unsigned
continue
for
signed
void
default
goto
sizeof
volatile
do
if
static
while
Ejemplo de #DEFINE en lenguaje C.
#DEFINE MAX_NUMERO_ALUMNOS
100
#DEFINE MAX_TAMAÑO_PAGINA_ALTO
333
#DEFINE MAX_TAMAÑO_PAGINA_ANCHO
295
Ejemplo de ENUM en lenguaje C.
typedef enum {
NINGUM_DATO,
DATO_GENERICO,
PROCEDIMIENTO_GENERICO,
DATO_GENERICO_SA
}TipoDatos;
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
Documentación
La documentación tiene que ver con los comentarios
explicatorios y aclaratorios, que establecemos en nuestro
código para futura referencia.
Muchas veces podemos olvidar podemos olvidar la finalidad de
algún proceso, con una complicada codificación.
Los comentarios nos ayudan a recordar los puntos claves de
cada parte de nuestro código
Se puede establecer una convención para documentar nuestros
códigos Pero a continuación una buena practica de
documentación
La documentación del código de nuestros programas se puede
dividir en 3 niveles.
Modulo.- Información general programa.
Procedimiento.- Información de funciones no relevantes.
Variable.- Información de variables, no necesaria
comúnmente
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
Documentación
Módulo
En la cabecera del archivo se escribe un cuadro con los
siguientes datos:
Datos generales: Autor, fecha, versión
Control de versiones (Histórico)
Descripción General
Describir detalles de las variables globales
Ejemplo:
//-----------------------------------------------------------------------//
NOMBRE: CRaton
//
DESCRIPCION: Clase para controlar el ratón, utilizando la API DInput
//-----------------------------------------------------------------------//
AUTOR: Raziel A. Valle Miranda -AYUDANTE -
//
FECHA: 29/09/2006 -=- Versión 2.7
//-----------------------------------------------------------------------//
//
HISTORICO:
1.3: Arreglo los problemas que tenia el boton central...
//------------------------------------------------------------------------
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
Documentación
Procedimiento
Cuando sea necesario documentar funciones, procedimientos o
métodos debería incluirse lo siguiente:
Nombre y Objetivo del procedimiento
Parámetros (breve descripción)
Resultado
Incluso como funciona el algoritmo y un breve ejemplo de uso
Ejemplo:
//-----------------------------------------------------------------------//-----------------------------------------------------------------------//
NOMBRE: Raiz
//
DESCRIPCION: Devuelve la raiz cuadrada de un número
//
PARÁMETROS: int X: Número al que le queremos calcular la raiz
//
NOTA: El algoritmo solo sirve para números >=0 desde 0 hasta 65355
//------------------------------------------------------------------------
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
Documentación
Variable.
A nivel de variables de deben comentar aquellas que pueden
crear cierta duda o ambigüedad.
No es recomendable comentar todas las variables ya que
seguramente la mayoría serán obvias.
Descripción
Unidades.
Valores aceptados o por defecto.
Ejemplo:
//-----------------------------------------------------------------------//-----------------------------------------------------------------------//
NOMBRE: SumaComplejos
//
DESCRIPCION: Suma 2 números complejos
//
PARÁMETROS: necesita la parte real e imaginaria del número complejo
//------------------------------------------------------------------------
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
Programando Correctamente.
Entonces siguiendo la pautas anteriores, todo programa escrito
por nosotros debe cumplir con las siguientes características y
no solo para programar en Lenguaje C.
Integridad.- Corrección de cálculos
Claridad.- Facilidad de Lectura de nuestro programa.
Sencillez.- La claridad y corrección de un programa lo
hacen sencillo
Eficiencia.- Relacionada con la velocidad de ejecución y la
correcta utilización de memoria.
Modularidad.- Dividir el programa en subtareas, (en c se
implementan como funciones).
Generalidad.- Nuestros programas deben ser lo mas
general posibles.
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
Estructura de un buen programa.
Todo programa escrito en C consta de una o más funciones,
una de las cuales se llama main.
El programa siempre comenzará por la ejecución de la función
main. Cada función debe contener:
Una cabecera de la función, que consta del nombre de la
función, seguido de una lista opcional de argumentos
encerrados con paréntesis.
Una lista de declaración de argumentos, si se incluyen estos en
la cabecera.
Una sentencia compuesta, que contiene el resto de la función.
Introducción a los Lenguajes de Programación.
¿Características
•
de un Buen
Programa?.
Estructura de un buen programa.
#include <stdio.h>
#include <conio.h>
/*#include del sistema:Se deben especificar todos los ficheros de cabecera (ficheros con
extensión .h) correspondientes a las librerías de funciones utilizadas.
extern void salida(void);
/* extern variables globales externas: Variables globales que voy a definir en otros módulos que voy a
usar en este módulo. A salida le hemos asignado el tipo de almacenamiento extern, pues tiene que
ser accedida desde otro archivo distinto de aquel en que es definida; por tanto, ha de ser una
función externa. */
#define CIERTO 1
#define FALSO 0
/* #define definición de macros y constantes simbólicas.*/
typedef struct {
int dia;
int mes;
int ano;
}FECHA;
/* typedef definición de tipos: me sirve para crear un tipo distinto de los preestablecidos de
partida.*/
int suma (int , int);
/* Implementación de las funciones: Se implementan todas las funciones del módulo incluida la función
main().*/
extern void salida(void)
{
printf("¡Hola!");
return; /* salimos de la función, y volvemos al lugar donde se le llamó sin devolver
nada.*/
Introducción a los Lenguajes de Programación.
¿Características
de un Buen
Programa?.
Ejemplo de un programa escrito en C.
//***PROGRAMA: Ejemplo de Buenas Practicas de programacion.
//***Programa para calcular la suma de un conjuntos de complejos
//***FECHA: 29/Sept/2006
//***Autor: Raziel Valle.
#include <stdio.h>
#define N 10
typedef struct {
double real; /* Parte Real*/
double imag; /* Parte Imaginaria */
} COMPLEJO;
COMPLEJO SumarComplejos(COMPLEJO a[], int n);
void main(void)
{
COMPLEJO v[N]; /* vector de complejos */
int n;
/* número de elementos */
int i;
/* contador */
COMPLEJO suma; /* suma de los complejos */
/*** Pido el número de elementos ***/
do {
printf("Cuantos elementos quieres introducir? ");
scanf("%d",&n);
if (n>N) {
printf("Este programa no soporta tantos elementos\n");
}
} while (n>N);
/*** Pido los n elementos ***/
for(i=0; i<n; i++) {
printf("Parte real del elemento %d: ",i+1);
scanf("%lf",&v[i].real);
printf("Parte imaginaria del elemento %d: ",i+1);
scanf("%lf",&v[i].imag);
}
/*** Calcula la suma de todos los complejos ***/
suma=SumarComplejos(v,n);
/*** Salida de resultados ***/
printf("La suma es: (%lf,%lf)\n",suma.real, suma.imag);
}
/**************** F U N C I O N E S ****************************************/
/*
Función SumarComplejos
Descripción: Calcula la suma de un vector de complejos
Argumentos:
a vector de complejos
n número de elementos válidos del vector
Valor retornado:
suma complejo resultados
Advertencias:
En caso de error, por ejemplo el número de elementos es menor
que 1,
la función devuelve el complejo (0,0);
*/
COMPLEJO SumarComplejos(COMPLEJO a[], int n)
{
COMPLEJO ret; /* valor a retornar */
int i;
/* contador */
ret.real=0;
ret.imag=0;
for(i=0; i<n; i++) {
ret.real += a[i].real;
ret.imag += a[i].imag;
}
return ret;
}