TEZIUTLÁN
Presenta:
Docente:
TEMA:
“apuntes”
MATERIA:
Programación básica
CARRERA:
ING. MECATRÓNICA
GRADO Y GRUPO:
2° “A”
AULA: 105B
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
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
I2<-(RC(-D))/(2*A);
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
Zona de prototipos:
Ejemplo: My-func ();
Int suma (int sumando 1, int sumando 2);
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;
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;
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>
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>
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>
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>
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
**********
* *
* *
* *
**********
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()
{
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:
}//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{
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));
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);
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{
59
menu1=0;
}
60
61
62
Arreglos:
#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
#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;
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”.
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
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;
74
}
void modificaelemento (int e)
{
printf("el valor en modificaelementoes %d\n",e*2);
}
#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
Glu – Utilerias
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();
}
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);
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();
}
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.
discipada Entregada
(WATTS)
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
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);
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);
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