Вы находитесь на странице: 1из 102

INSTITUTO TECNOLÓGICO SUPERIOR DE

TEZIUTLÁN
Presenta:

MARQUEZ PATIÑO JOSE ADRIAN

Docente:

Montiel Martínez Miguel

TEMA:

“apuntes”

MATERIA:

Programación básica

CARRERA:

ING. MECATRÓNICA

GRADO Y GRUPO:

2° “A”

AULA: 105B

TEZIUTLÁN, PUE., 3 de junio DE 2011

1
Índice
Apuntes de PSeInt ............................................................................................................................... 4
RELOJ ............................................................................................................................................... 4
Suma de 2 numeros: ....................................................................................................................... 5
Suma de 100 numeros: ................................................................................................................... 5
Suma de n números: ....................................................................................................................... 6
Serie de 2 en 2 : ............................................................................................................................... 7
Serie de impares:............................................................................................................................. 8
Números pares: ............................................................................................................................... 9
Números múltiplos: ....................................................................................................................... 10
Ecuación de 2do grado: ................................................................................................................. 11
Apuntes de ZinjaI............................................................................................................................... 12
Estructura general de un programa c ............................................................................................. 12
char................................................................................................................................................ 14
float ............................................................................................................................................... 15
double ........................................................................................................................................... 16
Hola quien eres: ............................................................................................................................ 17
Suma de 2 números: ..................................................................................................................... 18
Suma de 2 números (void): ........................................................................................................... 19
Resta de 2 números: ..................................................................................................................... 20
Resta de 2 números (void): ........................................................................................................... 21
Producto de 3 números:................................................................................................................ 22
Producto de 3 números(void): ...................................................................................................... 23
La operación de modulo de 2 números: ....................................................................................... 24
La operación de modulo de 2 números (void): ............................................................................. 25
Área de un círculo: ........................................................................................................................ 26
Área de un círculo (void): .............................................................................................................. 27
Área del rectángulo: ...................................................................................................................... 28
Área del rectángulo (void): ............................................................................................................ 29
Área de un triangulo: .................................................................................................................... 30
Área de un triangulo (void): .......................................................................................................... 31
Área de un cuarto:......................................................................................................................... 32

2
Área de un cuarto(void): ............................................................................................................... 33
Tipos de datos ................................................................................................................................... 34
Tipos de almacenamiento ................................................................................................................. 34
& y |................................................................................................................................................... 35
Ejemplo && ................................................................................................................................... 35
Ejemplo || ..................................................................................................................................... 35
Ejemplo: !! ..................................................................................................................................... 36
Ciclo for: ............................................................................................................................................ 37
Tabla de multiplicar ....................................................................................................................... 37
Cicle while ......................................................................................................................................... 38
Do while ............................................................................................................................................ 39
If ........................................................................................................................................................ 40
Switch-case........................................................................................................................................ 42
“GOTO” salto incondicional .............................................................................................................. 44
Ejercicios con los asteriscos .............................................................................................................. 45
Rectángulo de asteriscos................................................................................................................... 47
calculadora ........................................................................................................................................ 50
BOOL.................................................................................................................................................. 54
MOTORES .......................................................................................................................................... 55
Arreglos: ............................................................................................................................................ 63
Arreglo de elemento y valor en 0 .................................................................................................. 63
Arreglo con valores: ...................................................................................................................... 64
Arreglo de 2 en 2 con size: ............................................................................................................ 65
Arreglo suma de números: ............................................................................................................ 66
Arreglo de respuestas de alumnos:............................................................................................... 66
Arreglo de histograma:.................................................................................................................. 68
Histograma de frecuencia: ............................................................................................................ 69
DADOS: .......................................................................................................................................... 70
Arreglos con char: ......................................................................................................................... 72
Caracteres de un arreglo ............................................................................................................... 72
ARREGLO ESTATICO....................................................................................................................... 74
PROGRAMA CON ARREGLO, VENTAS: ........................................................................................... 75

3
Para el lenguaje C .......................................................................................................................... 77
Programa PIXEL ............................................................................................................................. 77
Programa diagonal roja ................................................................................................................. 79
PROGRAMA DE LA X ..................................................................................................................... 80
Plano cartesiano ............................................................................................................................ 81
ALGORITMO DE DIBUJO DE RECTAS.............................................................................................. 84
Algoritmo DDA .............................................................................................................................. 85
Lye de ohm .................................................................................................................................... 85
Pantalla LCD alfanumérica 165 caracteres por 2 lineas ................................................................ 86
La Librería para trabajar el dispositivo .......................................................................................... 88
Programa de leds .......................................................................................................................... 90
FIRMAS Y EXAMENES: ....................................................................................................................... 94

Apuntes de PSeInt
RELOJ
Proceso reloj
seg<-0
min<-0
hr<-0
repetir
repetir
repetir
seg<-seg+1
escribir "segundo"
escribir seg
Hasta Que seg=60
seg<-0
min<-min+1
escribir "minuto"
escribir min
Hasta Que min=60
hr<-hr+1
escribir "hora"
escribir hr
min<-0
Hasta Que hr=24

4
FinProceso

Suma de 2 numeros:
Suma de 2 números

Proceso suma
Escribir "escriba el 1er numero";
leer a
escribir "escriba el segundo numero"
leer b
c<-a+b;
escribir "la suma es:"
escribir c
FinProceso

Suma de 100 numeros:


Suma de 100 números

Proceso suma
L<-100

5
s<-0
repetir
Escribir "escriba numero";
leer a
s<-s+a
L<-L-1
hasta que L=0
escribir "la suma es"
escribir L

FinProceso

Suma de n números:
Suma de n números:

Proceso suma
escribir "escriba el numero total de numeros"
leer n

6
s<-0
repetir
escribir "escriba el primer numero"
leer a
s<-s+a
n<-n-1
Hasta Que n=0
escribir "la suma es"
escribir s
FinProceso

Serie de 2 en 2 :
Serie de 2 en 2:

Proceso n_numeros_pares
I<-100;
P<-0;

7
Escribir "Escriba numero";
Leer P;
Repetir
Escribir P;
P<-P+2;
I<-I-1;
Hasta Que I=0
FinProceso

Serie de impares:
Serie de impares

Proceso numeros_impares
Escribir "Introdusca cantidad de numeros impares que desea obtener";
Leer N;
b<--1;
Repetir
N<-N-1;
b<-b+2;
Escribir b;
Hasta Que N=0

8
FinProceso

Números pares:
Números pares:

Proceso numeros_pares
Escribir "Introdusca cantidad de numeros pares que desea obtener";
Leer N;
b<-0;
Repetir
N<-N-1;
b<-b+2;
Escribir b;
Hasta Que N=0
FinProceso

9
Números múltiplos:
Números múltiplos:

Proceso numeros_multiplos
Escribir "Introdusca cantidad de multiplos de 3 que desea obtener";
Leer N;
b<-0;
Repetir
N<-N-1;
b<-b+3;
Escribir b;
Hasta Que N=0
FinProceso

10
6 psint

7 psint

