Upload
phungliem
View
213
Download
0
Embed Size (px)
Citation preview
1. Repaso del Lenguaje CM.C. Luis A. Zarza López
Graficación por Computadora
Universidad Tecnológica de la MixtecaJulio de 2016
Introducción
El lenguaje C fue desarrollado en la década de 1970 en el ambiente UNIX, expandiéndose a universidades e industria.
Es uno de los lenguajes de programación más usados.
Tiene un acceso muy directo a la memoria y recursos del sistema.
1.1 Instrucciones y operadores básicos
Constantes Valores o datos introducidos directamente en
el código Ejemplos: 12, 3.1416, "Hola"
Variables Espacios de almacenamiento de datos,
asociados Ejemplos: edad, fecha, a
Expresiones Conjunto de constantes, variables y
operadores que al ser calculados producen un dato
Proposición Instrucción que determina una acción Un programa es una secuencia de
proposiciones
Función main
Es la función de entrada a un programaRespetar mayúsculas y minúsculasDeclararlo comoint mainCuando termina main (o retorna resultado), el
programa termina
Reglas para nombres (variables o funciones)
Usar letras, _ (guión bajo) y dígitos Iniciar con letraRecomendaciones:
Evitar usar puras mayúsculas Evitar iniciar con guión bajo (_) Evitar usar abreviaciones Tipo “delimitadores”
int valor_maximo Tipo “camello”
int valorMaximo;
Palabras reservadas
Son identificadores reservados int, for, return, break, etc.
No se deben usar como nombres de variablesNo es buena idea usar palabras reservadas
cambiando a mayúsculas:int INT;
Consejo para nombres
Usar palabras en español (sin caracteres especiales, acentos o eñes), que describan el valor que contienen.
Usando tipos predefinidos
DeclaraciónAsignaciónAsignación compuestaOperadores comunesIncremento y decrementoPrecedencia de operadores
Tipos de datos
En C, los datos deben especificarse por tipo:Entero int: Sólo enteros, con y sin signoFlotante float: Con punto decimalCarácter char: Una letra
Existen más tipos, como variantes de las anteriores, pero de momento sólo se usarán las anteriores
Declaración
Las variables se declaran en funciones, bloques o al inicio del programa (globales)
int contador;int contador, numeroEmpleado;
Se puede declarar e inicializar a la vez:int contador = 4;char inicial = 'J';
Asignación compuesta, incremento y decremento
Ajustando el valor de una variable:contador = contador + 20;Se puede abreviar así:contador += 20;También es válido para -,*,/,% (módulo) Incrementos y decrementoscontador++;restantes--;Si forman parte de una expresión y se desea el valor previo, se puede aplicar así:a = ++contador;a = --contador;
Operadores
Operadores comunes Ejemplos
Igualdad == !=
Mayor-menor < > <= >=
Condicionales (lógicos) && || ?:
Incremento ++
Decremento --
Aritméticos + - * / %
Asignación = *= /= %= += <<= >>= &= ^= |=
Asignaciones
Las asignaciones y operaciones condicionales se hacen desde la derecha:
a = b = 8;a = ( b = 8 );El resto de las operaciones binarias (con dos
argumentos) se hacen desde la izquierdax + y + z;(x + y) + z;
PrecedenciaUnarios ! ~ ++x --x Multiplicativos * / % Aditivos + - Desplazamientos << >> Comparación < > <= >=Igualdades == != Bits & | ^Condicionales && Condicionales || Condicionales ?: Asignaciones = *= /= %= += -= <<= >>= &= ^= |=
Bloques
Las proposiciones de un programa se agrupan en bloques
Los bloques se rodean entre llaves { y }Los bloques son anidables, ie. un bloque puede
contener otros bloques
Tipos de proposiciones
Los bloques nos permiten agrupar código que será ejecutado dependiendo de ciertas condicionesProposiciones de selección
if switch
Proposiciones de iteración while do for
Proposiciones de salto goto break continue
1.2 Estructuras de decisión
Existen estructuras para tomar decisiones, es decir, ejecutar código dependiendo de algunas condiciones
if
Hace una selección de código a ejecutar dependiendo del valor de una expresión
Sintaxis:if ( expresión_condicional )
proposicion_o_bloque else
proposicion_o_bloque
Ejemplos de if Proposición if simple: if (number % 2 == 0) printf("par"); Pueden ir en la misma línea, pero es poco recomendable: if (number % 2 == 0) printf( "even" ); Cuando sólo hay una proposición integrada, no hacen falta las llaves (bloque), pero
suele recomendarse para evitar errores: if (number % 2 == 0){ Printf( "even" ); } Si son varias las proposiciones a ejecutar, se deben usar bloques: if (minute == 60) { minute = 0; hour++; } Siempre se deberá indentar apropiadamente. No hacerlo es imperdonable.
Proposiciones if en cascada
edad = 89;if(edad <= 12 )
printf( "Infancia" );else if( edad <= 18 )
printf( Adolescencia" );else if( edad <= 35 )
printf( "Juventud" );else
printf( "Madurez" );
Proposiciones if anidadas
nota = 8;if( nota >= 0 && nota <= 10 ) {
if( nota >= 6 )printf( "Pasa" );
} else { printf( "Error rango" );
}
Proposición case
El valor de una variable es comparado con constantes, y ejecuta el código asociado en caso de coincidencia
Se pueden agrupar varios casosSe debe suspender el case cuando ya se cumplió la condición
Se puede definir código a ejecutar cuando no se cumplió ninguna condición
Proposición caseswitch( opcion ){
case 1:case 2:
operacion = 1;break;
case 3:case 4:
operacion = 2;break;
default:printf( "opción no válida" );break;
}
1.3 Estructuras de repetición
Son estructuras que permiten repetir instrucciones de acuerdo a condiciones existenteswhiledo-while for
Proposición while
Ejecuta proposiciones integradas basándose en un valor booleano
Evalúa valor booleano al principio del cicloEjecuta proposiciones mientras valor booleano es
verdaderoint i = 0; while (i < 10) {
printf(i); i++;
}
Proposición do
Ejecuta proposiciones integradas basándose en un valor booleano
Evalúa valor booleano al final del cicloEjecuta proposiciones mientras valor booleano es
verdaderoLas proposiciones se ejecutan al menos una vezint i = 0; do {
printf(i); i++;
} while( i < 10 );
¡indispensable!
Proposición for
Establece condiciones de ciclo y variable de control al principio
for( i = 0; i < 10; i++ ) { printf(i); }
El ciclo puede iterar con varios valoresint i = 0; for( int i=0, j=0; i < 10; i++, j++ ){
printf(i+j);}
Proposiciones break y continue break salta hacia fuera de una iteración continue salta a la siguiente iteraciónint i = 0; while (true) {
printf(i); i++; if (i < 10)
continue; else
break; }
Ejercicios
Haga un programa que pregunte por su edad. Dependiendo de la edad dirá: "Vete a tu casa, niño" "Estás en la edad de la punzada" "Vamos al bar de Moe"
Lo mismo pero que considere también el género (masculino/femenino). Sea creativo con las frases.
Lo mismo, pero validar datos: Edad o género imposible Edad vacía Valor erróneo
Ejercicios
Hacer programa que despliegue las tablas de multiplicar que en el rango que el usuario indique
Hacer programa que despliegue calendario del mes actual (pidiendo datos necesarios al usuario)
1.4 Funciones
En casi todos los programas el código se divide en módulos funcionales
Permiten: Estructurar el código Facilitar el entendimiento Facilitar la ubicación y corrección de errores Reutilización de código
En C la aplicación se estructura en funcionesUna función es un bloque de código que efectúa una
accion o calcula un valorLos parámetros son datos que se entregan a las
funciones
Uso de funciones
Definiendo funcionesInvocando funcionesSaliendo de funcionesUso de variables localesRetornando valor
Definiendo una función
main es una función, se debe usar la misma sintaxis
int suma ( int a, int b ){ return ( a + b );}Si las funciones se definen antes de main, serán
reconocidas. Si se definen después, hará falta crear protipos. Para el ejemplo anterior, su prototipo sería:
int suma ( int, int );
Prototipo, invocación, declaración de función#include <stdio.h>int suma( int, int );int main( ){ int r; r = suma ( 4, 5 ); printf ( "resultado: %d\n", r ); return 0;}int suma( int a, int b ){ return( a + b );}
Definiendo una función
Cada función debe indicar: Tipo de valor que devuelve Nombre (único, no debe coincidir ni con variables,
constantes o funciones) Paréntesis para parámetros Lista de parámetros (puede ser una lista vacía) Cuerpo de la función, siempre con llaves de bloque,
aún cuando sólo contenga una proposición
Llamando (invocando) una función
nombreFunción( parámetros );a = promedio( 1, b );Se puede invocar una función:Desde el mismo documentoDe otro documento, si la función es pública
(public)Una función, a su vez, puede invocar otras
funciones (invocación anidada)No todos las funciones devuelven valores
Saliendo de función con return
Al término del código de una función, ésta termina, pero con return se puede anticipar la salida, si es necesario: Salida inmediata Salida si se cumple una condición
void procesa( ) { int frijoles; //... if( frijoles < 10 ) return; printf( "todo bien" );}
Uso de variables locales
Variables locales Creadas cuando la función inicia Exclusivas de la función Se destruyen al salir de la función
Variables globales Disponibles en todo el programa Ocupan espacio todo el tiempo
Conflictos El compilador no avisará si hay coincidencias en los
nombres entre variables locales y globales
Retornando valor
Si una función debe devolver un valorSe debe declarar su tipoDeberá utilizar la proposición returnreturn debe ir acompañado por la expresión o
variable que contenga el dato a devolverLas funciones que no son de tipo void siempre
deberán devolver un valor (del tipo indicado)
Retornando valor (ejemplo)
int twoPlusTwo( ){ int a,b; a = 2; b = 2; return a + b; } int main( ){ int x; x = TwoPlusTwo( ); printf( x ); } }
devolverá el resultadode la expresión
el resultado devueltoserá asignado a x
Uso de parámetros
Declarando y pasando parámetrosMecanismos para pasar parámetrosPaso por valorPaso por referenciaParámetros de salida
Declarando y llamando con parámetros
Declaración Se ubican dentro de los paréntesis después del
nombre de la función Definen tipo y nombre
void funcion(int n, float y)
{ ... }Llamando funciones con parámetros
Suministrar un valor para cada parámetro
funcion( 2, 4.5 );
Mecanismos para pasar parámetros
Dos maneras de pasar parámetros
entrada Paso por valor
entrada/salida
Paso por referencia
Paso por valor
Es el mecanismo básico y el más usadoEl valor del parámetro se copiaLa variable puede cambiar dentro de la función
El cambio no tiene efecto afueraEl parámetro debe ser del mismo tipo
Paso por valor
void sumaUno( int x ) {
x++; // Incrementar x } int main( ) {
int k = 6; sumaUno( k );
}
Paso por referencia
¿Qué son los parámetros por referencia? Son referencias a una posición en memoria
Uso de parámetros por referencia Usar '*' en la declaración de la función Usar '&' en la llamada El espacio (variable) debe estar asignado antes de llamar
void SumaUno( int *x ) { *x = *x + 1; } int main( ) { int k = 6; SumaUno( &k ); printf( "%d", k ); // Muestra el valor 7 }
mismo espacio dealmacenamiento que
tiene la variable k