ZONA Programación - Página 2 - Foros DZ
Foros DZ
Bienvenido a Foros DZ.

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.

Identificarse:

Avisos


Respuesta
hombre Antiguo 03-oct-2008
 
Avatar de Sir. Dark Solink
Sin estado
buenos dias tardes o noche (segun sea el caso)

Escrito por talon
Una pregunta Dark Solink ocupas C++ o Managed C++ , y como regularmente los programadores C++ apuestan por la velocidad pues evitan el C administrado. Y por ultimo porque no haces tu codigo en una clase en lugar de ocupar funciones las agrupas en un solo objeto que posea toda la funcionalidad
no ocupo managed c++ en realidad nunca instale esa extencion, segundo aun no tengo el conocimiento suficiente para convertir mi codigo en clase (apenas pase programacion 2 cuando escribi este codigo para le proyecto final de mi materia) ademas este codigo por requerimientos del proyecto debe estar en funciones, lo unico que hice fue simplificarlo y que cada funcion hisiera cosas simples, se que se puede llevar a clases pero cada vez que trataba de hacerlo no lograba correr el codigo supongo que me faltaba algo para hacerlo pero no lo se ademas apenas estoy aprendiendo a usar C/C++ (me enamore de este lenguaje) para instalar las librerias SDK despues y hacer cosas mas creativas

ademas este codigo es apenas una parte del proyecto pues como dice en la cabeza del mismo es una recontruccion el codigo original lo perdi y no se donde esta aunque lo sigo buscando, y cuando dije que mi codigo era uno de los mas eficientes en arboles, fue por uqe lo subi a una pagina de programadores (no se sigue alli ya buscare) y la mayoria de comentarios decian que eran uno de los mas simples y eficientes vistos (pero se que se puede mejorar mas todavia pero debo estudiarlo con mas calma) y tambien ya me habian comentado lo de convertirlo en clase trate pero no lo logre asi que apenas aun estoy aprendiendo (solo poseo nociones basicas de esto).


dime que opinas tu talon?


a mi me sigue gustando la notacion hungara para programar para mi es mas comoda

sin mas que decir

Adrian "Sir. Dark Solink" DS
__________________
Sir. Dark Solink no ha iniciado sesión   Responder Citando
hombre Antiguo 03-oct-2008
 
Avatar de talon
Sin estado
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)
talon no ha iniciado sesión   Responder Citando
hombre Antiguo 03-oct-2008
 
Avatar de Sir. Dark Solink
Sin estado
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
__________________
Sir. Dark Solink no ha iniciado sesión   Responder Citando
hombre Antiguo 04-oct-2008
 
Avatar de talon
Sin estado
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)
talon no ha iniciado sesión   Responder Citando
hombre Antiguo 23-oct-2008
 