Ecuación de 2do grado:


Proceso ecuacion_de_segundo_grado

Escribir "INGRESAR A, B y C";


Leer A,B,C;
D<-B^2-4*A*C;
Si D>0 Entonces
R1<-(-B-RC(D))/(2*A);
R2<-(-B+RC(D))/(2*A);
Escribir "LOS RESULTADOS SON: ",R1,"Y ",R2;
Sino
I1<-(-B)/(2*A);

I2<-(RC(-D))/(2*A);

Escribir I1,"+ ",I2,"i ";

11
Escribir I1,"- ",I2,"i ";

FinSi
FinProceso

Apuntes de ZinjaI
Estructura general de un programa c
Comentario de bloque:
/*

12
Descripción general
Parámetros
Entradas
Salidas
Proceso
/*

Comentario de 1 línea:
// Descripción general

#include <… .h> librerías

Zona de prototipos:
Ejemplo: My-func ();
Int suma (int sumando 1, int sumando 2);

Zona de variables globales:


Int x;
Char c;
Char name[80]
Programa principal:
Int main (void)
{
Int i=0, j; //variables
//codigo
}//cierre
Zona de funciones:
My-func()
{
// Código
}
Int suma (int s1, int s2)
{
// Codigo
}

Compilar
Error: error de sintaxis

13
Advertencia: error lógico
Bugs: errores no detectados
\t: tabulador
\n: salta un renglón
\a: genera un zumbido

Ejemplo de programa:
/* este programa nos saluda
autor: yo
parámetros
entrada: ninguna
salida: nos saluda
proceso: cuando corre el programa imprime adiós
Mundo cruel.
*/
#include<stdio.h> // la librería
//funcion principal
int main(void)
{
printf("adiós mundo cruel");//imprime mensaje entre ""
return 0;
}

char
#include<stdio.h>

int main(void)
{
char A;
char B;
char C;
printf("escribe un numero entre -128 y 127\n");
scanf ("%c",&A);
printf ("el numero es: %c\n",A);
printf("escribe un numero entre 0 y 255\n");
scanf("%c",&B);

14
printf("el numero es: %c",B);
printf("escribe un numero entre -128 y 127\n");
scanf("%c",&C);
printf("el numero es: %c",C);
return(0);
}

float
#include <stdio.h>

int main(void)
{
float A;
printf (" escribe un numero entre -3.402823e+389 y 3.402823e+389 \n");
scanf ("%f", & A);
printf (" el numero es ; %f\n", A);
return (0);

15
}

double
#include<stdio.h>

int main(void)
{
double A;
long double B;

printf("escribe un numero entre 2.22507e-308 y 1.79769e+308\n");


scanf ("%dx",&A);
printf ("el nuemro es: %d\n",A);
// leyendo un numero largo
printf("escribe un numero entre 3.362103e-4932 y 1.189731e+4932\n");
scanf("%d",&B);
printf("el numero es: %d\n",B);
return(0);
}

16
Hola quien eres:
#include <stdio.h>
int main (void)
{
char nombre[80];
printf ("hola quien erers?");
scanf ("%s", nombre);
printf ("que tal %s como estas", nombre);
return 0;
}

