InicioApuntes Y MonografiasProgramacion en C | Parte 2
PARTE 1 y 3



Hola! Les traigo la segunda parte de mi post, estuve leyendo los comentarios de la primera parte y me gustaría aclarar unos puntos!
  • Cualquier duda que tengan sobre algo, no se queden con la duda, preguntenlo o mandenme un MP.
  • Si necesitan algún contenido determinado, pidanlo! por ejemplo, en esta parte agrego lo de archivos a pedido de un usuario que comento!.
  • Todos los programas que subo al Google Drive están armados en DEV-C.
  • Esto va para los mas experimentados: Pueden llegar a notar ciertos errores, como cuando hable de los define y solo indique que servían para constantes o cuando en lugar de hablar de IDE hable de compiladores, no se preocupen, no lo profundizo por que no lo van a necesitar, ya que no se ven en profundidad este tema, la idea es tener una base.

Aclarado estos puntos, vamos a empezar con la segunda parte!. En esta parte se van a tocar los siguientes temas:
  • IF
  • FOR
  • WHILE
  • DO WHILE
  • SWITCH
Pensaba poner punteros, archivos y estructuras, pero se va a hacer muy largo sino!


La sentencia de IF trata sobre una condicion, la cual si se cumple ingresa por el lado verdadero, sino va por el lado falso, en caso de que no haya nada por el lado falso sale. En la siguiente imagen lo van a entender mejor! (Utilizo diagramas de flujo)


A la sentencia de IF se la suele representar como una "casita" con dos habitaciones.. La condición se pone en el "techo" si se cumple se ingresa a la habitación de verdadero, sino a la de falso.

En este ejemplo sencillo, se pregunta por una variable (cargada con anterioridad), si su contenido es igual al numero 4, de confirmarse la condición, va por el lado del Verdadero y hace lo que se pide, en este caso se muestra un printf indicando que el numero es el 4, caso contrario se va por el lado FALSO y se indica que se hace a continuación.

No en todos los casos tiene que haber una condición FALSA, pero siempre tiene que haber una condición verdadera

Dentro de cada IF (tanto por el lado verdadero como por el falso) puede haber una infinita cantidad de if añidados (un if dentro de otro if)
En lo que respecta a la parte del código, se lo utiliza de la siguiente manera:

Así se escribiría el código del IF.. obviamente donde dice CONDICIÓN va la condición que deberá cumplís, y en parte falsa y verdadera las consecuencias. Notaran que puse un par de llaves tanto para la parte falsa como para la parte verdadera, las llaves son necesarias si son mas de una linea de código por parte, si solo es una linea por código no hacen falta ponerlas. La función de la llave es indicar que todo ese bloque representa la parte verdadera o falsa

En caso de que sea un IF que solo tenga parte verdadera, se ignora el resto. El "else" se lo utiliza para indicar lo que pasaría... En palabras seria algo asi:

SI SE CUMPLE ESTO (IF) -> CONDICIÓN VERDADERA -> SI NO SE CUMPLE (ELSE) -> CONDICIÓN FALSA


1) Un programa en el cual se ingresen la notas de los parciales, y se indique si el alumno promociono, recusa o va a final.

Esta seria la logica del programa, pero vamos a desarmarlo asi se entiende mejor

if(parcial1>=7 && parcial2>=7)
Para que se considere promocionado, si o si tiene que tener mas de 7 en cada parcial, por eso van los && (recuerden que significa Y, es decir que se cumplan ambas condiciones)

else if(parcial1>=4 && parcial2>=4)
Para empezar notaran un "else if" significa que la condición por FALSO tiene otro IF dentro, en el cual se indica que es condición que la nota de ambos parciales sea mayor a 4. Les puede surgir la duda de "Si ingreso 10 y 8 no estaría promocionado", eso no sucedería nunca, ya que en la primer condición quedo AFIRMADO que alguna de las dos variables no es mayor o igual a 7, quiere decir que esta entre 1 y 6, por lo que nunca llegarían valores de promoción.

else if (parcial1<=4 || parcial2<=4)
En el ultimo else if, se indica que distinto, notaran que hay un " | | " que si recuerdan significa OR, es decir, que si se cumple alguna de las condiciones alcanza. Se pone el OR por que se puede dar el caso de que el alumno tenga un 10 en el primer parcial y un 2 en el segundo, que pasaría en ese caso si hubiera un && (AND)? Jamas entraría ya que la condición no se cumple y no nos avisaría que tiene que recursar, por tal motivo se utiliza el OR ya que por lógica alguno de los dos valores debe ser menor o igual a 4

