Upload
jobsue-camacho
View
233
Download
0
Tags:
Embed Size (px)
DESCRIPTION
efe
Citation preview
Introducción a la Programación con C
Código de Curso: CY320
Copyright © 2005
Volumen 1
Fundamentos de C
Copyright © 2005
Copyright © 2005
• CY320 Introducción a la Programación con C • Instructor:
– Por favor, preséntese a los alumnos. • Nombre.• Experiencia con Lenguaje C. • Metas que espera alcanzar.
Copyright © 2005
Introducción
Copyright © 2005
• Este curso está diseñado para introducir a los estudiantes a la programación usando Lenguaje C.
• El alcance del curso es proveer un entendimiento básico de los conceptos relacionados a los algoritmos y programación usando C.
Copyright © 2005
Descripción del Curso
Copyright © 2005
• Estudiantes, profesionales y desarrolladores que deseen aprender acerca de los algoritmos básicos y la programación en C.
Copyright © 2005
Audiencia
Copyright © 2005
• Entender la necesidad y el uso de los sistemas operativos.
• Conocimientos básicos del sistema operativo Linux.
• Estas destrezas se pueden obtener completando el curso CY310 : Fundamentos Básicos de Linux.
Prerrequisitos
Copyright © 2005
• Emplear el concepto de estructuras en la solución de problemas.
• Usar las diferentes estructuras condicionales (sentencias if) con el propósito de resolver problemas que las requieran.
• Construir estructuras switch en Lenguaje C.
• Escribir programas usando las funciones printf y scanf de C.
Objetivos del Curso
Copyright © 2005
• Definir los tipos de datos enumerados y utilizarlos para la solución de problemas.
• Definir el concepto de recursión en C.
• Trabajar con macros e instrucciones del preprocesador en C.
• Trabajar con el concepto de manejo de archivos en C.
• Conocer el uso de argumentos recibidos por la función main.
Objetivos del Curso…2
Copyright © 2005
• Hemos visto los objetivos globales del curso y la agenda.
• Empecemos.
Resumen
Programación en C
Los Primeros Pasos
Copyright © 2005
Unidad 1
Copyright © 2005
Objetivos del Aprendizaje
• Descibir la evolución de C.
• Discutir cómo escribir algoritmos en C para resolver problemas simples.
• Explicar los diferentes componentes de un programa simple en C.
Copyright © 2005
La Evolución de C
• El lenguaje de programación C fue diseñado y desarrollado por Brian Kernighan y Dennis Ritchie en los Laboratorios Bell Research en el año 1972.
• C es un lenguaje de nivel medio con estructuras de alto nivel comparables a las que dispone Pascal y FORTRAN.
• La especificación de las características de C, su sintaxis y semántica las da el American National Standards Institute (ANSI).
Copyright © 2005
Pasos para Escribir un Programa en C
Los pasos básicos para escribir un programa de computadora en C son los siguientes:
• Leer y entender el contexto del problema que requiere una solución mediante un programa de computadora.
• Desarrollar un algoritmo para resolver el problema.
• Verificar la validez del algoritmo.
• Convertir el algoritmo a lenguaje C.
• Probar y verificar el programa C para su validez.
Copyright © 2005
1 llamadas a bibliotecas2 declaración de funciones3 declaración de variables globales4 main(){5 declaración de variables locales6 sentencias7 }8 definición de funciones
Estructura de un Programa:
Estructura de un Programa en C
La declaración de funciones se conoce también como definición de prototipo de funciones.
Copyright © 2005
• Los nombres de la variables siempre deben comenzar con una letra, esto incluye al carácter “_“.
• El nombre de la variable puede estar formado por una secuencia de letras del alfabeto y/o dígitos de 0 al 9 y/o el carácter “_” (subrayado).
• El estándar ANSI C establece que la variable puede ser de cualquier longitud, pero sólo los primeros 31 caracteres son significativos.
• No se permiten y/o espacios en un nombre de variable.
• Es una buena práctica de programación tener nombres de variables que empiecen con letras minúsculas (a - z).
Variables en un Programa en C
Copyright © 2005
Sentencias de Declaración y Asignación: Las localidades de memoria pueden almacenar enteros,
números reales y caracteres. Las sentencias de declaración ayudan a definir lo que se puede almacenar en un nombre de variable. Para almacenar un entero es como sigue:
int num;
donde: int: Palabra reservada en C que indica una declaración. num: El nombre de la variable. ”;”: Símbolo que se usa como delimitador de sentencia.
• Mediante una sentencia de asignación se almacena un valor en la variable. Ejemplo: num = 15;
Declaración y Asignación en un Programa en C
Copyright © 2005
Extraer los Dígitos Individuales de un Entero de Dos Dígitos
Algoritmo en Lenguaje Natural:Paso 1: Sea num el entero positivo de dos dígitos.Paso 2: El dígito más a la izquierda de num es el cociente de la división
entre 10.Paso 3: El dígito más a la derecha de num es el residuo de la división
entre 10.Paso 4: Mostrar el dígito más a la izquierda y el dígito más a la derecha.
Algoritmo Compacto:
Paso 1: num = 25Paso 2: Dígito más a la izquierda = num / 10Paso 3: Dígito más a la derecha = residuo de num / 10Paso 4: Mostrar el dígito más a la izquierda y el dígito más a la derecha.
Primeros Pasos para escribir un programa en C
Copyright © 2005
Programa Elaborado en Lenguaje C/* Se incluye la librería predefinida (stdio.h) */#include <stdio.h>/* La función principal se inicia aquí */main(){ int num; int digito_izq; int digito_der;/* La variable se inicializa con el valor 25 */ num = 25;
/* El dígito izquierdo se extrae */ digito_izq = num / 10;
/* El dígito derecho se extrae */ digito_der = num - (num /10)*10;
/* Los dígitos son enviados a la salida estándar */ printf("El digito izquierdo es %d\n",digito_izq); printf("El digito derecho es %d\n",digito_der); }
Copyright © 2005
Más acerca de Declaraciones• Se puede combinar en una sola sentencia la declaración
de múltiples variables enteras.
• Ejemplo:
int num, digito_izq, digito_der;
• Se declaran las variables en una sola sentencia con la lista de variables separadas por comas.
•int especifica que una variable entera se está declarando.
• Se asigna espacio de almacenamiento para guardar variables.
Copyright © 2005
Manipulación de Sentencias Largas
• Los programas complejos usualmente tienen sentencias o expresiones largas que se pueden dividir en múltiples líneas.
• Cada línea de la sentencia multilínea se termina con el carácter de diagonal inversa (\).
• La declaración se trata como una sentencia compuesta.
• El siguiente ejemplo:printf(“La temperatura %f fahrenheit esequivalente a %f celsius\n",fahrenheit,celsius);
• Se escribe bien formateado:printf(“La temperatura %f fahrenheit \ es equivalente a %f \ celsius\n",fahrenheit, celsius);
Copyright © 2005
Uso de las Cadenas de Formato
Cadena de Formato Propósito
%d, %i int (notación decimal con signo )
%o int (notación octal sin signo )
%x, %X int (notación hexadecimal sin signo )
%u int (notación decimal sin signo )
%c char
%f %e %E %g %G Double
%s cadena de caracteres
Copyright © 2005
Uso de Secuencias de Escape
Retorno de carro
Tabulador horizontal
Tabulador vertical
Diagonal Inversa
Signo de interrogación
Comilla Simple
Comilla Doble
Número Octal
Número Hexadecimal
\r
\t
\v
\\
\?
\’
\”
\ooo
\xhh
Propósito
Carácter de alerta (timbre)
Retroceso (Backspace)
Formfeed
Nueva línea
Secuencia
\a
\b
\f
\n
Copyright © 2005
Resumen
• Establecer la evolución de C. • Discutir cómo escribir algoritmos en C para solucionar
problemas simples. • Explicar las diferentes componentes de un programa C
simple.
Construir Fundamentos
Sólidos en C
Copyright © 2005
Unidad 2
Copyright © 2005
Objetivos del Aprendizaje
• Explicar cómo escribir programas que tomen una entrada simple usando la función scanf.
• Discutir las reglas que rigen la creación de nombres de variables.
• Discutir las propiedades de algunos de los tipos de datos primitivos pre-definidos en C.
• Describir las propiedades y usos de varios operadores aritméticos.
• Describir la jerarquía de las operaciones o precedencia de operadores en una expresión aritmética.
Copyright © 2005
• En la librería estándar de E/S <stdio.h> existen muchas funciones incorporadas que están disponibles para los usuarios del lenguaje C, como por ejemplo la función printf.
• La instrucción para incluir la librería es: #include
• Para incluir especificamente <stdio.h> sería:
#include <stdio.h>
• La sentencia es una directiva del preprocesador de C para incluir el programa que constituye la librería estándar de E/S.
Aceptar Entradas del Usuario
Copyright © 2005
Aceptar Entradas del Usuario...2• Para ingresar datos de entrada a un programa se
definen variables para almacenar esa información.
• La sentencia con la función para ingresar un entero en una variable de ese tipo es:
scanf("%d", &num);
• Cuando se ejecuta la función scanf:
- La computadora espera un dato válido por parte del usuario.
- Una vez que el valor se obtiene, éste se almacena en la variable num.
- La cadena de caracteres encerrada en comillas en scanf se llama cadena de formato.
-%d indica que un entero decimal va a ser leído.
Copyright © 2005
Aceptar Entradas del Usuario...3
• Asuma que se desea leer la entrada del usuario en dos variables:
- edad es de tipo de dato int.
- peso es de tipo de dato float.
• Se usan las siguientes sentencias para llevar a cabo la lectura :
scanf("%d",&edad);
scanf("%f",&peso);
Copyright © 2005
Aceptar Entradas del Usuario...Ejemplo 1
Ingresar y mostrar la altura de un individuo # include <stdio.h>
main() {
int altura;
/* Se le indica al usuario que hacer */
printf("Ingrese su altura en centimetros\n");
/* Obtener el valor de la variable como entrada del usuario */
scanf("%d", &altura);
/* Imprimir el valor de la variable a la salida estándar */
printf("La altura en centimetros es %d\n",altura);
}
Copyright © 2005
Aceptar Entradas del Usuario...Ejemplo 2
Extraer los Dígitos Individuales de un Entero de
dos Dígitos#include <stdio.h>main(){
int num,digito_izq,digito_der;printf("Ingrese un numero positivo de 2 digitos\n");
/* Obtener el valor de la variable desde el usuario */scanf("%d",&num);
/* El dígito izquierdo y derecho se extraen */digito_izq = num / 10;digito_der = num - (num/10)*10;
/* Cada dígito obtenido es mostrado */printf("El digito izquierdo es: %d\n", digito_izq);printf("El digito derecho es: %d\n", digito_der);
}
Copyright © 2005
Aceptar Entradas del Usuario...Ejemplo 3Calcular el Interés Simple de un Monto Dado:#include <stdio.h>main(){ int monto, tiempo; float tasa, interes_a_pagar; printf("Ingrese el Monto, como un entero\n"); scanf("%d",&monto); printf("Ingrese el numero de anios\n"); scanf("%d",&tiempo); printf("Ingrese la tasa de interes\n"); scanf("%f",&tasa);
/* Cálculo del interés a pagar */ interes_a_pagar = monto * tiempo * tasa / 100;
/* Los detalles del interés se muestran en la salida estándar */printf("Total del interes sobre el Monto %d Anios \
%d Tasa de Interes %f es %f\n", monto, \ tiempo, tasa, interes_a_pagar);
}
Copyright © 2005
Identificadores de Variables
• Los nombres que se le dan a los elementos de programación de C como constantes, variables y funciones se llaman identificadores.
• La convención de nombres de variables recomienda que dichos identificadores deben comenzar con letras minúsculas.
• Los identificadores pueden empezar también con el carácter subrayado (_).
• Escoja nombres de variables que reflejen la naturaleza de su uso.
• Los identificadores de variables no pueden ser iguales a las palabras reservadas de C.
Copyright © 2005
Tipos de Datos Básicos en C
Tipo de Dato
DescripciónRequerimientos
Típicos de Memoria
int Entero 2 bytes
float Número de punto flotante 4 bytes
double Número de punto flotante de doble precisión
8 bytes
char Carácter simple 1 byte
Copyright © 2005
Calificadores de Tipos de Datos• Los tipos de datos básicos pueden aumentarse usando
calificadores de datos.
• Los calificadores de tipo de datos son: short, long, signed y unsigned.
• Las variables enteras pueden ser calificadas como short int, long int, signed int o unsigned int.
• Generalmente, short requiere menos memoria que sólo int, mientras que long requiere más memoria que sólo int.
• Todos estos detalles dependen del compilador y deben ser verificados por el programador.
• Un unsigned int utiliza el mismo espacio de memoria que int pero permite almacenar el doble de números.
Copyright © 2005
Beneficios de los Calificadores de Datos
• Si en un programa, se requiere alta precisión para números de puntos flotantes, se puede usar el calificador long.
• Una variable de tipo double será diferente al declararla como un long double.
• En ciertas aplicaciones, el tamaño del programa y la memoria que requiere deben mantenerse al mínimo.
• Si el programa fuera a ejecutarse en relojes de pulsera u hornos microondas, la memoria definitivamente es muy pequeña. Los calificadores short se usan para optimizar la memoria disponible en estos casos.
Copyright © 2005
Constantes en C
Existen cinco tipos de constantes en C:
• Constante enteras.
• Constante de punto flotante.
• Constante de carácter.
• Constante de cadena.
• Constante de enumeración.
Copyright © 2005
Constantes Enteras
• Una constante entera es un número de valor entero.
• Consiste de una secuencia de dígitos precedido por un signo + o -.
• Se pueden escribir en tres sistemas numeración diferentes:
- Decimal: Permite los dígitos de 0 a 9 y opcionalmente precedido de un signo + o –.
- Octal: Permite los dígitos de 0 a 7 donde 0 es siempre el primer dígito.
- Hexadecimal: Permite los dígitos 0 a 9 y las letras A, B, C, D, E y F, empezando con 0x y 0X.
Copyright © 2005
Constantes de Punto Flotante
• Una constante de punto flotante es un número en base 10 que contienen un punto decimal (.) o un exponente o ambos.
• Algunas constantes de punto flotante válidas son:0.0 1.00.3 1256.43 +2.5 -3.003
Copyright © 2005
Operadores Aritméticos
• Existen 5 operadores aritméticos en C: + - * / %
• Cuando se usan con operandos enteros, todos los operadores anteriores retornan un resultado entero.
• El operador % es válido sólo cuando ambos operandos son enteros.
• Cuando uno de los operandos es un float, el resultado será también un float.
Copyright © 2005
Prioridad de los Operadores Aritméticos
Prioridad Operadores Descripción
Primero * / % Multiplicación, división, módulo
Segundo + - Adición, resta
Tercero = Asignación
Copyright © 2005
Operadores Compuestos de Asignación
Operador Propósito Ejemplo Salida
+= Suma/Asignación X = 10;X += 5;
15
-= Resta/Asignación X = 10;X -= 5;
5
*= Multiplicación/Asignación X = 10;X *= 5;
50
/= División/Asignación X = 10;X /= 5;
2
%= Módulo/Asignación X = 10;X %= 5;
0
Copyright © 2005
Conversión Implicita de Tipos
• Lenguaje C realiza una conversión automática de un tipo de dato a otro y se denomina Conversión Implícita de Tipo.
• Mientras que la conversión de tipo es explícita, el compilador ejecuta implícitamente conversión de tipos.
int i, j;float f;char ch;i = 100;f = 1000.21;j = f;f = i;ch = i;
• Todas las sentencias anteriores son asignaciones válidas.
Copyright © 2005
Conversión Explicita de Tipos• Considere las siguientes declaraciones:
int x;float y;
• ¿Que sucede con la expresión aritmética
(x – y) % 10 ?
- La expresión (x - y) devuelve un resultado de punto flotante dado que y es un float.
- El operador % no es válido dado que uno de los operandos no es un entero.
- Existen ocasiones donde es necesario aplicar el operador %.
- En estos casos, se debe convertir explícitamente el punto flotante a un entero.
- Esto se hace a través de lo que se denomina operación de Conversión (Casting).
Copyright © 2005
Resumen
• Se explicó cómo escribir programas que toman una simple entrada usando la función scanf.
• Se discutieron las reglas que rigen la creación de nombres de variables.
• Se estudiaron las propiedades de los tipos de datos primitivos predefinidos de C.
• Se describieron las propiedades y el uso de los diferentes operadores aritméticos.
• Se estableció la jerarquía de las operaciones o la precedencia de los operadores en las expresiones aritméticas.