17
Suma de 2 números:
#include <stdio.h>
int main (void)
{
int sumando1= 0;
int sumando2= 0;
int resultado= 0;
printf("teclee un numero\n");
scanf("%d", &sumando1);
printf("teclee el 2do numero\n");
scanf("%d", &sumando2);

resultado= sumando1+sumando2;
printf("la suma de %d mas %d nos da como resultado %d", sumando1, sumando2, resultado);
return 0;

18
Suma de 2 números (void):
#include<stdio.h>
int suma(int a, int b);
int main(void)
{
int a,b,res;
printf("escriba el primer numero\n");
scanf("%i", &a);
printf("escriba el 2do numero\n");
scanf("%i", &b);
res=suma(a,b);
printf(" es resultado de la suma de %i mas %i es igual a %i\n", a, b, res);
}
int suma(int a, int b)
{
return(a+b);
}

19
Resta de 2 números:
#include <stdio.h>
int main (void)
{
int restando1=0;
int restando2=0;
int resultado=0;

printf(" escriba el 1er numero");


scanf("%d", &restando1);
printf("escriba el 2do numero");
scanf("%d", &restando2);

resultado= restando1-restando2;
printf("el resultado de la resta de %d menos %d es igual a %d", restando1, restando2, resultado);
return 0;
}

20
Resta de 2 números (void):
#include<stdio.h>
int resta(int a, int b);
int main(void)
{
int a,b,res;
printf("escriba el primer numero\n");
scanf("%i", &a);
printf("escriba el 2do numero\n");
scanf("%i", &b);
res=resta(a,b);
printf(" es resultado de la resta de %i menos %i es igual a %i\n", a, b, res);
}
int resta(int a, int b)
{
return(a-b);
}

21
Producto de 3 números:
#include <stdio.h>
int main (void)
{
int a, b, c;
printf("escriba un numero");
scanf("%d", &a);
printf("escriba el 2do numero");
scanf("%d", &b);
printf("escriba el 3er numero");
scanf("%d", &c);
printf("el resultado es %d", a*b*c);
}

22
Producto de 3 números(void):
#include <stdio.h>
void mult (int a, int b, int c);
int main (void)
{
int a, b, c;
printf("escriba un numero");
scanf("%d", &a);
printf("escriba el 2do numero");
scanf("%d", &b);
printf("escriba el 3er numero");
scanf("%d", &c);
mult (a,b,c);
}
void mult(int a, int b, int c);
{
print("el resultado es %d", a*b*c);
}

23
La operación de modulo de 2 números:
#include <stdio.h>
int main (void)
{
int a, b;
printf("escriba un numero entero positivo\n");
scanf("%d", &a);
printf("escriba el 2do numero\n");
scanf("%d", &b);
printf("\n\t\t\t\tel residuo es %d", a%b);
}

24
La operación de modulo de 2 números (void):
#include <stdio.h>
void division(int a, int b);
int main (void)
{
int a, b;
printf("escriba un numero entero positivo\n");
scanf("%d", &a);
printf("escriba el 2do numero\n");
scanf("%d", &b);
division(a, b);

}
void division(int a, int b)
{
printf("\n\t\t\t\tel residuo es %d", a%b);
}

25
Área de un círculo:
#include <stdio.h>

int main (void)


{
int a;
float b=3.1416;
printf("escriba el radio del circulo\n");
scanf("%d", &a);
printf("\n\t\t\t\t el area es %f", a*b);
return 0;
}

26
Área de un círculo (void):
#include <stdio.h>
void mult(int a, float b);
int main (void)
{
int a;
float b=3.1416;
printf("escriba el radio del circulo\n");
scanf("%d", &a);
mult(a, b);
}
void mult(int a, float b)
{
printf("\n\t\t\t\t el area es %f", a*b);
}

27
Área del rectángulo:
#include <stdio.h>

int main (void)


{
int a;
int b;
printf("escriba el lado del rectangulo\n");
scanf("%d", &a);
printf("escriba el otro lado del rectangulo\n");
scanf("%d", &b);
printf("\n\t\t\t\t el area es %d", a*b);
return 0;
}

28
Área del rectángulo (void):
#include <stdio.h>
void mult(int a, int b);
int main (void)
{
int a;
int b;
printf("escriba el un lado del rectangulo\n");
scanf("%d", &a);
printf("escriba el otro lado del rectangulo\n");
scanf("%d", &b);
mult(a, b);
}
void mult(int a, int b)
{
printf("\n\t\t\t\t el area es %d", a*b);
}

29
Área de un triangulo:
#include <stdio.h>

int main (void)


{
int a;
int b;
printf("escriba la base del triangulo\n");
scanf("%d", &a);
printf("escriba la altura del triangulo\n");
scanf("%d", &b);
printf("\n\t\t\t\t el area es %d", (a*b)/2);
}

30
Área de un triangulo (void):
#include <stdio.h>
void mult(int a, int b);
int main (void)
{
int a;
int b;
printf("escriba la base del triangulo\n");
scanf("%d", &a);
printf("escriba la altura del triangulo\n");
scanf("%d", &b);
mult(a, b);
}
void mult(int a, int b)
{
printf("\n\t\t\t\t el area es %d", (a*b)/2);
}

31
Área de un cuarto:
Tomando en cuenta que un tabique mide 15cm x 20cm, determina el numero de tabiques a
utilizar para construir un cuarto de “L” metros de largo x “A” metros de ancho y “h” metros de alto
#include <stdio.h>

int main (void)


{
int l, a, h;
printf("escriba lo largo del cuarto\n");
scanf("%d", &l);
printf("escriba lo ancho del cuarto\n");
scanf("%d", &a);
printf("escriba la altura del cuarto\n");
scanf("%d", &h);
printf("\n\t\t\t\t el area es %d", l*a*h);

32
Área de un cuarto(void):
Tomando en cuenta que un tabique mide 15cm x 20cm, determina el numero de tabiques a
utilizar para construir un cuarto de “L” metros de largo x “A” metros de ancho y “h” metros de alto
#include <stdio.h>
void mult(int l, int a, int h);
int main (void)
{
int l, a, h;
printf("escriba lo largo del cuarto\n");
scanf("%d", &l);
printf("escriba lo ancho del cuarto\n");
scanf("%d", &a);
printf("escriba la altura del cuarto\n");
scanf("%d", &h);
mult(l, a, h);

}
void mult(int l, int a, int h)
{
printf("\n\t\t\t\t el area es %d", l*a*h);
}

33
Tipos de datos
Int: numero entero
Char: carácter
Sting: cadena de caracteres
Float: numero punto flotante
Doublé: números grandes

Tipos de almacenamiento
Auto
Extern
Static
Register

34
&y|
&: And a nivel de bit
&&: And a nivel lógico
|: Or a nivel bit
||: or a nivel lógico
! : Not una negativa

Ejemplo &&
#include <stdio.h>
int main(void)
{
int x=3;
int y=2;
if((x=3)&&(y=0))
printf("hola\n");
else{
printf("falso");
}
return 0;
}

Ejemplo ||
#include <stdio.h>
int main(void)
{
int x=3;
int y=2;
if((x=3)||(y=0))
printf("hola\n");
else{

35
printf("falso");
}
return 0;
}

Ejemplo: !!
#include <stdio.h>
int main(void)
{
int x=3;
int y=2;
if(x!= 0)
{
printf("hola\n");
}
else
{
printf("falso");
}
return 0;
}

36
A muchos les surge la duda (más cuando migran de otro lenguaje, como pascal) de cual es
el operador mod o residuo de la división entera en C/C++. Pues este operador es “%”.
Ejemplos de uso y resultados
1.int a; a=10%3;
En este caso, “a” va a almacenar el valor de 1, ya que 10 dividio por 3 da de residuo 1
(10/3=3 y sobra 1)
El operador % es usado muchas veces en casos como: – ciclos circulares

Ciclo for:
For(valor inicial; condicional; incremento /decremento)
{
Código
}

Tabla de multiplicar
#include <stdio.h>
int main(void)
{
int tabla;
int i;
int l;
printf("ingrese la tabla de multiplicar\n");
scanf("%i", &tabla);
printf("ingrese el numero limite\n");
scanf("%i", &l);
for(i=1;i<l+1;i++)

37
{
printf("%i x %i = %i\n", tabla, i, tabla*i);
}
return 0;
}

Cicle while
Cicle while (condición)
{
Sentencia a ejecutar
}
#include <stdio.h>
int main(void)
{
int contador=0;
while(contador<100)

38
{
contador++;
printf("el valor del contador es %i \n", contador);
}
}

Do while
Do
{
Instrucción
}while(condición);
#include <stdio.h>
int main(void)
{
int contador=0;
do
{
contador++;
printf("el valor del contador es %i \n", contador);
}while(contador<=99);
}

39
If
If(condición)
{
Sentencias
}
If(condición)
{
Sentencia
}
Else
{
Sentencia
}
If(condición)
{
Sentencia
}
Else if(condición)
{
Sentencia
{
Else
{
Sentencia
}

40
(condición)?(valor1): (valor2)

#include <stdio.h>
int main(void)
{
int a;
int b;
printf("teclea un numero\n");
scanf("%d", &a);
if(a>7)
{
b=8;
printf("el valor de b es %d\n", b);
}
else
{
b=1;
printf("el valor de b es %d\n", b);
}
}

#include <stdio.h>
int main(void)
{
int a;
int b;

41
printf("teclea un numero\n");
scanf("%d", &a);

b=(a>7)?(8):(1);
printf("el valor de b es %d\n", b);
}

Switch-case

#include <stdio.h>
int main(void)
{
int menu;
printf("1...suma\n");
printf("2...resta\n");
printf("3...multiplicacion\n");
printf("4...division\n");
scanf("%i", &menu);
switch(menu)
{
case 1:
printf("esto es una suma\n");
break;
case 2:
printf("esto es una resta\n");
break;
case 3:
printf("esto es una multiplicacion\n");
break;

42
case 4:
printf("esto es una division\n");
break;
default:
printf("esa no es\n");
break;
}
}

43
“GOTO” salto incondicional
#include <stdio.h>
int main(void)
{
int menu;
menu:
printf("1...suma\n");
printf("2...resta\n");
printf("3...multiplicacion\n");
printf("4...division\n");
scanf("%i", &menu);
switch(menu)
{
case 1:
printf("esto es una suma\n");
break;
case 2:
printf("esto es una resta\n");
break;

default:
goto menu;
break;
}
printf("otro?\n");
}

44
Ejercicios con los asteriscos
*
**
***
#include<stdio.h>
int main (void)
{
int k;
for(k=1;k<=1;k++){
printf("*");
}
printf("\n");
for(k=1;k<=2;k++){
printf("*");

45
}
printf("\n");
for(k=1;k<=3;k++){
printf("*");
}
printf("\n");
}

46
Rectángulo de asteriscos
**********
* *
* *
* *
**********

#include <stdio.h>//imprime rectangulos


int main()
{
int n=10;
int k=5;
int f;
int c;

for(f=1;f<=n;f++){
printf("*");
}
printf("\n");

for(c=2;c<k;c++){
printf("*");
for(f=2;f<n;f++){
printf(" ");
}
printf("*");
printf("\n");
}

for(f=1;f<=n;f++){
printf("*");
}
}

47
48
Rombo de asteriscos

#include <stdio.h>

int main()
{

int tam;//tamaño del rombo


int j;// controla horizontal
int i;//controla vertical
printf("Ingrese el tamanio del rombo: ");
scanf("%d", &tam);

if(tam % 2==0|| tam < 3)//condicional para ser impar y mayor q 3 para no ser cuadrado
printf("El tamanio tiene que ser impar y mayor que 3.\n");
else
for(i = 0; i < tam+1; i++)//vertical de la cuadricula
{
for(j = 0; j < tam+1; j++)//horizontal de la cuadricula
{
if(j >= tam / 2 - i && j <= tam / 2 + i && i <= tam / 2||
j >= i - tam / 2 && j <= tam - i + tam / 2 - 1 && i > tam / 2 )
//condicional para colocar asteriscos
printf( "*" );
else
printf( " " );
}
printf( "\n" );// espacio para q no salga todo corrido
}

return 0;
}

49
calculadora
#include<stdio.h>
int suma(int n,int m);
int resta(int n,int m);
int producto(int n,int m);
int division(int n,int m);
int exit(int n);
int main (void)
{
int menu;
char men;
int a;
int b,res;

do
{

printf("\n\n\t\t\t\t\tmenu\n");
printf("\t\t\t\t1...suma\n");
printf("\t\t\t\t2...resta\n");
printf("\t\t\t\t3...multiplicacion\n");
printf("\t\t\t\t4...division\n");
printf("\t\t\t\t5... para salir");
printf("\n\t\t\t\t que quires hacer?\n");
scanf("%i",&menu);
scanf("%c",&men);
switch(menu)
{
case 1:

50
printf("teclea un numero\n");
scanf("%i",&a);
printf("teclea un numero\n");
scanf("%i",&b);
res=suma(a,b);
printf("la suma es:\n%i",res);
break;
case 2:
printf("teclea un numero\n");
scanf("%i",&a);
printf("teclea un numero\n");
scanf("%i",&b);
res=resta(a,b);
printf("la resta es:\n%i",res);
break;
case 3:
printf("teclea un numero\n");
scanf("%i",&a);
printf("teclea un numero\n");
scanf("%i",&b);
res=producto(a,b);
printf("el producto es:\n%i",res);
break;
case 4:
printf("teclea un numero\n");
scanf("%i",&a);
printf("teclea un numero\n");
scanf("%i",&b);
if (b==0)
printf("infinito");

else
{
res=division(a,b);
printf("la division es:\n%i",res);
}
break;
case 5:
return 0;
break;

default:

printf("\n que no entiendes que del 1 al 5!!!\n");

}//termina switch
printf("\n¿quieres volver a menu?\n");

51
printf("pulsa 1 para volver al menu y cualquier otra tecla para salir \n");
scanf("%i",&a);

}
while(a==1);
if(a|=1)
printf(" ");

else{
return 0;
}//fin else
}
int suma(int n,int m)
{
return (n+m);
}
int resta(int n,int m)
{
return (n-m);
}
int producto(int n,int m)
{
return (n*m);
}
int division(int n,int m)
{
return (n/m);
}

52
53
BOOL
#include<stdio.h>
#include<stdbool.h>
int main(void)
{
int value=0;
bool flagciclo=false;
int dato=0;
char a;
while(!flagciclo)
{
value++;
printf("%i veses antes de terminar el ciclo", value);
printf("\n repetir [1], si otro valor termina");
scanf("%d", &dato);
scanf("%c", &a);

if(dato==1)
{
flagciclo=false; // estohace q no termine
}
else{
flagciclo=true;//aqui hago que termine
}
}//termina while
printf("\n el ciclo terminado en : %d veses", value);
}//termina main

54
MOTORES
#include<stdio.h>
int main ()
{
int menu1,f;
int continuar;
char letra;
int carac;
do{
printf("intrudusca un objeto con un numero del menu:\n");

55
do{

printf("\n\t\t\t menu: \n");


printf("\n\t\t\t q...1");
printf("\n\t\t\t w...2");
printf("\n\t\t\t e...3");
printf("\n\t\t\t r...4");
printf("\n\t\t\t t...5");
printf("\n\t\t\t y...6");
printf("\n\t\t\t u...7");
printf("\n\t\t\t i...8");
printf("\n\t\t\t o...9");
printf("\n\t\t\t p...10\n\n");
printf("\n\t\t\t salir...11\n\n");
scanf("%i", &menu1);
scanf("%c", &letra);
switch(menu1)
{
case 1:
printf("\n\ndetectando objeto...\n");
printf("\nsensor uno detecto un objeto, activando motor 1\n");
printf("\n\n cargando ........\n\n");
break;
case 2:
printf("\n\ndetectando objeto...\n");
printf("sensor uno detecto un objeto, activando motor 1\n");
printf("\n\n cargando ........\n\n");
break;
case 3:
printf("\n\ndetectando objeto...\n");
printf("sensor uno detecto un objeto, activando motor 1\n");
printf("\n\n cargando ........\n\n");
break;
case 4:
printf("\n\ndetectando objeto...\n");
printf("sensor uno detecto un objeto, activando motor 1\n");
printf("\n\n cargando ........\n\n");
break;
case 5:
printf("\n\ndetectando objeto...\n");
printf("sensor uno detecto un objeto, activando motor 1\n");
printf("\n\n cargando ........\n\n");
break;
case 6:
printf("\n\ndetectando objeto...\n");
printf("sensor uno detecto un objeto, activando motor 1\n");
printf("\n\n cargando ........\n\n");

56
break;
case 7:
printf("\n\ndetectando objeto...\n");
printf("sensor uno detecto un objeto, activando motor 1\n");
printf("\n\n cargando ........\n\n");
break;
case 8:
printf("\n\ndetectando objeto...\n");
printf("sensor uno detecto un objeto, activando motor 1\n");
printf("\n\n cargando ........\n\n");
break;
case 9:
printf("\n\ndetectando objeto...\n");
printf("sensor uno detecto un objeto, activando motor 1\n");
printf("\n\n cargando ........\n\n");
break;
case 10:
printf("\n\ndetectando objeto...\n");
printf("sensor uno detecto un objeto, activando motor 1\n");
printf("\n\n cargando ........\n\n");
break;
case 11:
return 0;
break;
default:
printf("\n\n cargando ........\n\n");
printf("\n\n ........error!!!\n\n");
printf("\n\nsolo las opciones que se le mostraron\n\n");

break;
}//fin de switch

}//fin de do
while((((menu1 <=0)|(menu1>=11)))|(menu1==letra));

printf("\n el objeto a llegado hasta los inicios de Motor 2\n\a");


printf("\npresione la tecla 1 para continuar\n");

do{
printf("\n\t\t\t1=continuar\n");
printf("\n\t\t\t2=abortar\n\n");
scanf("%i",&continuar);
scanf("%c", &letra);
switch(continuar)
{
case 1:
printf("\n\nse encienden motores 2 y 3\n\a");
break;

57
case 2:
return 0;
break;
default:
printf("\a\n\nsolo la tecla 1 y 2!!\n\n");
break;
}//fin de switch2
}//fin de do 3
while(continuar!=1);

printf("sensor 2 analiza el objeto\n\n...\n...\n");


do
{
printf("\n\nque caracteristicas tiene el objeto\n\n");
printf("\t\t\tes alto y pesado...1\n");
printf("\t\t\tes alto y ligero...2\n");
printf("\t\t\tes bajo y pesado...3\n");
printf("\t\t\tes bajo y ligero...4\n");
printf("\t\t\tdesea abortar......5\n");
scanf("%i",&carac);
scanf("%c",&letra);
switch(carac)
{
case 1:
printf(" las caracteristicas son alto y pesado se procede a motor3");
printf("\n\n cargando caracteristicas.............\n\n");
printf("\n............... mmm ya casii.........\n\n");
printf("\n\n entrando a motor 3 y asignando el color segun las caracteristicas\n");
printf("\n\n\t\t\t\t el color asignado es el azul\n\n\a");

break;
case 2:
printf(" las caracteristicas son alto y ligero se procede a motor3");
printf("\n\n cargando caracteristicas.............\n\n");
printf("\n............... mmm ya casii.........\n\n");
printf("\n\n entrando a motor 3 y asignando el color segun las caracteristicas\n");
printf("\n\n\t\t\t\t el color asignado es el verde\n\n\a");
break;
case 3:
printf("\n\nlas caracteristicas son bajo y pesado se procede a motor3");
printf("\n\n cargando caracteristicas.............\n\n");
printf("\n............... mmm ya casii.........\n\n");
printf("\n\n entrando a motor 3 y asignando el color segun las caracteristicas\n");
printf("\n\n\t\t\t\t el color asignado es el amarillo\n\n\a");
break;
case 4:
printf(" las caracteristicas son bajo y ligero se procede a motor3");
printf("\n\n cargando caracteristicas.............\n\n");

58
printf("\n............... mmm ya casii.........\n\n");
printf("\n\n entrando a motor 3 y asignando el color segun las caracteristicas\n");
printf("\n\n\t\t\t\t el color asignado es el rojo\n\n\a");
break;
case 5:
return 0;
break;
default:
printf("solo se dispone de 5 opciones\n\n");
break;
}// fin de switch

}while((carac<=0)|(carac>=5));

do{
printf("\n\n\t proceso casi finalisado, pausa de seguridad!\n\n");
printf("\n1=continuar\n");
printf("\n2= saltar el proceso para reseleccionar otro objeto y salir\n\n");
scanf("%i",&continuar);
scanf("%c", &letra);
switch(continuar)
{
case 1:
printf("\n\n ok....terminando \n\a");
break;
case 2:
return 0;
break;
default:
printf("\a\n\nsolo la tecla 1 y 2!!\n\n");
break;
}//fin de switch2
}//fin de do 3
while(continuar!=1);

do{

printf("\n\ndesea introducir otro objeto?\npresione 1\n\n");


printf("\n\ndesea desea finalizar presione 2 \n\n");
scanf("%i",&f);
scanf("%c",&letra);
switch(f){
case 2: return 0; break;
default: printf(" ");
break;}
}while(f!=1);
menu1=0;
}while(f==1);

59
menu1=0;
}

60
61
62
Arreglos:

Arreglo de elemento y valor en 0

#include<stdio.h>
int main(void)
{
int n[10];
int i;

for(i=0;i<=9;i++)
{
n[i]=0;
}// fin de for
printf("%s%13s\n","elemento", "valor");
for(i=0;i<=9;i++)
{
printf("%7d%13d\n", i, n[i]);
}//fin de for 2
return 0;
}//fin de main

63
Arreglo con valores:

#include<stdio.h>
int main(void)
{
int n[10]={32, 27, 64, 18, 95, 14, 90, 70, 60, 37};
int i;

printf("%s%13s\n","elemento", "valor");
for(i=0;i<=9;i++)
{
printf("%7d%13d\n", i, n[i]);
}//fin de for 2
return 0;
}//fin de main

64
Arreglo de 2 en 2 con size:

#include<stdio.h>
#define SIZE 10

int main(void)
{
int n[SIZE];
int i;

for(i=0;i<=SIZE-1;i++)
{
n[i]=2+2*i;
}// fin de for
printf("%s%13s\n","elemento", "valor");
for(i=0;i<=SIZE-1;i++)
{
printf("%7d%13d\n", i, n[i]);
}//fin de for 2
return 0;
}//fin de main

65
Arreglo suma de números:

#include<stdio.h>
int main(void)
{
int n[10]={32, 27, 64, 18, 95, 14, 90, 70, 60, 37};
int i;
int suma=0;

printf("%s%13s\n","elemento", "valor");
for(i=0;i<=9;i++)
{
printf("%7d%13d\n", i, n[i]);
suma+=n[i];
}//fin de for 2
printf("\nla suma de todos los numeros es %d",suma);
return 0;
}//fin de main

Arreglo de respuestas de alumnos:

#include<stdio.h>
#define RESPUESTA_SIZE 40
#define FRECUENCIA_SIZE 11

int main(void)
{
int respuesta;

66
int valoracion;
int respuestas[RESPUESTA_SIZE]={1, 2, 6, 4, 8, 5, 9, 7, 8, 10, 1, 6,
3, 8, 6, 10, 3, 8, 2, 7, 6, 5, 7, 6, 8, 6, 7, 5, 6, 6, 5, 6, 7, 5, 6,
4, 8, 6, 8, 10};
int frecuencia[FRECUENCIA_SIZE]={0};

for(respuesta=0;respuesta<=RESPUESTA_SIZE-1;respuesta++)
{
++frecuencia[respuestas[respuesta]];

}//fin de for
printf("%s%17s\n", "valoracion", "frecuencia");

for(valoracion=1;valoracion<=FRECUENCIA_SIZE-1;valoracion++)
{
++frecuencia[respuestas[respuesta]];
printf("%6d%17d\n", valoracion, frecuencia[valoracion]);
}//fin de for 2
return 0;
}//fin de main

67
Arreglo de histograma:

#include<stdio.h>
#define SIZE 10

int main(void)
{
int n[SIZE]={8, 2, 4, 4, 5, 6, 5, 8, 9, 12};
int i, j;

printf("%s%13s%17s\n","elemento", "valor", "histograma");


for(i=0;i<=SIZE-1;i++)
{
printf("%7d%13d ",i, n[i]);

for(j=1;j<=n[i];j++)
{
printf("%c", '*');

}//fin de for 2
printf("\n");
}
return 0;
}//fin de main

68
Histograma de frecuencia:

#include <stdio.h>
#define SIZE 10
int main (void)
{
int n [SIZE] = {19,3,15,7,11,9,13,5,17,1};
int i;
int j;
printf("%s%13s%17\n","elemento", "valor", "histrograma");
for(i=0; i<SIZE; i++)
{
printf ("%7d%13d ",i,n[i]);
for (j=1;j<=n[i];j++)
{
printf("%c ",'*');
}
printf("\n");
}
return 0;
}

69
DADOS:

#include<stdio.h>
#include<stdlib.h>// numeros pseudoaleatorios
#include<time.h> //tiempo
#define SIZE 7 //el dado no tiene espacios en blanco

70
int main ()
{
int cara;
int tiro;
int frecuencia [SIZE]={0};
srand (time (NULL));
for (tiro=1; tiro<=6000; tiro++)
{
cara=1 + rand ()%6;
++ frecuencia [cara];
}
printf ("%s%17s\n", "cara", "frecuencia");
for (cara=1; cara<SIZE; cara++)
{
printf ("%4d%17d\n", cara, frecuencia[cara]);
}
return 0;
}

71
Arreglos con char:

Hasta el momento solo hemos explicado arreglos enteros, sin embargo los arreglos almacenan
cualquier tipo de dato. Ahora explicaremos el almacenamiento de cadenas en arreglos de
caracteres. Debido a que la única capacidad para el procesamiento de cadenas que conocemos es
printf ahora conoceremos que en realidad una cadena es un arreglo estático de caracteres
individuales de “C”.

Char cadena * + =”hola”;


int n [ ] = { 1, 2, 3, 4, 7};
char cadena [ ] = { ‘h’,’o’,’l’,’a’,’10’}

Caracteres de un arreglo

#include <stdio.h>
int main (void)
{
char cadena1 [20];
char cadena2 []= "esta es una cadena";
int i;

72
printf ("teclea una cadena\n");
scanf ("%s",cadena1);
printf ("el contenido de la cadena 1 es: %s\n"
"y de la cadena2 es: %s\n"
"y la cadena1 con espacios es \n",cadena1,cadena2);
for(i=0; cadena1[i]!='\0' ; i++)
{
printf("%c ",cadena1[i]);

}
printf("\n");
return 0;
}

73
ARREGLO ESTATICO

Auto  modificador que existen en ciertos segmentos


Státic  que no cambia

/*paso de arreglos y de elementos de un arreglo a funciones*/


#include <stdio.h>
#define TAM 5
/*prototipo de las funciones*/
void modificaArreglo(int b[],int tamanio);
void modificaelemento(int c);
int main ()
{
int a [TAM]={0,1,2,3,4};
int i; //contador
printf("efectos de pasar arreglos completos por referencia\n\nlos "
"valores del arreglo original son:\n" );
/*muestra el arreglo original*/
for (i=0; i<TAM; i++)
{
printf("%3d",a[i]);
}
printf("\n");

modificaArreglo (a,TAM);
printf("los valores del arreglo modificado son:\n" );
/*muestra el arreglo modificado*/
for(i=0; i<TAM; i++)
{
printf("%3d", a[i]);
}
/*muestra el valor de a[3]*/
printf("\n\nEfectos de pasar un elemento del arreglo "
"por valor:\n\nEl valor de a[3] es %d\n", a[3]);
modificaelemento (a[3]);
printf("el valor de a[3] es %d\n",a[3]);
return 0;
}
void modificaArreglo (int b[], int tamanio)
{
int j;

for(j=0; j<tamanio; j++)


{
b[j]*=2;
}

74
}
void modificaelemento (int e)
{
printf("el valor en modificaelementoes %d\n",e*2);
}

PROGRAMA CON ARREGLO, VENTAS:

#include<stdio.h>
#define x 6
int main (void)
{

75
int sueldo[x]={0,1,2,3,4,5};
int a;
int venta1,ventas2;
int i,j=0;
int res ;
printf("\tINTRODUCE LAS VENTAS HECHAS\n");
scanf("%d",&a);
venta1=a*0.09+1;
ventas2=venta1+200;
res=(ventas2/100)-1;
for(i=1;i<res;i++);
{
j=sueldo[i];
}
printf("1: $200 a $299\n2: $300 a $399\n3: $400 a $499\n4: $500 a $599\n5: $600 o
mas\n");
printf("EL SALARIO SE ENCUENTRA DENTRO DEL RANGO: %d\n\n",j);
printf("EL SALARIO ADQUIRIDO ES: %d",ventas2);

76
Direct X (Windows, X-box)

Qt (nokia)  c++
Para el lenguaje C
Open GL  c++/c

Gl – primitivas diseños grafico

Glu – Utilerias

Glut – contiene todas las herramientas desarrolladas

Programa PIXEL

#include<GL/glut.h>

77
#include<stdlib.h>
#include<math.h>
#include<windows.h>
void initialize(void);
void init(void);
inline int roundd(const float a);
void lineDDA(int x0,int y0,int xEnd,int yEnd);
void setpixel(GLint xCoord,GLint yCoord);
int main(int argc,char**argv)
{
glutInit(&argc,argv);
initialize();
init();
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,0.0,0.0);
lineDDA(10,10,100,15);
glutMainLoop();
return 0;
}
void initialize(void)
{
glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);
glutInitWindowSize(200,150);
glutInitWindowPosition(100,100);
glutCreateWindow("LINEA PIXEL");
}
void init(void)
{
glClearColor(1.0,1.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,200.0,0.0,150.0);
}
inline int roundd(const float a)
{
return(int)(a+0.5);
}
void lineDDA(int x0,int y0,int xEnd,int yEnd)
{
int dx=xEnd-x0,dy=yEnd-y0,pasos,k;
float xIncrement,yIncrement,x=x0,y=y0;
if(fabs(dx)>fabs(dy))
{
pasos=fabs(dx);
}else
{
pasos=fabs(dy);
}xIncrement=(float)(dx)/(float)(pasos);

78
yIncrement=(float)(dy)/(float)(pasos);
setpixel(roundd(x),roundd(y));
for(k=0;k=pasos;k++)
{
x+=xIncrement;
y+=yIncrement;
setpixel(roundd(x),roundd(y));
}
}
void setpixel(GLint xcoord, GLint ycoord)
{
glBegin(GL_POINTS);
glVertex2i(xcoord,ycoord);
glEnd();
glFlush();
}

Programa diagonal roja


#include <GL/glut.h>
void init (void);
void LineSegment (void);
int main (int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowPosition(50,100);
glutInitWindowSize(400,300);
glutCreateWindow("Open GL");
init();
glutDisplayFunc(LineSegment);
glutMainLoop();
}
void init (void)
{
glClearColor(1.0,1.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0,100.0,0.0,100.0);
}
void LineSegment(void)

79
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,0.0,0.0);
glBegin(GL_LINES);
glVertex2i(10,10);
glVertex2i(80,70);
glEnd();
glFlush();
}

PROGRAMA DE LA X
#include <GL/glut.h>
void init(void);
void LineSegment(void);
int main(int argc,char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowPosition(50, 100);
glutInitWindowSize(400, 300);
glutCreateWindow("Open GL");
init();
glutDisplayFunc(LineSegment);
glutMainLoop ( );
}

void init(void)
{
glClearColor(1.0,0.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0,100.0,0.0,100.0);
}

void LineSegment(void)
{
glColor3f(1.0,0.0,0.0);
glBegin(GL_LINES);
glVertex2i(10, 10);
glVertex2i(80, 70);
glEnd ( );
glFlush ( );
glColor3f(0.5,0.0,0.5);
glBegin(GL_LINES);
glVertex2i(10, 70);
glVertex2i(80, 10);
glEnd ( );

80
glFlush ( );
}

Plano cartesiano
#include <GL/glut.h>
#include <stdlib.h>
#include <math.h>
//prototipos de incializacion//
void initialize(void);
void init(void);
inline int roundd(const float a);
void lineDDA(int x0, int y0, int xEnd, int yEnd);
void lineDDA1(int x0, int y0, int xEnd, int yEnd);
void lineDDA2(int x0, int y0, int xEnd, int yEnd);
void lineDDA3(int x0, int y0, int xEnd, int yEnd);
void lineDDA4(int x0, int y0, int xEnd, int yEnd);
void lineDDA5(int x0, int y0, int xEnd, int yEnd);
void lineDDA6(int x0, int y0, int xEnd, int yEnd);
void setPixel (GLint xCoord, GLint yCoord);

int main (int argc,char **argv)


{
glutInit(&argc,argv);
initialize();
init();
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0,0.0,0.0);
lineDDA(10,10,190,10);
lineDDA1(10,10,10,130);
lineDDA2(10,130,0,115);
lineDDA3(190,10,180,20);
lineDDA4(190,10,180,0);
lineDDA5(10,130,20,115);
lineDDA6(20,15,20,5);
glutMainLoop();
return 0;
}
void initialize (void)
{
glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);
glutInitWindowSize(400,200);
glutInitWindowPosition(440,270);
glutCreateWindow("PLANO");
}
void init (void)
{

81
glClearColor(1.0,1.0,1.0,1.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0,200.0,00,150.0);
}
inline int roundd (const float a)
{
return (int) (a+0.5);//case transforma una variable x en y//
}
void lineDDA(int x0,int y0, int xEnd, int yEnd)
{

int dx=xEnd-x0,dy=yEnd-y0,pasos,k;
float xIncrement, yIncrement, x=x0, y=y0;
if (fabs(dx)>fabs(dy))
pasos=fabs(dx);
else
pasos=fabs(dy);
xIncrement=(float)(dx)/(float)(pasos);
yIncrement=(float)(dy)/(float)(pasos);
setPixel(roundd (x), roundd (y));
for (k=0;k<pasos;k++)
{
x+=xIncrement;
y+=yIncrement;
setPixel (roundd (x), roundd (y));
}
}
void lineDDA1(int x0,int y0, int xEnd, int yEnd)
{
int dx=xEnd-x0,dy=yEnd-y0,pasos,k;
float xIncrement, yIncrement, x=x0, y=y0;
if (fabs(dx)>fabs(dy))
pasos=fabs(dx);
else
pasos=fabs(dy);
xIncrement=(float)(dx)/(float)(pasos);
yIncrement=(float)(dy)/(float)(pasos);
setPixel(roundd (x), roundd (y));
for (k=0;k<pasos;k++)
{
x+=xIncrement;
y+=yIncrement;
setPixel (roundd (x), roundd (y));
}
}
void lineDDA2(int x0,int y0, int xEnd, int yEnd)
{
int dx=xEnd-x0,dy=yEnd-y0,pasos,k;

82
float xIncrement, yIncrement, x=x0, y=y0;
if (fabs(dx)>fabs(dy))
pasos=fabs(dx);
else
pasos=fabs(dy);
xIncrement=(float)(dx)/(float)(pasos);
yIncrement=(float)(dy)/(float)(pasos);
setPixel(roundd (x), roundd (y));
for (k=0;k<pasos;k++)
{
x+=xIncrement;
y+=yIncrement;
setPixel (roundd (x), roundd (y));
}
}
void lineDDA3(int x0,int y0, int xEnd, int yEnd)
{
int dx=xEnd-x0,dy=yEnd-y0,pasos,k;
float xIncrement, yIncrement, x=x0, y=y0;
if (fabs(dx)>fabs(dy))
pasos=fabs(dx);
else
pasos=fabs(dy);
xIncrement=(float)(dx)/(float)(pasos);
yIncrement=(float)(dy)/(float)(pasos);
setPixel(roundd (x), roundd (y));
for (k=0;k<pasos;k++)
{
x+=xIncrement;
y+=yIncrement;
setPixel (roundd (x), roundd (y));
}
}
void lineDDA4(int x0,int y0, int xEnd, int yEnd)
{
int dx=xEnd-x0,dy=yEnd-y0,pasos,k;
float xIncrement, yIncrement, x=x0, y=y0;
if (fabs(dx)>fabs(dy))
pasos=fabs(dx);
else
pasos=fabs(dy);
xIncrement=(float)(dx)/(float)(pasos);
yIncrement=(float)(dy)/(float)(pasos);
setPixel(roundd (x), roundd (y));
for (k=0;k<pasos;k++)
{
x+=xIncrement;
y+=yIncrement;

83
setPixel (roundd (x), roundd (y));
}
}
void lineDDA5(int x0,int y0, int xEnd, int yEnd)
{
int dx=xEnd-x0,dy=yEnd-y0,pasos,k;
float xIncrement, yIncrement, x=x0, y=y0;
if (fabs(dx)>fabs(dy))
pasos=fabs(dx);
else
pasos=fabs(dy);
xIncrement=(float)(dx)/(float)(pasos);
yIncrement=(float)(dy)/(float)(pasos);
setPixel(roundd (x), roundd (y));
for (k=0;k<pasos;k++)
{
x+=xIncrement;
y+=yIncrement;
setPixel (roundd (x), roundd (y));
}
}
void lineDDA6(int x0,int y0, int xEnd, int yEnd)
{
int x;
int i;
for (x=0;x<17;x++)
{
lineDDA(20+10*x,15,20+10*x,5);
}
for (i=0;i<6;i++)
{
lineDDA1(15,10+20*i,5,10+20*i);
}
}
void setPixel(GLint xCoord,GLint yCoord)
{
glBegin(GL_POINTS);
glVertex2i(xCoord,yCoord);
glEnd();
glFlush();
}