Ahora, observemos el codigo, se podria hacer un poco mas sintetico, recuerden que el MAYOR o MENOS indican valores mas altos o mas bajos que un numero pero SIN INCLUIRLO. Por ejemplo si yo digo "numero>4" seria cualquier numero entre el 5 y el infinito. Sabiendo esto, podriamos poner:

Clic aqui para descargar el programa


La sentencia FOR es un ciclo de repeticion en donde se conoce la cantidad de datos a ingresar. Siguiendo el ejemplo anterior, supongamos que queremos agregar las notas de los dos parciales de los 50 alumnos de la clase, que tendriamos que hacer? 50 if añidados, 100 variables (2 por alumno)...y si quisieramo ingresar las notas de todos los estudiantes de todas las comisiones? seria una tarea sumamente pesada, por eso existe el ciclo FOR.

Desde lo que es el diagrama de flujo se la representa de la siguiente manera

Un circulo en donde estan las caracteristicas del ciclo y un rectangulo en donde estas las sentencias (las cosas que pasan). Generalmente se utiliza la variable "i", la cual debera ser declarada como un entero (int) junto con las demás variables al principio del programa. A menos que sea un programa en particular, se la suele iniciar en cero y el incremento o decremento suele ser de 1 en 1, y el limite lo delimitan ustedes dependiendo cuanto necesiten.

