Si es tu primera visita, quizás deberías visitar la Ayuda para aprender un poco sobre el uso de los foros. Es posible que tengas que registrarte antes de poder iniciar temas o dejar tu respuesta a los temas de otros usuarios: haz clic en el enlace 'registrarse' para crear tu cuenta. Para empezar a ver mensajes, selecciona el foro que quieres visitar de la lista de abajo.
![]() |
| Sin estado ID: 25236 Registrado: septiembre-2005 Hace: (1538 dias)
Mensajes: 46
| si mal no recuerdo el STRUCT que tienes funje como nodo , y las funciones trabajan con estos nodos . si lo pasaras a clase una misma clase encapsula los metodos y es un nodo. Bueno yo programo orientado a objetos y todo lo quiero en clases , crear clases abstractas o virtuales y heredar.... y no todos los problemas necesitan encapsulacion. Y cuando trabajas con clases tienes que jugar mucho con los & y los * , casi no me acuerdo ; pero en si una clase es un apuntador. No se si conozcas como se manejan las variables en memoria el STACK y el HEAP . sino lo conoces te recomiendo que le des una estudiada ya que te ayudara a comprender mas las clases. Y por ultimo te recomiendo que pongas todo tu codigo en ingles incluso el nombre de variables y todo, porque si te das cuenta todos los programas bien hechos estan en ingles y la mayoria de comunidades de programacion estan en ingles . Por eso el dicho del programador "En español solo el quijote"
__________________ Regresa con tu escudo en la mano o debajo de el !!!!!!!(Madre espartana despidiendose de su hijo) |
| | |
| Sin estado ID: 31134 Registrado: noviembre-2005 Hace: (1472 dias) Edad: 22
Mensajes: 68
| los structs son nodos u hojas del arbol como te explique antes apenas estoy comensando a ver POO (programacion orientada a objetos) conosco y manejo perfectamente los conceptos stack y heap y ya los relacione con clases (me puse a investigar despues de mi primera clase del dia de hoy nesecitava comensar con algo) ya se la estructura de clases (vere si pongo el codigo en clases) y por ultimo en español por reglamento de proyecto comentarios en español y aqui en el foro para lo qeu su ingles no sea muy ducho (he visto muchos no solo en el foro sino en mi universidad y estudia ing. informatica) y como dato adicional era el que mejor maneja el tema de apuntadores en mi seccion mi falta de conocimientos esta basada por mi manera de investigacion y estudios que e asumido que me facilita la existencia que es resivir la base en clases y luego lansarme a investigar y por ultimo porneme creativo en los codigos (espero que comprendas lo que acabo de poner) asi fue como asimile con rapides los conceptos y nociones basicas y haci seguire trabajando hasta que comiense mis proyectos especiales sin mas uqe decir Adrian "Sir. Dark Solink" DS
__________________ ![]() |
| | |
| Sin estado ID: 25236 Registrado: septiembre-2005 Hace: (1538 dias)
Mensajes: 46
| pues sip si sabes apuntadores migrar a clases no es tan dificil .... los ocuparas cuando hagas instancias y cuando mandes a llamar constructores base (bueno si ya haz comenzado a usar herencia y polimorfismo) en fin la programacion orientada a objetos es muy poderosa (Patrones siiiii)... y me agrada mucho como a cualquier programador .NET y java, por desgracia yo no tuve suficiente tiempo para adentrarme en C++ , ya que me pase por cuestiones escolares a .NET solo recuerda que la POO es tambien diseño y parte fundamental para crear tu framework propio jejejejeje..... y si te queda tu coidgo en POO seria un placer echarle un ojillo
__________________ Regresa con tu escudo en la mano o debajo de el !!!!!!!(Madre espartana despidiendose de su hijo) |
| | |
| NOVIEMBRE, mes la patria de mi alma, de mi
corazón ID: 142747 Registrado: mayo-2007 Hace: (931 dias)
Mensajes: 603
| Nuevo capítulo. Hola desarrolladores. Aquí les traigo el próximo capítulo. Espero sea de su mejor agrado y provecho. Traducción de Algoritmos a código fuente en C++ Contenido: 1.Introducción. 2.Explicación de cada línea de un programa fuente. 3.Problemas resueltos. 4.Problemas propuestos. Desarrollo: 1.Introducción Estamos en un escalón nuevo en donde vamos a interactuar con el compilador C++ que estoy enseñando. Es un lenguaje muy sensible. Al decir sensible, me refiero que es muy estricto con su sintaxis (forma en como se debe escribir las instrucciones en un determinado lenguaje). Hay que procurar que todo esté de forma correcta. No es difícil; cuando estés acostumbrado no será ningún problema. 2. Explicación de cada línea de un programa fuente Hay que recordar que todo programa fuente es el producto de traducir el algoritmo. A continuación explicaré cada línea de un programa en C++: Código: #include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
float r, a, longitud;
const pi=3.141592654;
printf(“Introduzca el valor del radio: ”);
scanf(“%f”, &r);
a=pi*(r*r);
printf(“\nEl valor del área es de:%f”, a);
longitud=2*pi*r;
printf(“\nEl valor de la longitud es de:%f”, longitud);
}
3. Problemas resueltos Vamos a traducir un problema que realiza el promedio de 4 números. Igual que el que dejé de tarea, solo que con un número menos. Código: #include<stdio.h>
#include<conio.h>
Void main()
{
clrscr();
float l1, l2, l3, l4, p;
printf(“Introduzca el primer número: “);
scanf(“%f”, &l1);
printf(“\nIntroduzca el segundo número: “);
scanf(“%f”, &l2);
printf(“\nIntroduzca el tercer número: “);
scanf(“%f”, &l3);
printf(“\nIntroduzca el cuarto número: ”);
scanf(“%f”, &l4);
p=(l1+l2+l3+l4)/4;
printf(“\nEl promedio es de: %f”, p);
}
·Codifique el problema #2 propuesto, del tema anterior. ·Codifique un programa que determine el perímetro de un cuadrado. Por ahora, esto es todo. Próximamente, les proporcionaré el compilador Borland C++ 3.1 para Windows (para entorno windows y entorno MS-DOS). Espero que todo se entienda. Si no entendiste algo, por favor pregunta sin miedo que aquí lo que se quiere es que aprendas a programar. ![]() Hasta la próxima! ![]() "_Z_"
__________________ PUENTE DEL MUNDO, CORAZÓN DEL UNIVERSO: PANAMÁ ![]() VIVA MI PATRIA CARAJO! Última edición por "Zero"; 23-oct-2008 a las 19:38. |
| | |
| Puño de Hierro ID: 6312 Registrado: febrero-2004 Hace: (2116 dias)
Mensajes: 166
| Sugiero que pongas algo más explicativo de estructuras de datos, porque todavía recuerdo perfectamente el día que un profesor me pidió que me chutara un compresor de Huffman... y aquí en redes y telecomunicaciones, las estructuras de datos ni siquiera están en el currículum, y todavía recuerdo perfectamente cómo parí chayotes con eso :censored: Ya que termine, puedo pasarles información sobre cómo se programa el algoritmo de Huffman (en un PDF porque vaya que eso está extenso).
__________________ Nada quedare, il vino acabare! Nada de fina, il vino acabare! Bebelo tutto, tutto, tutto! Bebelo tutto, tutto, tutto! Bebelo tutto, tutto, tutto! Bebelo tutto, tutto, tutto! No es lo mismo ser ignorante que estar pendejo. Si eres ignorante, al principio no entiendes ni vergas, pero después lees o pones atención, y ya entiendes todo. Pero si estás pendejo, no entenderás ni madres por más que lo intentes. Tú eres ignorante: todo lo que tienes que hacer es leer, y ya verás que vas a entender. -- Estas fueron las sabias palabras de Juan Lanzagorta Ibarra, profe de sistemas digitales del ITESO |
| | |
| -.-! ID: 270 Registrado: abril-2002 Hace: (2770 dias) Edad: 24
Mensajes: 280
| da nuke O: como stas tanto TIemop (soy splocky)Em....no usen a .NET como lenguaje chicos, les recuerdo que solo es una tecnología para programar..dentro de otras cosas |
| | |
| Sin estado ID: 25236 Registrado: septiembre-2005 Hace: (1538 dias)
Mensajes: 46
| pues .NET al igual que muchas otras tecnologias .. flash , javascript y java ocupan maquina virtual , en si el IL seria el lenguaje que ocupa .NET , independientemente del lenguaje que se maneje , la algoritmia es lo que importa para un programador, una clase es lo mismo de manera conceptual ya sea en C++ , Java o .NET asi como un metodo, una funcion recursiva , variables por valor.....etc....
__________________ Regresa con tu escudo en la mano o debajo de el !!!!!!!(Madre espartana despidiendose de su hijo) |
| | |
| Sin estado ID: 328440 Registrado: noviembre-2008 Hace: (378 dias) Edad: 21
Mensajes: 31
| Hola!! Primero q nada me presento jeje ya q es mi primer mensaje, si ven mi avatar veran q me autonombre Lionheart pero mi nombre es Alex... suficiente por ahora no? xD Bueno, les quiero comentar q estoy aprendiendo a programar en C (si, asi a secas, C jeje) y me he topado con un problema: Tengo dos programas independientes q se comunican mediante una cola de mensajes utilizando la tecnica del proceso central, es decir el primer programa, digamos A es el servidor y registra la entrada y salida del programa B; necesito hacer q cuando A se cierre B tambien se cierre pero A debe esperar un tiempo prudencial antes de terminar para esperar a que B reciba el mensaje de SALIR via la cola de mensajes; por el momento he implementado ese tiempo de espera con una llamada a system("sleep 1") pero el detalle es q, dado q es un proyecto universitario tengo restricciones y una de ellas es no poder usar system(). Intente poner un for para mantener ocupado a A de esta forma: int i; for(i=0; i<9000000; i++); Es decir mientras B recibe (lee) el mensaje en la cola A esta "contando" de uno en uno hasta 9000000 pero no me funciona y siempre A termina antes, lo curioso es q a mi profesor si le funciona en un programa q el hizo y yo lo he implementado de forma identica y ni aun con valores superiores a 9000000 me funciona :S. Me gustaria saber si existe otra forma de lograr una pausa prudencial sin llamar a system(); ¿sugerencias? Saludos! P.D.: Les pasaria el codigo pero dado q son 2 programas completos el codigo esta un poco extenso, sobre todo la parte grafica pues utiliza la libreria grafica SRGP.
__________________ Bravery can only be found in a knight's heart... ![]() |
| | |
| Sin estado ID: 31134 Registrado: noviembre-2005 Hace: (1472 dias) Edad: 22
Mensajes: 68
| ya probastes con un booleano en A qeu se mantenga en true ahsta uqe Ble envie un mensaje a A para que cambie a false cuando B ejecute la linea de cierre de programa y luego que cuando ese valor booleano de A cambie a false que el se cierre?
__________________ ![]() |
| | |
| Sin estado ID: 328440 Registrado: noviembre-2008 Hace: (378 dias) Edad: 21
Mensajes: 31
|
Básicamente lo q debo hacer es poner una bandera en A y mantenerla en TRUE, cuando A vaya a terminar envie la orden de salida a B y este le responda con un mensaje de q ya recibió la orden y se salga, cuando A reciba el mensaje de q B se salió cambie el valor de la bandera a FALSE y termine el ciclo... interesante, creo q saldrá bien xq el programa ya tiene un ciclo infinito , gracias lo pruebo y les comento q tal. Saludos Hey ya lo probé, funciona de maravilla, gracias... solo me faltan unas 1000 lineas de codigo mas xD
__________________ Bravery can only be found in a knight's heart... ![]() Última edición por Lionheart-009; 11-nov-2008 a las 23:55. Razón: Problema Solucionado | ||||
| | |
| NOVIEMBRE, mes la patria de mi alma, de mi
corazón ID: 142747 Registrado: mayo-2007 Hace: (931 dias)
Mensajes: 603
|
Las cosas no son así tampoco. Eso lo pueden hacer en la U o en donde sea. Después del 5 de diciembre, voy de lleno con esto. Mientras, seré tenue. "_Z_"
__________________ PUENTE DEL MUNDO, CORAZÓN DEL UNIVERSO: PANAMÁ ![]() VIVA MI PATRIA CARAJO! | ||||
| | |
| Sin estado ID: 328440 Registrado: noviembre-2008 Hace: (378 dias) Edad: 21
Mensajes: 31
| Lo siento pero es q no encontraba la solucion, si no opine es porque no se mucho de C++ ni de orientada a objetos, el otro año empiezo a estudiar Java, pero por ahora estoy aprendiendo C y con eso podria colaborar pero en un par de semanas, pues ahora el proyecto del q les pedi ayuda me tiene atrapado. Por cierto, yo no pedi el codigo, pedia una sugerencia, una idea de como retrasar la salida del programa sin usar system(). Pero para no quedar mal: //Perimetro de un cuadrado #include "stdio.h" int main(void){ int x; printf("\n\tIngrese la medida de un lado del cuadrado: "); scanf("%d",&x); if(x<=0){ printf("\n\tLa medida debe ser mayor que cero\n"); return 0; } x=4*x; printf("\n\tEl perimetro del cuadrado es: %d\n",x); return 0; } Ves? Yo puedo ayudar pero como digo, espera a q entregue mi proyecto y entonces te colaboro con cualquier codigo, por lo menos en modo texto, q veo q C y C++ se parecen.
__________________ Bravery can only be found in a knight's heart... ![]() |
| | |
| NOVIEMBRE, mes la patria de mi alma, de mi
corazón ID: 142747 Registrado: mayo-2007 Hace: (931 dias)
Mensajes: 603
|
Y pues sí, C y C++ son prácticamente lo mismo hasta donde tengo la experiencia. Solo que en C, se pone return sin problemas y en C++, con un valor. Gracias por participar ![]() Saellvertu!! ![]() "_Z_"
__________________ PUENTE DEL MUNDO, CORAZÓN DEL UNIVERSO: PANAMÁ ![]() VIVA MI PATRIA CARAJO! | ||||
| | |
| Suspiros... ID: 138942 Registrado: abril-2007 Hace: (942 dias) Edad: 23
Mensajes: 272
| yo tambien voy a aportar D: les dejo otro compilador c++ es gratis D: we! y no usa password xD yay! y tiene buenas librerias la direccion web: http://www.bloodshed.net/devcpp.html ByeZ PS: otra forma de hacer el programa de promedio de 4 numeros o.o Código: #include <iostream>
using namespace std;
int main()
{
double n, n1, n2, n3, n4;
cout << "Buscar promedio. Ingrese 4 numeros: [con espacios entre ellos]" << endl;
cin >> n1 >> n2 >> n3 >> n4;
n = (n1 + n2 + n3 + n4) / 4;
cout << "El promedio es: " << n << endl << endl;
system("pause");
return 0;
}
__________________ ![]() [ Suspiros... ] Última edición por Luna_Caduta; 21-dic-2008 a las 18:15. |
| | |
| NOVIEMBRE, mes la patria de mi alma, de mi
corazón ID: 142747 Registrado: mayo-2007 Hace: (931 dias)
Mensajes: 603
| Hola!! Gracias por aportar. No crean que por que no posteo no estoy. Yo me doy mis vueltas pero ando un poco enredado por acá. Saellvertu!!! ![]() "Z"
__________________ PUENTE DEL MUNDO, CORAZÓN DEL UNIVERSO: PANAMÁ ![]() VIVA MI PATRIA CARAJO! |
| | |
| Saludos, buena idea para aprender a programar, gracias por apoyar con C++, _Zero_ estoy bajando el curso que posteaste luego te pediré el pass, hablamos! | |
|
| nunca me rendire ID: 308516 Registrado: agosto-2008 Hace: (456 dias)
Mensajes: 16
| hola soy nuevo por aqui y me llama la atencion la programacion y realmente este tema se ve interesante, nada mas que quisiera saber hasta que tema se va a ver ya que hay algunas cosas que realmente me interesan aprender, y tambien puedo ayudar a alguien en unos temas |
| | |
| Dragon Master ID: 169919 Registrado: julio-2007 Hace: (856 dias) Edad: 21
Mensajes: 1.413
| Hola; soy nuevo en esto de programar, que me pueden recomendar para empezar a programar (a parte de chutarme todo el tutorial de aqui), no se mucho de programacion pero quiero aprender por que me llama la atencion.
__________________ UNETE A JERARQUIA POKEMON DZ Y COMPRUBA SI ERES UN VERDADERO ENTRENADOR POKEMON !!! http://www.forosdz.com/foro/pokemon-...inercards.html |
| | |
| NOVIEMBRE, mes la patria de mi alma, de mi
corazón ID: 142747 Registrado: mayo-2007 Hace: (931 dias)
Mensajes: 603
| Hola!! Después de mucho tiempo, vengo a seguir subiendo material. Mis disculpas por la demora. Como he visto que la gente quiere aprender, aquí les dejo material. Me disculparán, pero esto que voy a poner, debía ir primero que el tema de Traducción de Algoritmos a código fuente en C++ Recuerden, esto va primero que el tema pasado. Esto nos ayuda a desarrollar la lógica para resolver los problemas. Resolución de problemas a través de la computadora, aplicando Algoritmos y DFD´s 1.Introducción. 2.Marco teórico. 3.Fundamentos de resolución. 4.Resolución de problemas. 4.1Algoritmo 4.2DFD´s 5.Problemas resueltos. 6.Problemas propuestos. Desarrollo: 1.Introducción Trataremos un nuevo escalón en lo que es la programación. En el capítulo anterior estudiamos el marco teórico de la programación. A continuación, entramos en lo que es la etapa de resolución de problemas por computadoras, aplicando las herramientas más comunes. Al final del tema estaremos capases de resolver problemas de tópicos variados. Será algo interesante que te ayudará en los próximos temas. Ven y sigue leyendo. 2.Marco teórico ·Algoritmo: es un método para resolver un problema mediante una serie de pasos precisos, definidos y finitos. Un algoritmo es una serie de operaciones detalladas, en otras palabras, un algoritmo es un conjunto de reglas para resolver una ciertas clases de problemas y se puede formular de muchas formas con el cuidado de que no exista ambigüedad. Características: 1.Preciso (debe indicar el orden de realización de cada paso y no puede tener ambigüedad). 2.Definido (si se sigue dos veces, debe obtener el mismo resultado dos veces). 3.Finito (tiene fin; un número determinado de pasos). 4.Debe ser sencillo y legible. 5.Modular. 6.Eficiente y efectivo. 7.Se ha de desarrollar en el menor tiempo posible. 8.Correcto. 9.Todo algoritmo debe tener cero o más entradas. 10.Debe tener al menos una salida y debe ser tangible. Ahora, los algoritmos se pueden dividir en dos ramas: ·Pseudocódigo ·Diagrama de flujo. Pseudocódigo: es el lenguaje de especificación de los algoritmos. Estos se deben hacer con instrucciones en ingles o en español, que faciliten la codificación de los mismos. Ejemplo: para resolver una ecuación de 2º grado. INICIO INTRODUCIR coeficientes a, b, c IMPRIMIR títulos primera raíz, segunda raíz, no tiene solución CALCULAR raíz 1 y raíz 2 IMPRIMIR raíz 1 y raíz 2 FIN Diagramas de flujo (Flows charts): es la representación gráfica de los algoritmos. Estos están compuestos de símbolos que especifican las operaciones a seguir. Se les llama así por que cada símbolo se conecta a través de una flecha para indicar la secuencia de la operación, de forma descendente. 3.Fundamentos de resolución Esta es la parte más importante. Aquí debemos aplicar un análisis muy detallado para resolver los problemas que se nos van a presentar. Cuando tenemos un problema, nosotros, como programadores que pensamos en lo increíble, lo fantástico y lo inesperado ® debemos prepararnos para resolver todas la situaciones que se nos presentan. Es muy importante señalar que si tenemos un problema, lo primero que debemos pensar es: ¿Cuáles son los datos de entrada? O ¿ que es lo que necesito? De salida hay que pensar en eso. Después que tenemos esto, debemos pensar que tratamiento le debo YO dar a esos datos para arrogar los resultados que necesito. ¿Cómo los haré? No interesa. Un programador lo puede hacer de una forma, y otro de otra. Lo que quiero decir con esto que no interesa que tratamiento le des, lo que interesa es que logres la salida requerida. Ejemplo: ¿como harían dos personas para llegar a la esquina contraria de un salón? Una persona se puede tirar por toda la diagonal del salón, como otro se puede ir por la parte lateral y después doblar hacia la esquina. Si notan, ambos llegaron a la misma esquina por caminos diferentes; así mismo es acá. No interesa como lo hagas, después que logres sacar los resultados deseados, es lo de menos por ahora. Por supuesto, hay que hacerlo de una manera eficiente. Esto es lo más importante en esta parte. ¿Quedé claro con esto? 4.Resolución de problemas 4.1Algoritmo Esta será la herramienta que utilizaremos en la resolución de problemas a través de la computadora. Lo que debemos saber ahora, que ya sabemos como debemos analizar los problemas es que tipo de datos debo utilizar. Existen diferentes tipos de datos, como por ejemplo: enteros, flotantes, carácter, cadena de caracteres, simple precisión, doble precisión, etc. Enteros, ¿Qué son? Son los números positivos y negativos que usamos siempre: 1, 5 13, -5, -76, etc. ¿Cómo los declaramos? Así: ENTERO x. x=la variable que contendrá ese valor entero. Flotantes, son aquellos números que trabajan con punto decimal. Ejemplo: 4.67, -3.98, 23.456, -12.357, etc. Declaración: FLOTANTE s. Caractér: son sencillamente letras y símbolos. Esto representa una sola letra o símbolo, además de que también pueda representar números. Ahora, digo números, ¿no es que era solo letras y símbolos? Sí, aquí la salvedad es que todo lo que esté encerrado entre comillas es caracter. Ejemplo: “S”, “j”, “%”, “7”. Todos ellos son datos de tipo carácter. Declaración: yo puedo declarar e inicializar. ¿Que quiero decir con esto? Que a la vez que declaro, puedo asignarle un valor a la variable, sin tener que hacerlo en el resto del programa, claro, dependiendo de la naturaleza del problema. Se declara así: CARÁCTER k o CARÁCTER k=”f”. Cadena de carácter: se aplica en mismo concepto de los tipos carácter, solo que ahora, como su nombre lo dice, no será un solo símbolo o carácter, si no varios. Se declaran casi igual que los carácter: CADENA h o CADENA DE CARÁCTER s; CADENA f=”¿Estás aprendiendo?” o CADENA DE CARÁCTER p=”casa # 456”. Los otros dos son cuando se necesitan una mayor precisión en los cálculos, o sea, más decimales. Ejemplo, cálculos científicos, pero no siempre puede ser así. Hay que agregar que además de todo esto, existen dos tipos de datos fundamentales que son las constantes y variables. Constantes son aquellos valores que se definen una vez y que no cambian en todo el programa. En contraste con las variables, son aquellos datos que pueden tomar diferentes valores en la ejecución de un programa. También en todo programa y algoritmo se usan operados (que son los que indican una operación) y operándos (que son los valores con los que se evalúa una expresión [conjunto de operadores y operando que señalan una operación]). En todo algoritmo, para darle un valor a una variable (esto se llama asignación) se usa una flecha apuntando hacia la variable (izquierda), seguido del valor o expresión a evaluar. En un punto anterior, habíamos mencionado las reglas de todo algoritmo. Ahora comenzaremos por resolver un problema sencillo. Problema: realiza un algoritmo, que determine el área de un rectángulo. Imprima el área, la base y la altura del mismo. Primero: desde que somos chiquitos, nos enseñaron que la fórmula para determinar el área de un cuadrado o rectángulo es multiplicando la base por la altura. Entonces, ¿Qué necesito? la base del rectángulo y la altura. Esas son mis entradas del problema. Segundo: ¿Cómo hago para obtenerla? Debo en esta vez y siempre que necesite un dato, pedírselo al usuario. ¿Cómo? mediante un mensaje. Al pedirle los datos debo asignárselos a las variables. ¿Por qué variables? Por que esos valores no serán siempre los mismos. Tercero: es muy lógico pensar que necesito variables para almacenar esos datos. Entonces cuando creo en algoritmo, debo declararlas. Cuarto: nos piden que imprimamos el área, la base y la altura, muy fácil; solo mandamos a imprimir las variables que contengan los datos requeridos ¿Se entiende esto? Quinto: ya estamos listos para crear el algoritmo, por que ya sabemos lo que tenemos que hacer. Recordemos las reglas para la escritura de todo algoritmo. Entonces el algoritmo quedará así: Código: INICIO FLOTANTE a, b, h IMPRIMIR (“Introduzca la base”) LEER (b) IMPRIMIR (“Introduzca la altura”) LEER (h) a (felcha apuntando a "a") b*h IMPRIMIR (“el área es:”) IMPRIMIR (a) IMPRIMIR (“la base es:”) IMPRIMIR (b) IMPRIMIR (“la altura es:”) IMPRIMIR (h) FIN Además de este formato se pueden implementar otros formatos, que veremos más adelante. 4.2Diagramas de flujo Aquí lo que hay que señalar es el formato que se usa aquí. También se les llama: diagramas de flujos de datos o DFD´s. Partes: ![]() Inicio o fin del programa ![]() Pasos, procesos o líneas de instrucción de programa de computo ![]() Operaciones de entrada y salida ![]() Toma de desiciónes y Ramificación ![]() Líneas de flujo ![]() Display, para mostrar datos ![]() Envía datos a la impresora Como quedaría el algoritmo: 5.Problemas resueltos: ·Determine el perímetro de un cuadrado. Análisis: todos sabemos desde que estábamos gateando, que el perímetro de un cuadrado y de cualquiera figura geométrica es la suma de todos sus lados. Como nos piden de un cuadrado, necesitamos 4 valores que los vamos a guardar en 4 variables. Entonces que debo hacer después de eso, imprimir el valor del perímetro. Esto quedará así: Código: INICIO FLOTANTE l1, l2, l3, l4, p IMPRIMA (“introduzca los lados”) LEER (l1, l2, l3 l4) p (flecha apuntando a "p") l1+l2+l3+l4 IMPRIMA (“el perímetro es:”) IMPRIMA p FIN 6.Problemas propuestos ·Realiza un algoritmo que imprima el promedio de 5 números enteros. ·Realice un algoritmo que determine el área y diámetro de un círculo. OJO, pido algoritmo; no diagrama de flujo. No hago el énfasis por que no lo concidero importante más sí el algoritmo. ¿OK? ****************************** *************************** Ahora, voy con otro capítulo que quiero dejarles para que lo estudien. Estructuras de control 1. Introducción. 2. Desarrollo. 3. Problemas resueltos. 4. Problemas propuestos. 1. Introducción Primeramente, el la programación, se necesitan estrategias para resolver un problema, tan simple como llevar el peso de los pasajeros de un avión, como uno tan difícil como llevar la base de datos de un ministerio… Es por eso que “Las estructuras de control” son las herramientas que nos ayudan a pensar en grande sin ninguna limitación. Imagina que no existieran, la programación perdería seguidores jajaja 2. Desarrollo Ha de mencionarse que hay ramificaciones de estas estructuras y que las mismas usan variables (para recordar, espero que hallas deducido esto): * Estructuras Repetitivas. * Estructuras de Alternativas. Definámoslas: * Estructuras Repetitivas: son aquellas estructuras que nos permiten repetir un número de instrucciones un determinado número de veces. * Estructuras de Alternativas: son aquellas estructuras que nos dan la posibilidad de escoger un camino, dependiendo de la opción que tengamos al evaluar una expresión (al decir expresión, no me refiero a matemáticas, sino; a una evaluación de por ejemplo si esto es esto, o aquello llego a, etc…¿me expliqué?) Clasificación: * Las estructuras repetitivas se clasifican en 3. Estructura, Para, Mientras y Hasta que. * Las estructuras de Alternativas se clasifican en 3. Estructura Sí-Entonces (condicional simple), Estructura Sí-Entonces-De lo contrario (condicional doble) y Estructura Caso. Estructuras Repetitivas * Estructura Para: la usamos cuando sabemos cuatas veces se van a repetir las instrucciones o podemos decir, un número de veces conocido. * Estructura Mientras: esta estructura funciona evaluando una opción. Si esta es cierta, entra al ciclo de repetición, de lo contrario continúa con el resto del código. Se utiliza cuando no sabemos cuantas veces se van a repetir. * Estructura Hasta que: al igual que la otra, utiliza una expresión para entrar al ciclo repetitivo. Si esta es falsa, el entra, y de lo contrario, continúa con la ejecución del código. Se utiliza cuando sabemos que se repetirán por lo menos una vez o cada vez que no sabemos cuantas veces se van a repetir. Cabe señalar dos cosas: 1. Que es muy importante saber, que las estructuras Mientras y Hasta que, si trabajan con una expresión para entrar al ciclo, ellas necesitan, POR FUERZA, una expresión (dentro del código) que modifique a la variable del la expresión (antes de entrar). ¿Por qué? Por que si no se cambia la variable, tendríamos un Bucle infinito. ¿Se entiende? 2. Las variables a utilizar en las expresiones de las tres estructuras deben ser POR FUERZA, enteros, ya que no existe ciclo y medio para decir que la variable es flotante. Veámoslo en Algoritmo. Estructura Para. Formato: Para (variable1=0; variable1>=número u otra variable; variable1=variable1+1[o dos, o tres]) { Código a ejecutar; } De otra forma: entero x; Para (x=0; x>2[puedes usar el igual dependiendo de tú lógica]; x=x+1[es valido: x++]) { Código a ejecutar; } *cuando llega aquí, el regresa para evaluar la opción, para ver si es cierta o falsa, eso para con las otras dos estructuras. Explicación: cuando entra por primera vez, pregunta: x>2 (0>2), ¿por que cero?, ya que x vale 0; esto es falso (para que entre), el entra. Termina y vuelve pregunta: x>2 (en este caso será: 1>2, ya que al entrar la x aumenta en uno y así sucesivamente, hasta hacer la condición cierta (x>2). En C++ sería int x; for(x=0; x>3; x++) { printf(“Hola tu”); } Esta es la sintaxis de esta estructura en C++. Estructura Mientras. Formato: Mientras(expresión) { Código a ejecutar; Expresión que modifica a la expresión madre; } *cuando llega aquí, regresa para revisar la expresión. Ejemplo: entero y; Mientras(y<5) { Imprimir(“Hola@”); y=y+1; (expresión que modifica, ¿me expliqué con esto?) } *cuando llega aquí, regresa a verificar si la expresión es cierta. En C++ sería: Int y; While(y<5) { Printf(“Hol@”); y=y+1; } Explicación: se declara “y” como entero y toma el valor de 0 por defecto. Cuando llega al ciclo, pregunta: y<5 (0<5). Como esto es cierto el entra, y ejecuta el código; acuérdate que debe haber una expresión que modifique a la y, que es y=y +1(también vale: y++). Cuando sale con la “y” modificada, pregunta: y<5 (Será: 1<5) y como es cierto, vuelve y entra y realiza lo mismo. Cuando la "y” llega a 5. Pregunta y<5 (5<5) no entrará ya que no es cierto, el sale del ciclo y continúa con el resto del programa. “Se cuenta de 0 hacia delante. El 0 cuenta, pero si no quieres, puedes decir que comience en 1. Si realizas una prueba de escritorio con las dos formas, dan los dos, 5 repeticiones (de 0 a 4 y de 1 a 5) ¿Me estoy explicando? Estructura Hasta que. Formato: Hasta que(expresión) { Código a ejecutar; Expresión que modifica a la expresíon madre. } *cuando llega aquí, regresa para revisar la expresión. Ejemplo: entero k; Hasta que (k>=2) { Imprima(“¿¿¿Estás aprendiendo?????@”); k++; (esto es válido y modifica a la “k” para utilizar en la expresión) } *cuando llega aquí, regresa a verificar si la expresión es falsa. En C++ sería: do{ código a ejecutar; }while (expresión a evaluar); La explicación es la misma, solo que la expresión debe ser falsa para entrar. La única diferencia entre las sentencias while y do...while es que con la segunda el cuerpo del bucle se ejecutará por lo menos una vez. Estructuras Alternativas * Estructura Sí-Entonces (condicional simple): se usa cuando, al evaluar una expresión, si está es cierta, entre a ejecutar un único código de instrucciones. * Estructura Sí-Entonces-De lo contrario (condicional doble): la usamos cuando al evaluar una opción, si esta es cierta, ejecuta una serie de instrucciones; de darse que no es cierta, ejecutará el otro código de instrucciones. * Estructura Caso: se usa cuando se sabe que se escogerá una opción, dentro de una lista. Podemos pensar que sería como un menú, de hecho, es esta la estructura propicia para hacer menús. Auque, como la lógica es la que manda, también se pude hacer un menú con estructuras Sí-Entonces o Sí-Entonces-De lo contrario. Estas estructuras estarían embebidas (una dentro de la otra). Esta estructura trabaja con una sola variable que será entera. Dependiendo del valor que tenga, entrará buscando el caso que concuerde con el valor, cuando lo encuentra, ejecutará el código que esté escrito dentro del mismo. Cabe señalar que es muy importante que dentro del código debe estar la sentencia “break;”, que le dice a la estructura, que ya terminó, y que debe salir, para continuar con el resto del código. Veamos los formatos. Estructura Sí-Entonces. Formato: Sí (condición) { Código a ejecutar; } Ejemplo: Sí(a>5) { Imprima (“a tiene un valor mayor que 5, por eso entró, ya es cierto”); } En C++ esto sería: if(a>5) { printf(“entro por que la condición es cierta”); } Estructura Sí-Entonces-De lo contrario. Formato: Sí (condición) { Código a ejecutar si la condición es cierta; } De lo contrario { Código a ejecutar si no se cumple la condición; } Ejemplo: Sí (a<3) { Imprima (“a tiene un valor menor que 3”); } De lo contrario { Imprima (“a tiene un valor mayor que 3”); } Si no se cumple, entra a la parte falsa. En C++ esto sería: if(a<3) { printf(“a tiene un valor menor que 3”); } else { printf(“a tiene un valor mayor que 3”); } Estructura Caso. Formato: Caso (variable) { Caso 1 { Código de instrucciones ejecutar si la condición es correcta; } Caso 2 { Código de instrucciones ejecutar si la condición es correcta; } Caso 3 { Código de instrucciones ejecutar si la condición es correcta; } Y así sucesivamente… }*esta es la llave que cierra el cuerpo del caso Ejemplo: Caso (a) { Caso 1 { Imprima (“¿Estás aprendiendo?”); break; } Caso 2 { Imprima (“Si no entiendes, pregúntame!!!”); break; } }*esta es la llave que cierra el cuerpo del caso. Si la a es 1, entra y realiza lo que está en el bloque uno, si es dos, lo que está en el bloque dos. En C++ esto sería: int g switch(g) { case 1: { printf(“¿estás aprendiendo?”); break; } case 2: { printf(“si tienes dudas, pregunta”); break; } } 3. Problemas resueltos Resolvamos un problema donde nos piden ordenar dos números de forma ascendente (de menos a mayor). Primero debemos pensar que si nos dan dos números, en nuestras mentes pensamos: “si este es mayor que este otro, esta va de último”. Bueno, todo eso que nosotros pensamos en nuestras mentes, debemos extrapolarlo a acá. Quedaría así: Código: #include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
int a, b;
printf(“Introduzca el primer número: “);
scanf(“%d”, &a);
printf(“\nIntroduzca el segundo número: “);
scanf(“%d”, &b);
if(a>b)
{
printf(“\nDe menos a mayor es: %d%d”, b, a);
}
else
{
printf(“\nDe menor a mayor es: %d%d”, a, b);
}
Realiza un programa que muestre después de introducir 3 números, el mayor de ellos. Bueno, eso es todo por ahora. Espero que todo esté claro y que se entienda. Cualquiera cosa, me preguntan o me comentan y con mucho gusto los atenderé. Respondiendo: "que me pueden recomendar para empezar a programar (a parte de chutarme todo el tutorial de aqui)" R=Pues puedes comenzar con lo que pongo aquí. Sin apurarte a nada. Ya cuando domines más el tema, entonces puedes buscar en otros lados. Algo importante. Por ahí me comentaron que querían ver Estructuras de Datos. Como no, vamos a enseñar también estructuras de datos. Cuando terime con esta parte que tenga que ver con C++, voy entonces con Estructuras de Datos ¿les parece? Bueno, gracias por el apoyo. Eso es todo por ahora. Saellvertu!!! ![]() "Z"
__________________ PUENTE DEL MUNDO, CORAZÓN DEL UNIVERSO: PANAMÁ ![]() VIVA MI PATRIA CARAJO! |
| | |
![]() |
| (0 miembros y 1 visitantes) | |
| Herramientas | |
| |