ALGORITMO DE DIBUJO DE RECTAS

84
Algoritmo DDA
El algoritmo de análisis diferencial digital, es un algoritmo de digitalización de líneas
basado en calcular σx y σy (sigma) usando las ecuaciones 4 y 5.

El subíndice K adopta valores entero e inicia con 0, incrementándose 1 unidad cada vez hasta
alcanzar el final de la línea.

Lye de ohm Potencia eléctrica

discipada Entregada

(WATTS)

Rojo - 2.2volts – 20Am

Verde – 2.5 volts – 40 Am

Azul – 3.2 volts – 40 Am

Ejemplo: VR= 12-2.2


VR= 19.8 volts
+12 volts
I= VR/R = R=VR/I
VR=9.8 v.
I = 9.8 v/20 Am
Led rojo (2.2 v) 85 =9.8 / 20x10-3
R= 0.5 x10-3
Ω Ω Ω KΩ KΩ MΩ MΩ
1 10 100 1 10 1 10
1.2 12 120 1.2 12 1.2 12
1.5 15 150 1.5 150 1.5 15
2.2 20 200 2.2 22 2.2 22
2.7 27 270 2.7 27 2.7 27
3.3 33 330 3.3 33 3.3 33
4.7 47 470 4.7 47 4.7 47
5.6 56 560 5.6 56 5.6 56
6.2 62 620 6.2 62 6.2 62
8.2 82 820 8.2 82 8.2 82
9.1 91 910 9.1 91 9.1 91

