No vengo a defender a Trujillo, todo aquel que lo tuvo sabe como es. A veces resulta un tanto asqueroso y es medio reventado pero como docente al flaco lo aplaudo. El tipo me hizo parir informatica 2 pero con él entendi y vi todo el temario de la materia, cosa que hasta ahora en ninguna otra materia de electrónica digital consegui (informatica 1, 2 y digitales 1, veremos como será con digitales 2). De hecho es al día de hoy que aplico lo que aprendi con él tanto en la facultad como en el laburo.
No confundan, como persona es bastante reprochable a veces pero como docente Trujillo es muy bueno (le falta algunas cosas para ser excelente) - aclaro que solo en info 2 ya que no lo tuve en info 1 y algunas personas me hablaron pestes pero sin la experiencia no lo voy a acusar de nada.
Repitiendo mi discurso, no vengo a defender a Feer pero su planteo es irreprochable. Para que te ayuden tenes que poner de tu parte, independientemente de cuanto te cueste o no la materia. Aparte lo que él dice puedo dar fe que es cierto, C es un lenguaje importante para nosotros y a lo largo de la carrera lo vas a aplicar. No es capricho de los docentes que te enseñen ese lenguaje, podrá ser más o menos agradable aprenderlo en primero pero es la base. Si te cuesta en primero te aseguro que en 2º te va a costar y cuando veas embebido también, pero si pones esfuerzo de tu parte lo vas a dominar. Si crees que la ayuda viene solamente esperando que te den una respuesta/solución cocinada estás muy equivocado; en el final no lo vas a tener a nadie del foro para ayudarte.
Muchos de los que estamos aca laburamos, estudiamos, tenemos que pagar cuentas, etc. No sos el único con obligaciones y falta de tiempo. La mayoría te entendemos pero la diferencia es que nosotros no venimos a dar súplica o autocompasión "no tengo 20 años" "mi cabeza está quemada por distintos motivos" "hable con todo el mundo porque esto me supera", etc etc. Remangate y segui estudiando, en clase levanta la mano y pregunta. Si no entendes algo preguntalo aca y si por mil y unas razones te va mal y tenes que recursar bueno macho, vas y recursas. Cuando uno es adulto con una variedad de responsabilidades estudia porque se puede dar el gusto o porque tiene el tiempo, que yo sepa a ninguno de nosotros nos obliga. Como tal tomalo con la importancia que debes tomarlo, si informática 1 te va a generar semejante caos en tu vida entonces replantea como estas montando tus prioridades.
Poner parte tuya no es decir "leí mil veces el libro y no lo entiendo". Primero si lo leiste mil veces y no lo entendiste claramente no lo estabas leyendo, segundo suponiendo que te cuesta demasiado tenes miles de herramientas a tu alcance:
- Videos en youtube
- Simuladores (si, simuladores de compiladores en páginas web)
- Ejercicios resueltos de C en internet
- Una cátedra con ayudantes
- El foro
- Material en el foro y en la biblioteca de la facultad
Cosas básicas que tenes que dominar del lenguaje:
De la librería estándar para input/output (stdio.h)
printf() -> Sin entrar en detalles, podes hacer muchisimas cosas incluso escribir datos en un puerto, pero a los fines prácticos de lo que ves te permite escribir "algo" en consola.
Por ejemplo: printf("\nMi texto va aca\n"); Los \n son "insertar nueva línea", generalmente antepongo uno al inicio y otro al final de cada cadena de texto para separar un renglón arriba y abajo.
scanf() -> Te permite capturar datos, a tus fines prácticos puede ser un dato ingresado por consola. Dentro de scanf se indica el tipo de dato del operando a capturar, a saber lo más comunes:
%d -> int
%c -> char
%s -> string (vector de char)
Existen muchos más pero por lo pronto esos 3 te importan.
Controles de flujo. Por ejemplo si vos tenes que hacer una división de enteros podrías hacer algo como:
int op_1;
int op_2;
int resultado;
unsigned char flag;
flag = 0;
resultado = 0;
printf("\nInserte primero operando\n");
scanf("%d", &op_1); // recibo el primer operando por consola y lo guardo en op_1
printf("\nInserte segundo operando\n");
scanf("%d", &op_2); // recibo el primer operando por consola y lo guardo en op_1
if (op_1 == 0)
{
printf("\n NO se puede dividir por cero\n ");
flag = 1;
}
if (flag <= 0)
{
resultado = op_2 / op_1; // recorta al entero del resultado
printf("\nEl resultado de la operación es: %d\n", resultado);
}
Los IF te sirven para analizar una condición y realizar un escape en base a eso, hablando burdamente. Es un análisis simplemente booleano, o sea si es verdadero se ejecutan las instrucciones dentro del if. SI no es verdadera la sentencia analizada en los paréntesis del if entonces no se ejecutan las instrucciones dentro de las llaves del mismo.
Otro caso, por ejemplo tengo que analizar que operación quiere realizar el usuario. Lo encerramos dentro de un while para obligarlo a elegir una operación, el while es una sentencia de bucle que mientras no sea falsa la sentencia analizada se repiten las instrucciones dentro. Vos fijate que mientras sea inválida la operación, no cambio mi estado del flag y por lo tanto sigo dentro del bucle:
char operacion;
unsigned char flag;
flag = 0;
do
{
printf("\nIngrese operación, recuerde que aquellas válidas son *(multiplicación), /(division), +(suma), -(resta), ^(potenciación)\n");
scanf("%c", &operacion); //está operación puede traerte problemas al capturar un caracter, no voy a entrar en detalles pero si lees el Deitel lo vas a entender.
switch(operacion)
case '*':
//TU OPERACION
flag = 1;
break;
case '+':
//TU OPERACION
flag = 1;
break;
case '-':
//TU OPERACION
flag = 1;
break;
case '/':
//TU OPERACION
flag = 1;
break;
case '^':
//TU OPERACION
flag = 1;
break;
default:
printf("\n Operación inválida, elija una operación válida\n");
}while (flag <= 0); // de esta forma se evita analizar dos veces el valor de flag. Aparte es necesario que realice las instrucciones dentro por lo menos 1 vez
Es importante destacar que los switch - case se utilizan cuando es necesario analizar casos de una misma morfología. Dicho en cristiano, cuando tu condición es la misma (si la operación es válida) pero hay varias formas de ser válida.
Los If se utilizan cuando la condición puede cambiar, o tenemos distintas condiciones con prioridad.
Por ejemplo no es lo mismo preguntar:
if(flag1 == 0)
{
if(flag2 == 1)
{
//mi operacion
}
//otras operaciones
}
Aca hay un orden de prioridad. El flag1 es el más importante, si no se cumple no importa que vale el flag 2. Si se cumple el flag 1 tiene sentido analizar el 2.
Con lo que te aclaro aca podrías mejorar el primer código para no usar 2 if y solamente usar 1.
Te hago estas pequeñas aclaraciones porque Trujillo rompe mucho las pelotas con esto y cuando lo veas en Info 2 no tenes ni una idea. Saber cuando y como utilizar bucles y sentencias de flujo te fijan si tu integrado trabaja rápido o lento y con eso todas las consecuencias de las tareas a realizar.
Te tiro un par de ejemplos y tips (espero que no tengan errores). NO te voy a hacer el trabajo y NO te voy a explicar como hacer operaciones ya que es algo que podrías leer tranquilamente del Deitel y reiterando lo que muchos te dijeron, pone tu voluntad. Y si ya pusiste voluntad, seguila poniendo o aumentala.
Ah y si nadie te lo aviso te lo digo yo, electrónica no es fácil pero es sencilla. Es sencilla porque tenes que poner muchimas horas el culo en la silla y romperte la cabeza estudiando, entendiendo y practicando. Si queres las cosas resueltas o que te las resuelvan, olvidate que electrónica no es una carrera para eso. Y aunque lo hicieran, solo te van a retrasar el desagradable impacto de hacerte moco en un parcial
Por último si llegaste hasta aca (te felicito por leer tanto) te dejo esta página que casi casi te resuelve tu tarea:
http://blog.espol.edu.ec/programando/sen...enguaje-c/
Personalmente me parece mal que te lo den servido y encima buscarlo por internet, pero si lo usas para entender y practicar vas a poder resolver el ejercicio a tu manera
- Off-topic:
- Fer tirate unos quotes la próxima, sino parece que discutis con vos mismo