Avatar de "Zero"
NOVIEMBRE, mes la patria de mi alma, de mi corazón
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);
  }
  • Debes colocar las “directivas” que son las que definen en sentido figurado el programa. Son directivas que indican las clases de dispositivos de entrada y salida y su configuración. Por eso pongo #include<stdio.h> y #include<conio.h> ya que la primera no indica los “estándares de entrada y salida” con que introducimos los datos…sus siglas en inglés: std: standar, “i” y “o”: input y output(entrada y salida). La directiva #include<conio> no indica la configuración en entrada y salida de los datos. Además, existen muchas más, que las veremos mientras vamos avanzando.
  • Después de eso colocas void main(). “void” nos dice que no devuelve valores o un dato de retorno ya que todo método o función (el main es una función) retorna un valor por defecto. “main()” es un método de entrada que le indica al sistema operativo que ejecute el programa. Para poder ejecutar el programa, el código debe estar dentro del método main().

  • Debes poner un paréntesis por que el mismo indica el cuerpo del programa, de donde comienza y a donde termina. Primero es “{“ y después “}”. Ese último paréntesis debe ir al final de todo el cuerpo del programa.

  • clrscr() india que limpia todo lo que está en pantalla, no es que elimina, sino blanquea.

  • Después de esto, debes declarar las variables (que cambia, puedes cambiar el valor varias veces) y las constantes (no cambian, apenas las declaras, el programa no deja cambiar ese valor), ¿Cómo?, si es variable debes poner la palabra reservada “int” de entero, que nos indica que es entero y solo aceptará valores enteros. Si por ejemplo introduces 2, ella agarra el 2; si introduces 2.596, ella solo agarra el número 2, por que indicaste que era entero, la variable que va a llevar ese valor. Si quieres que agarre enteros y decimales, entonces envés de ser “int”, debes colocar “float” de flotante, que nos dice que agarra enteros con ó sin decimales. Cuando declaras una constante lo hacer con la palabra “const”, le das un espacio, seguido del nombre de la constante, con el valor. Así: const pi=3.141592654.

  • Después, debes mandar un mensaje que pida el valor a usar (depende de la lógica del problema), yo puse: “Introduzca el valor del radio: ”, puedes poner el que quieras. Cuando vas a imprimir un mensaje debes colocar la palabra “printf” seguido de un paréntesis, en el mismo colocas camillas, escribes el mensaje y cierras comillas. Lo que está dentro de comillas indican que es una constante alfanumérica (letras y números) en este caso. Puede ser también números.

  • Después, colocas la palabra reservada “scanf(“%f”,&”X“). El scanf lo que hace es que captura el valor que introdujiste, al contestar el mensaje que te pide el dato al la hora de ejecutar el programa. Debes agregarle el paréntesis, las comillas seguidas, el “%f” (la “f” indica que lo que vamos a leer, es un dato de tipo flotante, como lo definiste. Si hubiera sido int, deberás poner en ves de f, una d), la coma, luego el “&” (el “&” forma parte de la sintaxis) junto al la variable que va a contener el valor que introdujiste. Pongo “X” por que es la variable que va a contener el valor. Puede ser “a” o “salario” por decir algo. Esto debes hacerlo cuantas veces sea necesario y dependiendo de la naturaleza del problema; si por lo menos declaraste dos variables, debes hacerlo dos veces para darle un valor a cada una (dos veces “printf” y “scanf”…primero se pone “printf” y después “scanf”, por lo general), Esto debes hacerlo dependiendo cuantas variables (que debes introducirle un valor, si es constante no, por que la se los diste, acuérdate de lo que puse más arriba) has declarado.

  • Seguido de esto, aparece la expresión: a=pi*(r*r);. En algoritmo se asigna un valor a través de una flecha; acá se hace mediante el símbolo de igual. Esta expresión lo que hace es primero multiplicar r por r, después multiplicarlo por pi y por último, asignárselo a “a”. Lo mismo pasa cuando va a calcular la expresión que se le fue asignada a la variable “longitud”.

  • Después de eso, si te percatas, en los “printf”, aparecen dentro del los paréntesis, “\n”. Esto se llama un comando de escape. Lo que hace este comando, al principio del mensaje; es que imprime en el siguiente renglón, la cadena. Si este comando estuviera al final, imprime este mensaje seguido de número que introdujiste y coloca el cursor en el siguiente renglón por que el comando está al final. ¿me explico?...¿sí? Además de esto, cuando queremos imprimir un dato con printf, debemos colocar “%f” al final de el mensaje, antes de cerrar las comillas. La f es por que vamos a imprimir un dato flotante. Si hubiese sido un valor entero, se cambia por la d. después de cerrar con la comilla, colocas una coma y escribes la variable que contiene el dato a imprimir.

  • Al final de que ya has escrito todo te saltas un renglón o espacio y colocas la llave que te dije que debes de poner.

  • Algo MUY importante. Cada instrucción deberá estar acompañada al fina de un punto y coma. Esto le indica al compilador de C++ que ya finalizó la instrucción y que salte a la siguiente. Cuando lee el dato y llega al final, le indica al compilador: “hey, ya terminaste aquí, vete a la otra instrucción”. ¿Se entiende? Si no lo colocas te mandará un error.

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);
  }
4. Problemas propuestos

·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: PANA



VIVA MI PATRIA CARAJO!


Última edición por "Zero"; 23-oct-2008 a las 19:38.
"Zero" no ha iniciado sesión   Responder Citando
Antiguo 27-oct-2008
 
Avatar de Da_Nuke
Puño de Hierro
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
Da_Nuke no ha iniciado sesión   Responder Citando
hombre Antiguo 27-oct-2008
 