Pantalla LCD alfanumérica 165 caracteres por 2 lineas

2 D0 7

3 D1 8
LCD
4 D2 9

5 D3 10

6 D4 11

7 D5 12

8 D6 13

9 D7 14

Puerto paralelo

SPP EPP ECP

86

9 bits entrada
PIN Funcion tipo region invertir hadware
1 Strobe E/S CONTROL Si
2 Data Salida DATA X
3 Data Salida DATA X
4 Data Salida DATA X
5 Data Salida DATA X
6 Data Salida DATA X
7 Data Salida DATA X
8 Data Salida DATA X
9 Data Salida DATA X
10 ACK E STATUS X
11 Busy E STATUS si
12 Papero Out E STATUS X
Selec
13 E STATUS X
Printer
14 AUTO E/S CONTROL si
15 ERROR E STATUS X
16 INIT E/S CONTROL X
17 Selected E/S CONTROL si
18-25 GND

87
La Librería para trabajar el dispositivo
#include <stdio.h>
#include <windows.h>
/*prototipos para DLL de inp 32*/
typedef short (_stdcall * inpfuncPtr) (short portaddr);
typedef void (_stdcall * oupfuncPtr) (short portaddr, short datum);
void test_write_datum;
void test_read (void);
void test_write (void);

#define PORTADDRESS 0x378