Si prestan atención notaran que en lo que es el fin de la variable, osea hasta donde va el ciclo, escribí TAM. Si se guían por lo que explique en el otro post, estaríamos hablando de un define, una constante, en este caso no es muy útil que digamos, así que eso va a gusto, pueden crear un define (#define TAM 10) para que el ciclo de 10 vueltas (10 alumnos) o preguntar cuantos alumnos hay e ingresar la cantidad.


En el ciclo for, se pone de esa manera, notese que lo que va dentro del "for()" son los valores que estaban indicados en el circulo del diagrama de flujo. Y como se indico anteriormente, se utilizan las llaves para indicar que todo ese bloque representa al for.
do while

En este ejemplo, "i" comienza desde cero, llega hasta todos los datos de cantidad e incrementa de a uno cada vez que finaliza el ciclo.
RECORDAR
-> El ciclo for se usa únicamente cuando se sabe la cantidad total de ciclos, es decir la cantidad total de datos a ingresar.
-> Nunca olvidarse de declarar la variable "i" sino no les va a funcionar
-> Como notaron también en el caso del IF, estos no llevan ; al final del "renglón", no se lo pongan por que va a tirar mil errores por que es incorrecto!




La sentencia WHILE es un ciclo de repetición. La diferencia primordial con el FOR es que en este caso desconocemos la cantidad de datos a ingresar.
[UNLaM] Programacion en C | Parte 2

Como se ve en la imagen, en el diagrama de flujo, primero va la condicion, que debe cumplirse si o si para poder ingresar.
Otra de las grandes diferencias con el ciclo FOR es que en ese caso, una vez que terminaban de ocurrir las sentencias, automaticamente pasaba al proximo registro. En este caso eso no sucede, por lo que se debe tener SUMO CUIDADO a la hora de armar el ciclo, ya que para funcionar este necesita que antes la variable que se use como condición tenga datos y luego, dentro del ciclo while se vuelva a pedir el nuevo valor de esa variable, ya que, si no se lo hace entraría en un bucle infinito.

Una de las funciones clásicas es preguntar antes de entrar al ciclo si se quieren ingresar datos, en caso de que si, se ingresa se hace todo y al final se vuelve a preguntar si se quiere volver a ingresar nuevos datos, dando como condición que si la respuesta es S (si) o N (no) se entre o no al while

Clic aquí para descargar el programa

Como verán es bastante similar al anterior, solo que en lugar de tener condiciones fijas, las mismas van cambiando, algo que tienen que tener en cuenta es la repetición del ingreso de datos en la variable de condición

Que es EXACTAMENTE la misma que estaba arriba. Ahora, en esas tres lineas hay una función que no explique antes.

Que es lo que hace la llamada función fflush(stdin). En pocas palabras limpia el buffer utilizado por la entrada estándar, en este caso, el teclado. Algunos van a disentir conmigo, pero yo recomiendo que antes de un ingreso de caracteres le pongan el fflush(stdin) para evitar errores. Cuales errores? que te saltee el ingreso por ejemplo.

Básicamente es el ciclo WHILE al revés. En este ciclo, primero entran los datos (siempre) y luego que terminar de hacer todo lo que tenga que hacer, aparece la condición.

A diferencia del ciclo WHILE (que si la condición era cierta salia), en este caso, si la condición se cumple, vuelve a hacer el ciclo, es decir, para salir del ciclo DO WHILE la condición no deberá cumplirse.

Clic aquí para descargar el programa

En el caso de este programa, se pide que se ingrese un numero del 1 al 10 y en caso de no estar en ese rango te lo vuelve a pedir, es decir sigue ingresando al ciclo. Notaran 2 cosas:

Primero que nada, marcado con un circulo (totalmente perfecto y redondo) que al final del While() hay un punto y coma, en este caso SI se usa, no lo olviden, ya que les podria salir un error como este: "[Error] expected ';' before '}' token" -> Se esperaba un; despues de la llave
Y lo segundo que quería mencionar es la variable "error", no es parte del while, simplemente la puse para usarla para el ejemplo, pero esta bueno explicarla. Primero que nada en el momento que la declaro le asigno el valor cero, luego dentro del do while consulto (a traves de un IF) si "error==1", como fue iniciado en 0 es imposible que este en 1, así que ignora el IF y sigue. Fíjense que luego de ingresar el numero le pongo un valor 1 a la variable error, eso es por que como solo estoy ingresando un solo dato, si volviera a recorrer el ciclo do while, es porque el dato ingresado fue erróneo, por lo tanto me mostraría el if(error==1). No tiene nada que ver con el while, pero fue un buen ejemplo en donde se combina una variable inicializada, un if, y un poquito de lógica!.

Una de mis estructuras favoritas, en este caso dependiendo el valor de la variable que se usa como condición, ingresaras a un determinado sitio, que quiere decir esto? nosotros tenemos que ingresar como condición una variable, según su valor, dentro del switch hay algo llamado "case" con un numero o letra, el switch buscara el case con el valor que coincida con el valor de la variable, en caso de existir, hará todas las sentencias que tenga ese case y finalmente saldrá.

Imagínenselo como si la variable fuese una llave y los case como si fuesen puertas; Únicamente van a ingresar a la puerta de la cual tengan la llave, sin pasar por las otras puertas, y en caso de no tener la llave de ninguna de las puertas, se van por la salida. Así es como funciona, se compara los case, y en el caso de no encontrar coincidencia se pasa por el ultimo case denominado "DEFAULT" en el cual se puede indicar un mensaje de error o realizar determinadas sentencias.

Supongamos que ingresamos dos números anteriormente y luego de eso le preguntamos al usuario que quiere hacer con los números, si sumarlos, restarlos o multiplicarlos, dándole como opciones el numero 1, 2 y 3. En caso de que no quiera realizar absolutamente nada podrá apretar cualquier otro numero y lo llevara al case default y se mostrara lo que haya en ese lugar. Lo que también se puede hacer si lo quieren hacer mas prolijo, es que el ingreso de la opción sea validada, que quiere decir esto? que el usuario solo pueda elegir entre una determinada cantidad de opciones.

En este caso, como validamos los datos, y solo permitimos que pueda elegir entre la opción 1 2 y 3, no nos hará falta usar un default ya que SI O SI tiene que elegir alguna de esas tres opciones.
Validar Datos: Se hace mediante el uso de un do while o un while (en preferencia este) en donde si el dato ingresado no esta en el rango lo tiene que volver a ingresar.

En la imagen se pueden ver las dos formas, con o sin validar, es decir, con o sin default. Notaran también, que hay una palabra "break;" esto se pone al final de cada case, su función es que una vez que se terminar de hacer todas las cosas que se tienen que hacer en ese case, se salga del switch, para que solo se recorra el case seleccionado.

En este switch se hace como indicaba mas arriba, se ingresan dos números, a través de un menú se pregunta que se quiere hacer, se entra al case correspondiente, se hace y se cierra.

Algo que recien me doy cuenta, que no habia explicado, que son esos "n" que pongo por todos lados. Tanto el n como el t son comandos para generar espacios. Mientras que el primero hace un "enter" el segundo hace una tabulacion.

Otro detalle que tampoco habia mencionado hasta ahora, es que dentro de los printf a la hora de mostrar el dato se debe poner el tipo de dato a mostrar, en este caso %d por que es un entero, y luego se pone la variable que representa eso. Si vamos a mostrar un entero un flotante y un carácter: %d %f %c, se deberán poner las variables según su orden sino el programa no lo va a entender. Y en ese caso en particular que solo puse un %d pero puse a numero1 y numero2, lo considera como una sola variable ya que están realizando una suma y el resultado de esa suma es lo que se muestran.

Bueno gente! este ha sido todo el post de hoy, me hubiese gustado poner lo de estructuras, archivos y punteros, pero no me alcanza el tiempo! Me tengo que ir a trabajar jaja, igualmente voy contestando dudas desde el celu mientras trabajo.. Cualquier duda que tengan o sugerencia para agregar al próximo post díganmela!

Datos archivados del Taringa! original
0puntos
0visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
2visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

A
AuronTaringa🇦🇷
Usuario
Puntos0
Posts9
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.