Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Manual de Prácticas
Principios de
Programación
Elaboró:
Erick D. Flores Ojeda
Luis Rolando Guarneros Nolasco
Aprobó:
Gonzalo Malagón González
Fecha de Aprobación:
Septiembre del 2012
Manual de prácticas
Contenido
Contenido ....................................................................................................................................... 2
UNIDAD 1 – Lógica de Programación ............................................................................................ 3
“Algoritmos” ........................................................................................................................... 3
“Diagramas de flujo” ............................................................................................................... 8
Unidad 2 – Fundamentos de Programación ................................................................................... 17
“Tipos de datos” ........................................................................................................................ 17
Enteros .................................................................................................................................. 18
Flotantes................................................................................................................................ 18
Caracteres ............................................................................................................................. 19
“Operadores y expresiones” ...................................................................................................... 25
“Decisión y repetición” ............................................................................................................. 41
“Funciones” .............................................................................................................................. 49
Unidad 3 - Tópicos específicos...................................................................................................... 58
“Arreglos” ................................................................................................................................. 58
Práctica Proyecto Final “Control de puerto paralelo haciendo uso del lenguaje de programación
C” ............................................................................................................................................. 65
2
Manual de prácticas
El alumno resolverá problemas de ingeniería a un nivel básico analizando el problema para identificar los
datos que se requieren, así como dar las instrucciones adecuadas para obtenerlo
La práctica se desarrolla para asegurar el logro de la capacidad de análisis y diseño usando la simbología de
diagramas de flujo para la solución de problemas, con esta práctica fortalece la parte integral del alumno
para conocer la importancia de análisis y diseño en programación de alto nivel.
Introducción
los elementos con los que contamos para
Elaborar el Algoritmo
deben considerar los siguientes pasos: Análisis
del problema, Elaborar el Algoritmo, Codificación El algoritmo son las instrucciones para resolver el
del algoritmo, Depuración de código y problema. Puede ser de texto (Pseudocódigo) o
Mantenimiento de programa. gráfico (Diagrama de Flujo).
De los cuales por el momento nos concierne los Así bien, si definimos a un Algoritmo sería: La
dos primeros pasos, Análisis del problema y secuencia de pasos o instrucciones para resolver
Elaborar el Algoritmo. un problema dado.
3
Manual de prácticas
Desarrollo de la Práctica
Metodología ó Técnica.
4
Manual de prácticas
b) Desarrolle los Algoritmos: Escriba la secuencia de los algoritmos para los problemas planteados.
a) Algoritmos diseñados
b) Diagrama de flujo generado.
c) Resultados y observaciones al modificar el diagrama con nuevos valores
Evaluación Teórica
5
Manual de prácticas
2. Esta característica de un algoritmo dice que tiene cada uno de los pasos bien definidos, y no se
prestan a diferentes interpretaciones independientemente de quién lo lea.
3. Es una secuencia finita de pasos bien determinados que sirven para resolver un problema:
4. La característica de este tipo de algoritmo se refiere a que no importa las veces que se ejecute el
algoritmo, siempre debe llegar al mismo resultado.
Evaluación Práctica
6
Manual de prácticas
Conclusión
El análisis de la problemática haciendo uso de algoritmos permite ver las entradas procesos y salidas que se
necesitan para realizar una operación o actividad de un problema planteado. Por lo que su comprensión
deberá ser eficaz para lograr el fin.
7
Manual de prácticas
“Diagramas de flujo”
Objetivo
El alumno resolverá problemas de ingeniería a un nivel básico analizando el problema para identificar los
datos que se requieren, así como dar las instrucciones adecuadas para obtenerlo.
La práctica se desarrolla para asegurar el logro de la capacidad de análisis y diseño usando la simbología de
diagramas de flujo para la solución de problemas, con esta práctica fortalece la parte integral del alumno
para conocer la importancia de análisis y diseño en programación de alto nivel.
Introducción
8
Manual de prácticas
Alternativa
9
Manual de prácticas
Repetitiva o iterativa
Son aquellas en las que las acciones se ejecutan
un número determinado de veces y dependen de
un valor predefinido o el cumplimiento de una
determinada expresión lógica. Un bucle o lazo es
- Alternativa doble: el conjunto de acciones a repetir. En
consecuencia es preciso disponer de estructuras
Es aquella que permite la elección entre dos algorítmicas que permitan describir una iteración
acciones o tratamientos en función de que se de forma cómoda. Las tres estructuras mas
cumpla o no determinada condición. usuales dependiendo de que la condición se
encuentre al principio o al final de la iteración
son: Estructura mientras, repetir hasta y
estructura para.
10
Manual de prácticas
Programa
11
Manual de prácticas
Desarrollo de la Práctica
Metodología ó Técnica.
b) Diagrama de flujo: Haciendo uso de la aplicación RAPTOR instalada, ejecutar el programa y diseñar el
diagrama de flujo en base al algoritmo planteado.
12
Manual de prácticas
Diagrama de Flujo:
13
Manual de prácticas
De lo contrario
Hacer C <- A / B
Mostrar C
Fin del Algoritmo
Diagrama de flujo
d) Ejecución. En la opción Play del RAPTOR ejecute el diagrama de flujo para revisar que la
salida sea correcta.
a) Algoritmos diseñados
b) Diagrama de flujo generado.
c) Resultados y observaciones al modificar el diagrama con nuevos valores
14
Manual de prácticas
Evaluación Teórica
Evaluación Práctica
15
Manual de prácticas
Conclusión
El análisis de la problemática haciendo uso de algoritmos y diagramas de flujo permite ver las entradas
procesos y salidas que se necesitan para realizar una operación o actividad de un problema planteado. Por
lo que su comprensión deberá ser eficaz para lograr el fin.
Joyanes, Aguilar
Luis (2006) Programación en C++ Madrid España McGraw-Hill
Joyanes, Aguilar
Luis , Lucas Programación en C++,
(2006) Madrid España McGraw-Hill
Sánchez García serie SCHAUM
16
Manual de prácticas
Objetivo
Al finalizar la práctica el alumno seleccionará los tipos de datos adecuados para el almacenamiento y
procesamiento de datos y construirá expresiones con operadores, constantes y variables para la solución
de problemas
Introducción
Tipos de datos comunes son: enteros, números
Tipos de Datos de coma flotante (decimales), cadenas
alfanuméricas, fechas, horas, colores, coches o
17
Manual de prácticas
Enteros
Flotantes
Los enteros son el tipo de dato más primitivo en
C. Se usan para representar números enteros. Se denomina flotantes a los tipos de datos que
Pero siempre se pueden encontrar otras representan a los números reales, ya que utilizan
aplicaciones para los números enteros. En un sistema de representación basado en la
general se pueden usar para representar técnica de coma flotante, que permite operar con
cualquier variable discreta. números reales de diversas magnitudes,
mediante un número decimal llamado mantisa y
Los tipos de datos enteros son: short, int, long y un exponente que indica el orden de magnitud.
long long.
El tipo de dato flotante en lenguaje C sólo tiene
Es decir que para el lenguaje C existen diferentes dos tamaños: el float y el double, que son 4 bytes
tamaños de números enteros que, según el y 8 bytes respectivamente. Se los puede utilizar
compilador y la plataforma de hardware, pueden tanto para representar números decimales, como
tener desde 1 byte hasta 8 bytes. para representar números enteros con un orden
de magnitud muy grande.
Además, el lenguaje C hace la distinción de si el
entero es con signo o sin signo (signed o La forma de declarar una variable flotante es
unsigned). La forma de declarar un entero es con escribiendo en una línea uno de los tipos de
uno de los tipos de datos que sean enteros según datos flotantes y a continuación el nombre de la
el tamaño que se quiera. En caso de que no se variable y tal vez algún valor que se les quiera
declare si es con signo o sin signo, se toma con dar.
signo.
Algunos ejemplos:
Algunos ejemplos de declaraciones de enteros:
float a;
int a; double a = 1e23;
unsigned int a; double a = 3.1416;
signed long a; float a = 4e-9;
signed long long a = 10000000; double a = -78;
Todos los números son representados en Hay que tener en cuenta que aunque los valores
memoria mediante una cadena de bits. En el caso flotantes son más convenientes para algunas
de los números con signo, el bit más significativo aplicaciones, hay casos en los que se prefieren los
es el que se usa para representar el signo. La enteros. Esto se debe a que los números flotantes
representación de los números negativos se no necesariamente tienen soporte de hardware,
realiza mediante el complemento a dos, que es en particular en las plataformas integradas. Una
una técnica que permite operar con los números alternativa que se utiliza en estas situaciones es
negativos de forma lógica. interpretar los enteros como decimales de forma
18
Manual de prácticas
que 150 se interprete como 1.5 y 2345 como Resumen de Tipos de Datos:
23.45.
Tipo Bytes Desde Hasta
Caracteres
void Es nulo (NULL) no retorna nada
Los caracteres se representan utilizando el tipo
char, que tiene sólo 1 byte de tamaño. Este tipo
signed 1 -128 127
se utiliza para representar los 255 caracteres de
char
la tabla de caracteres del sistema. El tipo char es
también un tipo entero, ya que puede tomar unsigned 1 0 255
valores de 0 a 255. char
unsigned 4 0 4294967295
Es importante notar que con la llegada de la
codificación UTF-8, los caracteres de los diversos long
idiomas pueden ocupar 1, 2, 3 o 4 bytes, de modo float 4 3,4x10-38 3,4x1038
que el tipo char ya no alcanza para la
representación de todos los caracteres. Por ello, double 8 1,7x10-308 1,7x10308
el estándar C99 introduce el tipo wchar que
long 10 3,4x10-4932 3,4x104932
puede ocupar más de 1 byte, según sea necesario
double
para la codificación utilizada por el sistema.
19
Manual de prácticas
Desarrollo de la Práctica
#include <stdio.h>
int main() {
int a,b;
printf ("introduzca dos valores con el formato \"a,b\" :");
scanf("%i,%i",&a,&b);
printf ("el primer valor : %i\n",a);
printf ("el segundo valor : %i\n",b);
return 0;
}
20
Manual de prácticas
b) Identifique los tipos de datos: Del ejemplo anterior identifique los tipos de datos que se
encuentran declarados en la estructura del programa.
21
Manual de prácticas
e) Compilación: Compile el código haciendo uso del menú “Generar” “Generar Solución” (F6), en
caso de presentarse errores verifique el código.
g) Modifique el código. Cambie la declaración de los tipos de datos de las variables y los mensajes de
entrada del teclado, por ejemplo: si queremos que nos de una calificación:
a. float cal;
a) Código en lenguaje C
b) Pantalla de salida al ejecutar el programa generado.
c) Resultados y observaciones al modificar el código con nuevos valores
Evaluación Teórica
a) short, int, long b) short, int, float c) short, int, double d) char, int, float
22
Manual de prácticas
Evaluación Práctica
OBJETIVO Al finalizar la práctica el alumno seleccionará los tipos de datos adecuados para el
almacenamiento y procesamiento de datos y construirá expresiones con
operadores, constantes y variables para la solución de problemas
NOMBRE DEL
ALUMNO
INSTRUCCIONES A continuación se presentan los criterios que van a ser verificados en el desempeño
del alumno.
De la siguiente lista marque con una aquellas actividades que cumple el alumno
durante el desarrollo de la práctica.
Conclusión
El conocimiento y la habilidad para identificar los tipos de datos que deben ser empleados de acuerdo a la
información que será alimentada al programa son importantes, ya que permitirá que los resultados de las
operaciones realizadas con los datos arrojen la información verídica al asignarlos adecuadamente.
Joyanes, Aguilar
Luis (2006) Programación en C++ Madrid España McGraw-Hill
Joyanes, Aguilar
Luis , Lucas Programación en C++,
(2006) Madrid España McGraw-Hill
Sánchez García serie SCHAUM
23
Manual de prácticas
24
Manual de prácticas
“Operadores y expresiones”
Objetivo
Al finalizar la práctica el alumno construirá expresiones con operadores, constantes y variables para la
solución de problemas
Describir las características de los operadores y Seleccionar los tipos de datos adecuados para
expresiones disponibles en un lenguaje de alto almacenamiento y procesamiento de datos.
nivel.
Formular la solución a problemas, mediante el
Construir expresiones con operadores, uso de algoritmos y diagramas de flujo, para su
constantes y variables para la solución de implementación con un lenguaje de
problemas. programación.
Introducción
25
Manual de prácticas
26
Manual de prácticas
27
Manual de prácticas
Desarrollo de la Práctica
b) Identifique los tipos de Operadores: Del ejemplo anterior identifique los operadores que se
encuentran declarados en la estructura del programa.
28
Manual de prácticas
e) Compilación: Compile el código haciendo uso del menú “Generar” “Generar Solución” (F6), en
caso de presentarse errores verifique el código.
29
Manual de prácticas
b) Identifique los Operadores de asignación: Del ejemplo anterior identifique y analice los
operadores asignación que se encuentran declarados en la estructura del programa.
30
Manual de prácticas
e) Compilación: Compile el código haciendo uso del menú “Generar” “Generar Solución” (F6), en
caso de presentarse errores verifique el código.
b) Identifique la jerarquía de los Operadores: Del ejemplo anterior identifique y analice la jerarquía
de los operadores que se encuentran declarados en la estructura del programa.
31
Manual de prácticas
e) Compilación: Compile el código haciendo uso del menú “Generar” “Generar Solución” (F6), en
caso de presentarse errores verifique el código.
a) Código en lenguaje C
b) Pantalla de salida al ejecutar el programa generado.
c) Análisis y observaciones de cada ejemplo
Evaluación Teórica
1. La instrucción: a = b % c almacena en a:
a) 32 b) 23 c) 82 d) 40
3. Según la jerarquía de los operadores, selecciona cuales están ordenados según su precedencia de
mayor a menor.
a) ( ), +, * b) ( ), -, / c) ( ), *, + d) /, -, ++
32
Manual de prácticas
Evaluación Práctica
Conclusión
El conocimiento y la habilidad para identificar los tipos de operadores que deben ser empleados de acuerdo
a la información que será alimentada al programa será importante, ya que permitirá que los resultados de
las operaciones realizadas con los datos arrojen la información verídica al asignarlos adecuadamente.
Joyanes, Aguilar
Luis (2006) Programación en C++ Madrid España McGraw-Hill
Joyanes, Aguilar
Luis , Lucas Programación en C++,
(2006) Madrid España McGraw-Hill
Sánchez García serie SCHAUM
33
Manual de prácticas
34
Manual de prácticas
“Estructura de un programa”
Objetivo
Al finalizar la práctica, el alumno establecerá los elementos que conforman la estructura de un programa
para computadora
Introducción
1. Funciones
estructura básica: 2. Variables
35
Manual de prácticas
36
Manual de prácticas
Desarrollo de la Práctica
37
Manual de prácticas
c) Escritura del código: Escriba el siguiente código y realice las modificaciones adecuadas. Guarde el
archivo como led
d) Compilación: Compile el código haciendo uso del menú “Generar” “Generar Solución” (F6), en
caso de presentarse errores verifique el código.
f) Modifique el código con nuevos parámetros. Realice cambios en los nombres de variables o
funciones para visualizar la nueva salida.
38
Manual de prácticas
a) Código en lenguaje C
b) Salidas de pantalla de la ejecución del programa.
c) Resultados y observaciones al modificar el código con nuevos valores
Evaluación Teórica
1.- Es la función principal de todo programa en lenguaje C, la ejecución del programa inicia en dicha
función:
3.- La declaración de una variable de este tipo hace que la variable este disponible para el uso en todas
las funciones del archivo fuente:
Evaluación Práctica
39
Manual de prácticas
Conclusión
Joyanes, Aguilar
Luis (2006) Programación en C++ Madrid España McGraw-Hill
Joyanes, Aguilar
Luis , Lucas Programación en C++,
(2006) Madrid España McGraw-Hill
Sánchez García serie SCHAUM
40
Manual de prácticas
“Decisión y repetición”
Objetivo
Interpretar las alternativas para decisión y Describir y establecer los elementos que
repetición que incorpora el lenguaje en uso. conforman la estructura de un programa para
computadora.
Construir programas que empleen decisiones y
repeticiones. Comprender el proceso para la generación de
un programa.
Introducción
/* Si se trata de dos o más instrucciones, estas
Estructura de decisión If-Else van entre llaves { } */
41
Manual de prácticas
42
Manual de prácticas
Estructuras de repetición }
getch();
Las computadoras están diseñadas especialmente }
para aquellas aplicaciones en las cuales una
operación o conjunto de ellas deben de repetirse La sintaxis de la estructura do/ while es:
varias veces. A las estructuras que repiten una
secuencia de instrucciones un número do {
determinado de veces se les denomina bucles y Instrucciones que se repetirán al
se llama iteración al acto de repetir la ejecución menos una vez mientras la condición sea
de una secuencia de acciones. verdadera;
Instrucciones adicionales:
Estructuras de control de repetición while y do/ }
while while (condición);
43
Manual de prácticas
Ejemplo:
#include <stdio.h>
#include <conio.h>
void main(){
int x=1, y=1, z=0, a;
printf("Serie de Fibonaci\n\n");
printf("Escribe el numero final: ");
scanf("%i",&a);
printf("%6i",x);
printf("%6i", y);
for (; z < a ;){
z=x+y;
if(z <= a){
printf("%6i",z);
x = y;
y = z;
}
}
getch();
}
44
Manual de prácticas
Desarrollo de la Práctica
45
Manual de prácticas
d) Compilación: Compile el código haciendo uso del menú “Generar” “Generar Solución” (F6),
en caso de presentarse errores verifique el código.
f) Modifique el código con nuevos parámetros. Realice cambios en los nombres de variables o funciones
para visualizar la nueva salida.
a) Código en lenguaje C
b) Salidas de pantalla de la ejecución del programa.
c) Resultados y observaciones al modificar el código con nuevos valores
Evaluación Teórica
2.- Estructura de control que evalúa una expresión que puede tomar n valores distintos, tomando solo un
camino entre los n posibles según el resultado de la expresión.
3.- Estructura de control que permite repetir un conjunto de instrucciones mientras se cumpla una
determinada condición
4.- Tipo de ciclo que prueba la condición después de ejecutar las instrucciones del bucle y por lo tanto
esta se ejecutará por lo menos una vez.
5.- Tipo de ciclo que maneja de forma automática todos los detalles de repetición, controlada por un
contador.
46
Manual de prácticas
Evaluación Práctica
Conclusión
El conocimiento de las estructuras repetitivas y de selección de un lenguaje de alto nivel permitirá escribir y
diseñar programas con un control adecuado del flujo de datos esperado.
Joyanes, Aguilar
Luis (2006) Programación en C++ Madrid España McGraw-Hill
Joyanes, Aguilar
Luis , Lucas Programación en C++,
(2006) Madrid España McGraw-Hill
Sánchez García serie SCHAUM
47
Manual de prácticas
48
Manual de prácticas
“Funciones”
Objetivo
Al finalizar la práctica, el alumno diseñará programas en un lenguaje de alto nivel con funciones para el
manejo del flujo de la información y estructuración del programa.
Diseñar programas que empleen funciones. Describir y establecer los elementos que
conforman la estructura de un programa para
Verificar la sintaxis de los programas computadora.
elaborados para su depuración, corrigiendo la
sintaxis y mejorando el estilo de programación. Comprender el proceso para la generación de
un programa.
Introducción
49
Manual de prácticas
es particular dado que la ejecución del programa • tipo_de_retorno: es el tipo del valor devuelto
se inicia con las instrucciones contenidas en su por la función, o, en caso de que la función no
interior. Una vez iniciada la ejecución del devuelva valor alguno, la palabra reservada void.
programa, desde la función main se puede llamar
a otras funciones y, posiblemente, desde estas • nombre_de_la_función: es el nombre o
funciones a otras. Otra particularidad de la identificador asignado a la función.
función main es que se llama directamente desde
el sistema operativo y no desde ninguna otra • lista_de_parámetros: es la lista de declaración
función. De esta manera, un programa en C sólo de los parámetros que son pasados a la función.
puede contener una función main. Éstos se separan por comas. Debemos tener en
cuenta que pueden existir funciones que no
Con el propósito de permitir un manejo eficiente utilicen parámetros.
de los datos, las funciones en C no se pueden
anidar. En otras palabras, una función no se • cuerpo_de_la_función: está compuesto por un
puede declarar dentro de otra función, por lo que conjunto de sentencias que llevan a cabo la tarea
todas las funciones son globales o externas, lo específica para la cual ha sido creada la función.
que hace que puedan llamarse desde cualquier
parte de un programa. Se puede acceder (llamar) • return expresión: mediante la palabra
a una determinada función desde cualquier parte reservada return, se devuelve el valor de la
de un programa. Cuando se llama a una función, función, en este caso representado por
se ejecutan las instrucciones que constituyen expresión.
dicha función. Una vez que se ejecutan las
instrucciones de la función, se devuelve el control Vamos a suponer que queremos crear un
del programa a la siguiente instrucción (si existe) programa para calcular el precio de un producto
inmediatamente después de la que provocó la basándose en el precio base del mismo y el
llamada a la función. impuesto aplicable. A continuación se muestra el
código fuente de dicho programa:
Cuando se accede a una función desde un
determinado punto del programa, se le puede #include <stdio.h>
pasar información mediante unos identificadores float precio(float base, float impuesto); /*
especiales conocidos como argumentos (también declaración */
denominados parámetros). Una vez que la main()
función procesa esta información, devuelve un {
valor mediante la instrucción return. float importe = 2.5;
float tasa = 0.07;
La estructura general de una función en C es la printf("El precio a pagar es: %.2f\n",
siguiente: precio(importe, tasa));
return 0;
tipo_de_retorno nombre_de_la_funcion }
(lista_de_parámetros)
{ float precio(float base, float impuesto) /*
cuerpo_de_la_función definición */
return expresión {
} float calculo;
calculo = base + (base * impuesto);
Donde: return calculo;
}
50
Manual de prácticas
El ejemplo anterior se compone de dos funciones, el tipo de dato que devuelve. Los prototipos de
la función requerida main y la función creada por las funciones que se utilizan en un programa se
el usuario precio, que calcula el precio de un incluyen generalmente en la cabecera del
producto tomando como parámetros su precio programa y presentan la siguiente sintaxis:
base y el impuesto aplicable. La función precio
calcula el precio de un producto sumándole el tipo_de_retorno
impuesto correspondiente al precio base y nombre_de_la_función(lista_de_parámetros);
devuelve el valor calculado mediante la sentencia
return. En el prototipo de una función no se especifican
las sentencias que forman parte de la misma, sino
Por otra parte, en la función main declaramos dos sus características. Por ejemplo:
variables de tipo float que contienen el precio int cubo(int numero);
base del producto y el impuesto aplicable. La
siguiente sentencia dentro de la función main es En este caso se declara la función cubo que
la llamada a la función de biblioteca printf, que recibe como parámetro una variable de tipo
recibe como parámetro una llamada a la función entero (numero) y devuelve un valor del mismo
precio, que devuelve un valor de tipo float. De tipo. En ningún momento estamos especificando
esta manera, la función printf imprime por la qué se va a hacer con la variable numero, sólo
salida estándar el valor devuelto por la función declaramos las características de la función cubo.
precio. Es importante tener en cuenta que las Cabe señalar que el nombre de los parámetros es
variables importe y tasa (argumentos) dentro de opcional y se utiliza para mejorar la comprensión
la función main tienen una correspondencia con del código fuente. De esta manera, el prototipo
las variables base e impuesto (parámetros) de la función cubo podría expresarse de la
dentro de la función precio respectivamente. siguiente manera:
51
Manual de prácticas
debemos incluir el fichero stdio.h que contiene el indica que la función no utiliza parámetros.
prototipo de esta función. Después del encabezado de la función, debe
aparecer, delimitado por llaves ({ y }), el cuerpo
Tras declarar una función, el siguiente paso es de la función compuesto por las sentencias que
implementarla. Generalmente, este paso se llevan a cabo la tarea específica de la función.
conoce como definición. Es precisamente en la Veamos la definición de la función cubo
definición de una función donde se especifican declarada en el apartado anterior:
las instrucciones que forman parte de la misma y
que se utilizan para llevar a cabo la tarea int cubo(int base)
específica de la función. La definición de una {
función consta de dos partes, el encabezado y el int potencia;
cuerpo de la función. En el encabezado de la potencia = base * base * base;
función, al igual que en el prototipo de la misma, return potencia;
se tienen que especificar los parámetros de la }
función, si los utiliza y el tipo de datos que
devuelve, mientras que el cuerpo se compone de A los argumentos que recibe la función también
las instrucciones necesarias para realizar la tarea se les suele llamar parámetros. Sin embargo,
para la cual se crea la función. La sintaxis de la algunos autores consideran como parámetros a la
definición de una función es la siguiente: lista de variables entre paréntesis utilizada en la
declaración o en la definición de la función, y
tipo_de_retorno como argumentos los valores utilizados cuando
nombre_de_la_función(lista_de_parámetros) se llama a la función. También se utilizan los
{ términos argumentos formales y argumentos
sentencias; reales, respectivamente, para hacer esta
} distinción.
El tipo_de_retorno representa el tipo de dato del Cuando un programa utiliza un número elevado
valor que devuelve la función. Este tipo debe ser de funciones, se suelen separar las declaraciones
uno de los tipos simples de C, un puntero a un de función de las definiciones de las mismas. Al
tipo de C o bien un tipo struct. De forma igual que con las funciones de biblioteca, las
predeterminada, se considera que toda función declaraciones pasan a formar parte de un fichero
devuelve un tipo entero (int). En otras palabras, si cabecera (extensión .h), mientras que las
en la declaración o en la definición de una definiciones se almacenan en un fichero con el
función no se especifica el tipo_de_retorno, el mismo nombre que el fichero .h, pero con la
compilador asume que devuelve un valor de tipo extensión .c. En algunas ocasiones, un
int. programador no desea divulgar el código fuente
de sus funciones. En estos casos, se suele
El nombre_de_la_funcion representa el nombre proporcionar al usuario el fichero de cabecera, el
que se le asigna a la función. Se recomienda que fichero compilado de las definiciones (con
el nombre de la función esté relacionado con la extensión .o, de objeto) y una documentación de
tarea que lleva a cabo. En caso de que la función las mismas. De esta manera, cuando el usuario
utilice parámetros, éstos deben estar listados desea hacer uso de cualquiera de las funciones,
entre paréntesis a continuación del nombre de la sabe qué argumentos pasarle y qué tipo de datos
función, especificando el tipo de dato y el devuelve, pero no tiene acceso a la definición de
nombre de cada parámetro. En caso de que una las funciones.
función no utilice parámetros, se pueden dejar
los paréntesis vacíos o incluir la palabra void, que
52
Manual de prácticas
Una función en C solo puede devolver un valor. Para que una función realice la tarea para la cual
Para devolver dicho valor, se utiliza la palabra fue creada, debemos acceder o llamar a la
reservada return cuya sintaxis es la siguiente: misma. Cuando se llama a una función dentro de
una expresión, el control del programa se pasa a
Return <expresión>; ésta y sólo regresa a la siguiente expresión de la
que ha realizado la llamada cuando encuentra
Donde <expresión> puede ser cualquier tipo de una instrucción return o, en su defecto, la llave
dato salvo un array o una función. Además, el de cierre al final de la función.
valor de la expresión debe coincidir con el tipo de
dato declarado en el prototipo de la función. Por Generalmente, se suele llamar a las funciones
otro lado, existe la posibilidad de devolver desde la función main, lo que no implica que
múltiples valores mediante la utilización de dentro de una función se pueda acceder a otra
punteros o estructuras. Dentro de una función función. Cuando queremos acceder a una
pueden existir varios return dado que el función, debemos hacerlo mediante su nombre
programa devolverá el control a la sentencia que seguido de la lista de argumentos que utiliza
ha llamado a la función en cuanto encuentre la dicha función encerrados entre paréntesis. En
primera sentencia return. Si no existen return, la caso de que la función a la que se quiere acceder
ejecución de la función continúa hasta la llave del no utilice argumentos, se deben colocar los
final del cuerpo de la función (}). paréntesis vacíos.
Hay que tener en cuenta que existen funciones Cualquier expresión puede contener una llamada
que no devuelven ningún valor. El tipo de dato a una función. Esta llamada puede ser parte de
devuelto por estas funciones puede ser void, una expresión simple, como una asignación, o
considerado como un tipo especial de dato. En puede ser uno de los operandos de una expresión
estos casos, la sentencia return se puede escribir más compleja. Por ejemplo:
como return o se puede omitir directamente. Por
ejemplo: a = cubo(2);
calculo = b + c / cubo(3);
void imprime_cabecera();
{ Materiales y reactivos
printf("esta función sólo imprime esta línea");
return; 1.- Aplicación Visual Studio para creación de
} programas.
2.- Manual de prácticas
equivale a: 3.- Plumón
4.- Borrador
void imprime_cabecera();
{
printf("esta función sólo imprime esta línea");
}
53
Manual de prácticas
Desarrollo de la Práctica
54
Manual de prácticas
#include <stdio.h>
int cubo(int base);
main()
{
int numero;
for(numero=1; numero<=5; numero++){
printf("El cubo del número %d es %d\n", numero, cubo(numero));
}
return 0;
}
int cubo(int base)
{
int potencia;
potencia = base * base * base;
return potencia;
}
d) Compilación: Compile el código haciendo uso del menú “Generar” “Generar Solución” (F6), en
caso de presentarse errores verifique el código.
• Modifique el código con nuevos parámetros. Agregue 4 funciones que realicen las operaciones
básicas de suma, resta, multiplicación y división con paso de 2 parámetros.
a) Código en lenguaje C
b) Salidas de pantalla de la ejecución del programa.
c) Resultados y observaciones al modificar el código con nuevos valores
Evaluación Teórica
55
Manual de prácticas
3.- Cuando pasamos información a una función por medio de unos identificadores especiales, decimos
que estamos haciendo uso de:
4.- Elemento de una función que siempre tiene que estar presente:
5.- Ejemplo de una función declarada correctamente que devuelve un valor entero
Evaluación Práctica
56
Manual de prácticas
Conclusión
Estructurar un programa haciendo uso de funciones permite al desarrollador tener un excelente control del
contenido del diseño del software, ya que líneas de código que se repiten dentro del mismo podrán ser
agrupadas y diseñadas en un función la cual pueda ser llamada desde cualquier lugar del flujo del programa
en el cual se le solicite. Esto permitirá eleva el nivel y diseño de programas con un control adecuado del
flujo de datos esperado.
Joyanes, Aguilar
Luis (2006) Programación en C++ Madrid España McGraw-Hill
Joyanes, Aguilar
Luis , Lucas Programación en C++,
(2006) Madrid España McGraw-Hill
Sánchez García serie SCHAUM
57
Manual de prácticas
Objetivo
Al finalizar la práctica, el alumno diseñará programas que implique el manejo de arreglos de una o más
dimensiones en un lenguaje de alto para el manejo del flujo de la información y estructuración del
programa.
Integrar a un programa arreglos de una o más Construir programas que empleen decisiones y
dimensiones repeticiones.
Introducción
int listanum[10];
58
Manual de prácticas
En C, todos los arreglos usan cero como índice tabladenums[2][3] = 15; /* Asigna 15 al
para el primer elemento. Por tanto, el ejemplo elemento de la 3ª fila y la 4ª columna*/
anterior declara un arreglo de enteros con diez num = tabladenums[25][16];
elementos desde listanum[0] hasta listanum[9].
A continuación se muestra un ejemplo que asigna
La forma como pueden ser accesados los al primer elemento de un arreglo bidimensional
elementos de un arreglo, es de la siguiente cero, al siguiente 1, y así sucesivamente.
forma:
main()
listanum[2] = 15; /* Asigna 15 al 3er elemento del {
arreglo listanum*/ int t,i,num[3][4];
num = listanum[2]; /* Asigna el contenido del 3er
elemento a la variable num */ for(t=0; t<3; ++t)
for(i=0; i<4; ++i)
El lenguaje C no realiza comprobación de num[t][i]=(t*4)+i*1;
contornos en los arreglos. En el caso de que
sobrepase el final durante una operación de for(t=0; t<3; ++t)
asignación, entonces se asignarán valores a otra {
variable o a un trozo del código, esto es, si se for(i=0; i<4; ++i)
dimensiona un arreglo de tamaño N, se puede printf("num[%d][%d]=%d",t,i,num[t][i]);
referenciar el arreglo por encima de N sin printf("\n");
provocar ningún mensaje de error en tiempo de }
compilación o ejecución, incluso aunque
probablemente se provoque el fallo del }
programa. Como programador se es responsable
de asegurar que todos los arreglos sean lo En C se permite la inicialización de arreglos,
suficientemente grandes para guardar lo que debiendo seguir el siguiente formato:
pondrá en ellos el programa.
tipo nombre_arr[ tam1 ][ tam2 ] ... [ tamN] =
C permite arreglos con más de una dimensión , el {lista-valores};
formato general es:
Por ejemplo:
tipo nombre_arr [ tam1 ][ tam2 ] ... [ tamN];
int i[10] = {1,2,3,4,5,6,7,8,9,10};
Por ejemplo un arreglo de enteros int num[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
bidimensionales se escribirá como:
Observar que para declarar cada dimensión lleva 1.- Aplicación Visual Studio para creación de
sus propios paréntesis cuadrados. programas.
2.- Manual de prácticas
Para acceder los elementos se procede de forma 3.- Plumón
similar al ejemplo del arreglo unidimensional, 4.- Borrador
esto es:
59
Manual de prácticas
Desarrollo de la Práctica
60
Manual de prácticas
1. #include <stdio.h>
2. #include <conio.h>
3.
4. #define MAX 12
5.
6. void main(){
7.
8. int a[MAX], b[MAX], c[MAX], i, j=0, k=0;
9.
10.
11.
12. printf ("Programa que almacena 12 numeros en un arreglo ");
13. printf ("y luego los separa en dos de acuerdo a su valor.\n");
14.
15. for (i=0; i < MAX; i++){
16. printf ("Introduce el valor %i: ", i+1);
17. scanf ("%i", &a[i]);
18. }
19.
20. for (i=0; i < MAX; i++)
21.
22. if (a[i] < MAX){
23.
24. b[j] = a[i];
25. j++;
26. }
27.
28. else {
29.
30. c[k] = a[i];
31. k++;
32. }
33.
34. printf ("\nLos numeros quedan asi:\n\n");
35.
36. for (i=0; i < j; i++)
37. printf ("%i\n", b[i]);
38.
39. for (i=0; i < k; i++)
40. printf ("\t%i\n", c[i]);
41.
42. getch();
43. }
d) Compilación: Compile el código haciendo uso del menú “Generar” “Generar Solución” (F6), en
caso de presentarse errores verifique el código.
61
Manual de prácticas
b) Al realizar esto se deberá mostrar la entrada de datos en pantalla, en caso contrario revise el código
e identifique los errores generados.
f) Modifique el código con nuevos parámetros. Modifique los arreglos de manera que se puedan manejar
diferentes tipos de datos.
a. Código en lenguaje C
b. Salidas de pantalla de la ejecución del programa.
c. Resultados y observaciones al modificar el código con nuevos valores
Evaluación Teórica
1.- Es una colección de variables del mismo tipo que se referencian utilizando un nombre común
62
Manual de prácticas
Evaluación Práctica
Conclusión
El manejo de arreglos permite manipular datos en memoria, los cuales se perderían si se manejan con
estructuras repetitivas en una sola variable de lectura. De esta forma se tendrá comprendido como es el
manejo de registros en un circuito electrónico, por lo que se podrán definir áreas exclusivas de memoria en
las cuales se almacenarán los datos que serán utilizados posteriormente por un proceso en particular.
Joyanes, Aguilar
Luis (2006) Programación en C++ Madrid España McGraw-Hill
Joyanes, Aguilar
Luis , Lucas Programación en C++,
(2006) Madrid España McGraw-Hill
Sánchez García serie SCHAUM
63
Manual de prácticas
64
Manual de prácticas
Objetivo
Al finalizar la práctica el alumno diseñará un circuito con el protoboard que permita la comunicación entre
el puerto paralelo de la computadora y el circuito haciendo uso de un programa escrito en lenguaje de alto
nivel C.
Describir las operaciones y aplicaciones para Interpretar las alternativas para decisión y
manipulación de bits en el lenguaje de repetición que incorpora el lenguaje en uso.
programación.
Construir programas que empleen decisiones y
Diseñar programas que incorporen la repeticiones.
manipulación de bits.
Verificar la sintaxis de los programas Diseñar programas que empleen funciones.
elaborados para su depuración, corrigiendo la
sintaxis y mejorando el estilo de programación. Describir la forma de declaración de arreglos de
una o más dimensiones.
Introducción
65
Manual de prácticas
• LPT1 = 0x378.
Desarrollo de la Práctica
1. Lectura del diagrama: Realice la lectura del diagrama siguiente verificando cada uno de sus
componentes y llevarlo al diseño en el protoboard.
66
Manual de prácticas
2. Escritura del código: Escriba el siguiente código y realice las modificaciones adecuadas.
Guarde el archivo como led.c
#include <stdio.h> //esta librería permite el uso de printf y scanf entre otras
#include <stdlib.h> //esta librería permite el uso de exit();
#include <sys/io.h> //esta librería permite el manejo de puertos en linux con lenguaje C
#define puerto 0x378 //definimos el puerto a utilizar
outb(p,puerto); // esta es la instrucción que pone un número en BINARIO en la salida del puerto,
con esta es con la que manejamos ya la salida en el puerto
67
Manual de prácticas
Al realizar esto se deberá encender un led, en caso contrario revise las conexiones.
11. Modifique el código con nuevos parámetros. Cambie el valor de la variable “p” por otro en
formato hexadecimal, por ejemplo, si queremos que se enciendan todos los leds, deberemos darle
el siguiente valor.
a) Código en lenguaje C
b) Prototipo diseñado en base al circuito propuesto.
c) Resultados y observaciones al modificar el código con nuevos valores
Evaluación Teórica
1.- Es una interfaz entre una computadora y un periférico, cuya principal característica es que los bits de
datos viajan juntos, enviando un paquete de byte a la vez.
2.- Es una interfaz entre una computadora y un periférico, cuya principal característica es que envía los
datos bit a bit por el mismo hilo.
3.- Ejemplo de nombres de los puertos paralelos en sistemas operativos basados en DOS:
68
Manual de prácticas
Evaluación Práctica
OBJETIVO Al finalizar la práctica el alumno diseñará un circuito con el protoboard que permita
la comunicación entre el puerto paralelo de la computadora y el circuito haciendo
uso de un programa escrito en lenguaje de alto nivel C.
NOMBRE DEL
ALUMNO
INSTRUCCIONES A continuación se presentan los criterios que van a ser verificados en el desempeño
del alumno.
De la siguiente lista marque con una aquellas actividades que cumple el alumno
durante el desarrollo de la práctica.
Conclusión
El uso de puerto paralelo para acceso a dispositivos electrónicos permite que la comunicación entre ellos
sea de manera fácil y transparente al conocer cada uno de los datos que deben ser transferidos por el
medio.
Es por esto que en esta práctica se obtuvo la comunicación sencilla al accesar al medio, por lo que después
de esta actividad se podrán realizar diversas operaciones en las cuales el alumno pueda modificar y probar
nuevas opciones de entrada de datos para la manipulación del medio electrónico.
Joyanes, Aguilar
Luis (2006) Programación en C++ Madrid España McGraw-Hill
Joyanes, Aguilar
Luis , Lucas Programación en C++,
(2006) Madrid España McGraw-Hill
Sánchez García serie SCHAUM
69
Manual de prácticas
70