#define DATA PORTADDRESS +0
#define STATUS PORTADDRESS +1
#define CONTROL PORTADDRESS +2

inpfuncPtr inp32fp;
oupfuncPtr oup32fp;
short Inp32 (short portaddr)
{
return (inp32fp) (portaddr);
}
void Out32 (short portaddr, short datum)
{
(oup32fp) (portaddr, datum);
}
int main (void)
{
HINSTANCE hLib;
hLib=LoadLibrary("inpout32.dll");
if (hLib==NULL)
{
fprintf(stderr,"fallo al cargar la biblioteca\n");
return -1;
}
inp32fp=(inpfuncPtr) GetProcAddress(hLib,"Inp32");
if(inp32fp==NULL)
{
fprintf(stderr,"No existe la funcion de entrada");
return -1;
}
oup32fp=(oupfuncPtr) GetProcAddress(hLib,"Out32");

88
if (oup32fp==NULL)
{
fprintf(stderr,"Falla al cargar Out32\n");
return-1;
}
void test_read();
void test_write();
void test_write_datum(0xFF);
FreeLibrary(hLib);
return 0;
}
void test_read (void)
{
short x;
int i;
for(i=PORTADDRESS; (i<(PORTADDRESS+8));i++)
{
x=Inp32(i);
printf("Puerto Leido (%04X)= %04X\n",i,x);
}
}
void test_write (void)
{
short x;
int i;
i= DATA;
x= 0xA3;
Out32(i,x);
printf("se escribe a 0x%X, DATA=0x%2X\n",i,x);
x=0xFF;
Out32(i,x);
/*activamos Bidireccional */
Out32(CONTROL,0x20);
x=Inp32(i);
printf("Entradas Activadas en (%04X)=%04X\n",i,x);
Out32(CONTROL, 0x00);
}
void test_write_datum(short datum)
{
short x;
int i;
i=DATA;

89
x=datum;
Out32(i,x);
/*verificando*/
x=Inp32(i);
printf("Puerto leido (%04X)=%04X\n",i,x);
}