Avatar de Wiz
-.-!
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
Wiz no ha iniciado sesión   Responder Citando
hombre Antiguo 28-oct-2008
 
Avatar de talon
Sin estado
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)
talon no ha iniciado sesión   Responder Citando
hombre Antiguo 08-nov-2008
 
Avatar de Lionheart-009
Sin estado
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...
Lionheart-009 no ha iniciado sesión   Responder Citando
hombre Antiguo 09-nov-2008
 
Avatar de Sir. Dark Solink
Sin estado
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?
__________________
Sir. Dark Solink no ha iniciado sesión   Responder Citando
hombre Antiguo 09-nov-2008
 
Avatar de Lionheart-009
Sin estado
Escrito por Sir. Dark Solink
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?
Mmm... a ver si entendi:

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
Lionheart-009 no ha iniciado sesión   Responder Citando
hombre Antiguo 13-nov-2008
 
Avatar de "Zero"
NOVIEMBRE, mes la patria de mi alma, de mi corazón
Escrito por "_Zero_"
Ya andamos mal.

Les voy a pedir a todo el que entra, que NO pida progrmas. Además de que tiene que hacerlo usted, esto no es lugar para eso. Aquí se viene a estudiar y a preguntar, comentar y debatir del tema en cuestión. Encima y no tiene naaaaada que ver con el tópico actual. NOOOO pedir programas. ¿Quiere pedir un código fuente? Vaya y pídalo afuera...


Ni siquiera la primera ves NADIE pidió ningún programa, para que...


Gracias...
No quiero sonar duro, pero las cosas son así. Sino que gracia tiene que yo publique un contenido y que además de que nadie opina concretamente del mismo, vengan a pedir que les hagan programas.

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: PANA



VIVA MI PATRIA CARAJO!

"Zero" no ha iniciado sesión   Responder Citando
hombre Antiguo 13-nov-2008
 
Avatar de Lionheart-009
Sin estado
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...
Lionheart-009 no ha iniciado sesión   Responder Citando
hombre Antiguo 15-nov-2008
 
Avatar de "Zero"
NOVIEMBRE, mes la patria de mi alma, de mi corazón
Escrito por Lionheart-009
//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.
OK, bieeen...Me gustó que verificaste si la medida era 0.

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: PANA



VIVA MI PATRIA CARAJO!

"Zero" no ha iniciado sesión   Responder Citando
mujer Antiguo 21-dic-2008
 
Avatar de Luna_Caduta
Suspiros...
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.
Luna_Caduta no ha iniciado sesión   Responder Citando
hombre Antiguo 22-dic-2008
 
Avatar de "Zero"
NOVIEMBRE, mes la patria de mi alma, de mi corazón
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: PANA



VIVA MI PATRIA CARAJO!

"Zero" no ha iniciado sesión   Responder Citando
Antiguo 25-dic-2008
ZeroXprt
Sin estado Editar estado
Visitante
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!
  Responder Citando
hombre Antiguo 05-ene-2009
 
Avatar de Zwolf of nigth
nunca me rendire
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
Zwolf of nigth no ha iniciado sesión   Responder Citando
hombre Antiguo 12-ene-2009
 
Avatar de Hell Kaiser
Dragon Master
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
Hell Kaiser no ha iniciado sesión   Responder Citando
hombre Antiguo 21-ene-2009
 
Avatar de "Zero"
NOVIEMBRE, mes la patria de mi alma, de mi corazón
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

Contenido:

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
Se entendió este ejemplo ¿Dudas? ¡Pregunten con confianza! Algo más, quiero que alguien me diga (los que saben, no respondan) por que en ves de usar valores enteros, utilicé valores flotantes.

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
En un DFD:




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);
  }
4. Problemas propuestos

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: PANA



VIVA MI PATRIA CARAJO!

"Zero" no ha iniciado sesión   Responder Citando

Respuesta



« Tema Anterior | Próximo Tema »

(0 miembros y 1 visitantes)
 
Herramientas

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Desactivado
Pingbacks are Desactivado
Refbacks are Desactivado


Desarrollado por: vBulletin® Versión 3.8.1
Derechos de Autor ©2000 - 2009, Jelsoft Enterprises Ltd.

La franja horaria es GMT -6. Ahora son las 23:29.
Página generada en 0,65935 segundos, con 10 consultas