Programa de leds

#include <stdio.h>
#include <windows.h>
/*prototipos para DLL de inp 32*/
typedef short (_stdcall * inpfuncPtr) (short portaddr);
typedef void (_stdcall * oupfuncPtr) (short portaddr, short datum);
void test_read (void);
void test_write (void);
void test_write_datum(short datum);

#define PORTADDRESS 0x378


#define DATA PORTADDRESS +0
#define STATUS PORTADDRESS +1
#define CONTROL PORTADDRESS +2

inpfuncPtr inp32fp;
oupfuncPtr oup32fp;
short Inp32 (short portaddr)
{
return (inp32fp) (portaddr);
}
void Out32 (short portaddr, short datum)
{
(oup32fp) (portaddr, datum);
}
int main (void)
{
HINSTANCE hLib;
hLib=LoadLibrary("inpout32.dll");

90
if (hLib==NULL)
{
fprintf(stderr,"fallo al cargar la biblioteca\n");
return -1;
}
inp32fp=(inpfuncPtr) GetProcAddress(hLib,"Inp32");
if(inp32fp==NULL)
{
fprintf(stderr,"No existe la funcion de entrada");
return -1;
}
oup32fp=(oupfuncPtr) GetProcAddress(hLib,"Out32");

if (oup32fp==NULL)
{
fprintf(stderr,"Falla al cargar Out32\n");
return-1;
}
int suma;
printf ("Ingresa dos numeros");
scanf (a);
printf ("Ingresa otro numero");
scanf (b);
test_read(suma);
test_write(a+b)

FreeLibrary(hLib);
return 0;
}
void test_read (void)
{
short x;
int i;
for(i=PORTADDRESS; (i<(PORTADDRESS+8));i++)
{
x=Inp32(i);
printf("Puerto Leido (%04X)= %04X\n",i,x);
}
}
void test_write (void)
{
short x;

91
int i;
i= DATA;
x= 0xA3;
Out32(i,x);
printf("se escribe a 0x%X, DATA=0x%2X\n",i,x);
x=0x3F;
Out32(i,x);
/*activamos Bidireccional */
Out32(CONTROL,0x20);
x=Inp32(i);
printf("Entradas Activadas en (%04X)=%04X\n",i,x);
Out32(CONTROL, 0x00);
}
void test_write_datum(short datum)
{
short x;
int i;
i=DATA;
x=datum;
Out32(i,x);
/*verificando*/
x=Inp32(i);
printf("Puerto leido (%04X)=%04X\n",i,x);
}

92
93
FIRMAS Y EXAMENES:

94
95
96
97
98
99
100
101
102

Вам также может понравиться