Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#176 Le 10/12/2010, à 09:59

grim7reaper

Re : Windev et Webdev, c'est super ou c'est super nul?

Je n'avais pas parlé des fonctions car ça me semblait évident (c'est quand même la base, le genre de truc que tu fais même en assembleur…).

Mathieu147 a écrit :

C'est ce genre de chose qu'on n'apprend pas facilement en auto didacte et qu'on apprend dans une école.

Ouais, enfin faut relativiser aussi. Ce n'est pas parce que tu le vois à l'école que tu sais le faire.
C'est typiquement le truc qui vient avec l'expérience ça.

Le switch c'est spécifique au langage effectivement

Oui, mais tout les langages (généralistes) sérieux que je connais l'ont (sous une forme ou une autre).

mais même si les tables de hashage, les arbres binaires, les arbres équilibrés, les tas, les piles, les files etc. n'existent pas de base, il est assez simple de les implémenter soi-même.

Encore faut-il que le langage le permette…
Et non, certaines structures sont assez hard à coder de manière efficace.

Enfin, sauf si on ne connaît par leur existence au préalable, ce qui est le cas quand on n'a pas suivi de formation wink

Connerie. Une personne peut très bien apprendre ça en auto-formation, faudrait voir à pas trop les prendre pour des cons non plus…

Dernière modification par grim7reaper (Le 10/12/2010, à 10:00)

Hors ligne

#177 Le 10/12/2010, à 11:07

Mathieu147

Re : Windev et Webdev, c'est super ou c'est super nul?

grim7reaper a écrit :

Je n'avais pas parlé des fonctions car ça me semblait évident (c'est quand même la base, le genre de truc que tu fais même en assembleur…).

C'est sûr que le développeur qui ne sait pas ce qu'est une fonction a des questions à se poser big_smile big_smile !

grim7reaper a écrit :
Mathieu147 a écrit :

C'est ce genre de chose qu'on n'apprend pas facilement en auto didacte et qu'on apprend dans une école.

Ouais, enfin faut relativiser aussi. Ce n'est pas parce que tu le vois à l'école que tu sais le faire.
C'est typiquement le truc qui vient avec l'expérience ça.

Effectivement, mais dans une vraie formation avec de vrais profs qui corrigent des exercices et des projets, on acquiert quand-même pas mal d'automatismes qu'on aurait peut-être mis beaucoup de temps à avoir autrement.

grim7reaper a écrit :
Mathieu147 a écrit :

mais même si les tables de hashage, les arbres binaires, les arbres équilibrés, les tas, les piles, les files etc. n'existent pas de base, il est assez simple de les implémenter soi-même.

Encore faut-il que le langage le permette…
Et non, certaines structures sont assez hard à coder de manière efficace.

Bah, quand on sait comment ça marche… Le plus compliqué dans ce que j'ai cité ce sont les arbres équilibrés mais même ça, avec les algorithmes sous les yeux tu peux les refaire assez facilement dans n'importe quel langage.

Tous les langages permettent ça, il suffit de savoir faire des structures ou des objets, et de gérer des pointeurs ou des références. J'espère quand-même que c'est le cas de Windev! Ce serait dommage sinon…

grim7reaper a écrit :
Mathieu147 a écrit :

Enfin, sauf si on ne connaît par leur existence au préalable, ce qui est le cas quand on n'a pas suivi de formation wink

Connerie. Une personne peut très bien apprendre ça en auto-formation, faudrait voir à pas trop les prendre pour des cons non plus…

Ouais mais en fait j'ai usé mes fesses pendant pas mal de temps dans des amphithéâtres et donc j'aime bien dire que c'est utile big_smile


Pffff…

Hors ligne

#178 Le 10/12/2010, à 11:25

sebz_

Re : Windev et Webdev, c'est super ou c'est super nul?

grim7reaper a écrit :

Heu, ok. Mais j'ai jamais parler de BDD !
Oui j'ai cité les B-arbres (qui sont effectivement utilisé dans les BDD entre autre), mais j'aurais pu aussi bien parler des arbres rouge-noire, des tas et autres trucs du genre.
En gros, j'aimerais savoir ce que supporte Windev au niveau structures de données ?

Peut être une réponse ici mais, ça date de 2005

Par curiosité va au TDFtech 2011, c'est gratuit mais faut s'incrire. Il est pas encore programmé mais d'habitude c'est autour de juin juillet, il me semble.

grim7reaper a écrit :

Une des alternatives possibles (dans certains cas) aux interminables suites de if-else.
Un truc pas tout jeune (existe depuis le C).
Certains langages le limite aux entiers (comme le C par exemple), d'autres sont plus polyvalent (comme en Java par exemple).

Ok, mais là je parle pas de truc super spécialisé. Enfin surtout les switch, c'est du niveau débutant en développement ça (moins d'un an d'expérience ou de cours).

Je vois maintenant que ce que tu appelles switch, je connais très bien en faite, sous Windev c'est SELON CAS. Je les utilise pas sur base de donnée, mais pourquoi pas essayer.

grim7reaper a écrit :

Je n'avais pas parlé des fonctions car ça me semblait évident (c'est quand même la base, le genre de truc que tu fais même en assembleur…).

Les procédures, j'en fait, c'est clair que ça éclairci le code. J'aurai pu aussi mais quand je suis parti dans mon enchaînement de logique, j'y ai pas vraiment pensé. Je suis développeur à mi temps et j'ai d'autre fonction.
Mais rien ne m'empêche de le faire aujourd'hui, sauf que j'en ai tellement bavé que je vais laisser ça de côté.

Ce que je n'utilise pas c'est le HashTable et la POO.

Dernière modification par sebz_ (Le 10/12/2010, à 11:45)


Desktop : 14.04 LTS 64 bits / ASUS M4A89GTD PRO / DDR3 8Go / Phenom II 4x 955 Black Edition / ATI HD6870 / DLINK Airplus Xtrem 108mb/s

Hors ligne

#179 Le 10/12/2010, à 11:50

HP

Re : Windev et Webdev, c'est super ou c'est super nul?

sebz_ a écrit :

Ce que je n'utilise pas c'est le HashTable et la POO.

Ah ok ! On comprend mieux…


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#180 Le 10/12/2010, à 11:53

The Uploader

Re : Windev et Webdev, c'est super ou c'est super nul?

Mais rien ne m'empêche de le faire aujourd'hui, sauf que j'en ai tellement bavé que je vais laisser ça de côté.

c'est justement en laissant ton code de côté que tu en baves..
"Je factoriserai mon code demain" c'est jamais bon.. (bon faut pas tomber dans l'excès inverse non plus)

Dernière modification par The Uploader (Le 10/12/2010, à 11:53)


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#181 Le 10/12/2010, à 12:06

sebz_

Re : Windev et Webdev, c'est super ou c'est super nul?

The Uploader a écrit :

Mais rien ne m'empêche de le faire aujourd'hui, sauf que j'en ai tellement bavé que je vais laisser ça de côté.

c'est justement en laissant ton code de côté que tu en baves..
"Je factoriserai mon code demain" c'est jamais bon.. (bon faut pas tomber dans l'excès inverse non plus)


Voilà le code du bouton ajouter selon 2 cas, ajout pour un utilisateur ou plusieurs en même temps avec controle congé, RTT, Maladie, Maladie Enfant.
C'est pas parfait mais ça fonctionne.

// Recherche l'enregistrement
Jc est un entier
Dc est une Date = SAI_DateA

Sannée est une Date =Gauche(SAI_DateA, 4)
Sannée..Année-=1
Sai_année_suivant est une Date = Gauche(SAI_DateA, 4) 

DateDebutConge est une Date = ChaîneVersDate("01/06/"+Sannée,"JJ/MM/AAAA")
dateFinConge est un Date = ChaîneVersDate("31/05/"+Sai_année_suivant,"JJ/MM/AAAA")

M est une chaîne = Gauche(Date, 6)
d est un entier = Droite(DateFinMois(M),2)
param_mois,Param_annee sont des chaînes
ChaineJourMois est une chaîne = Droite(Date,4)
ChaineMois est une chaîne = Gauche(ChaineJourMois,2)
Param_annee = Gauche(Date, 4)
param_mois = ChaineMois
DateDebut est une Date = Param_annee+param_mois+"01"
DateFin est une Date = Param_annee+param_mois+d

SELON SEL_Ajout
    
// ------------------------------- Ajouter un ou plusieurs événements à un Utilisateur --------------------------------        
    
        CAS 1
            // Evenement CONGE N
        SI COMBO_Evénement..ValeurAffichée = "CONGE JOURNEE" OU COMBO_Evénement..ValeurAffichée ="CONGE DEMI JOURNEE" ALORS
            
            
          POUR Jc = 1 A SAI_JourC
                
          EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
            
            SI DateVersJour(Dc) > 5 ALORS
                    Dc..Jour+=1    
            SINON
                    SI Dc > dateFinConge ALORS
                        Sannée  = Gauche(SAI_DateA, 4)
                        Sai_année_suivant..Année++
                        DateDebutConge  = ChaîneVersDate("01/06/"+Sannée,"JJ/MM/AAAA")
                        dateFinConge  = ChaîneVersDate("31/05/"+Sai_année_suivant,"JJ/MM/AAAA")
                    FIN    
                    
                    SI Dc < DateDebutConge ALORS
                        
                        Sannée = Gauche(SAI_DateA, 4)
                        Sannée..Année-=1
                        Sai_année_suivant = Gauche(SAI_DateA, 4) 
                        
                        DateDebutConge  = ChaîneVersDate("01/06/"+Sannée,"JJ/MM/AAAA")
                        dateFinConge  = ChaîneVersDate("31/05/"+Sai_année_suivant,"JJ/MM/AAAA")
                    FIN    
                    
                    HExécuteRequête(REQ_Conge_restant,hRequêteDéfaut,SAI_Employé,DateDebutConge,dateFinConge)
                    
                        SI REQ_Conge_restant.CongéN_Restant > 0 ALORS
                            
                            // on enlève un jour de congé N    
                            // Recherche l'enregistrement
                            HLitRecherchePremier(Conge,IDConge,REQ_Conge_restant.IDConge)
                            SI HTrouve() ALORS
                                resN est un numérique = Conge.CongéN_Restant
                                resMN est un numérique
                            SI COMBO_Evénement..ValeurAffichée = "CONGE JOURNEE" ALORS
                                resMN = resN-1 
                            FIN
                            SI COMBO_Evénement..ValeurAffichée = "CONGE DEMI JOURNEE" ALORS 
                                resMN = resN-0.5
                            FIN
                                Conge.CongéN_Restant =     resMN
                                Conge.Total_conge_restant = resMN+Conge.CongéN_1_Restant
                                HModifie(Conge)
                            FIN
                        Lieu.DateA = Dc
                        Lieu.Année = DateVersChaîne(Dc,"AAAA")
                        Lieu.IDUtilisateur = SAI_Employé
                        Lieu.LieuSujet = SAI_Lieu
                         Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
                        HAjoute(Lieu)
                        Dc..Jour+=1    
                        SINON
                        Info("Plus ou Pas de congé N disponible")
                        FIN
                        
            FIN    
         FIN
        PageFermeDialogue()
        SINON
            
        // Evenement CONGE N-1
        SI COMBO_Evénement..ValeurAffichée ="C N-1 JOURNEE" OU COMBO_Evénement..ValeurAffichée ="C N-1 DEMI JOURNEE" ALORS
            
            
            POUR Jc = 1 A SAI_JourC
                
                EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
                
                SI DateVersJour(Dc) > 5 ALORS
                    Dc..Jour+=1    
                SINON
                    
                        SI Dc > dateFinConge ALORS
                            Sannée  = Gauche(SAI_DateA, 4)
                            Sai_année_suivant..Année++
                            DateDebutConge  = ChaîneVersDate("01/06/"+Sannée,"JJ/MM/AAAA")
                            dateFinConge  = ChaîneVersDate("31/05/"+Sai_année_suivant,"JJ/MM/AAAA")
                        FIN    
                        
                        SI Dc < DateDebutConge ALORS
                            
                            Sannée = Gauche(SAI_DateA, 4)
                            Sannée..Année-=1
                            Sai_année_suivant = Gauche(SAI_DateA, 4) 
                            
                            DateDebutConge  = ChaîneVersDate("01/06/"+Sannée,"JJ/MM/AAAA")
                            dateFinConge  = ChaîneVersDate("31/05/"+Sai_année_suivant,"JJ/MM/AAAA")
                        FIN    
                        
                        HExécuteRequête(REQ_Conge_restant,hRequêteDéfaut,SAI_Employé,DateDebutConge,dateFinConge)
                    
                    SI REQ_Conge_restant.CongéN_1_Restant > 0 ALORS
                    // on enlève un jour de congé N-1
                    // Recherche l'enregistrement
                    HLitRecherchePremier(Conge,IDConge,REQ_Conge_restant.IDConge)
                    SI HTrouve() ALORS
                    resN1 est un numérique = Conge.CongéN_1_Restant
                    resMN1 est un numérique 
                    SI COMBO_Evénement..ValeurAffichée = "C N-1 JOURNEE" ALORS
                        resMN1 = resN1-1 
                    FIN
                    SI COMBO_Evénement..ValeurAffichée = "C N-1 DEMI JOURNEE" ALORS 
                        resMN1 = resN1-0.5
                    FIN        
                            
                    Conge.CongéN_1_Restant =  resMN1    
                    Conge.Total_conge_restant = resMN1+Conge.CongéN_Restant
                    HModifie(Conge)
                    FIN
                        Lieu.DateA = Dc
                        Lieu.Année = DateVersChaîne(Dc,"AAAA")
                        Lieu.IDUtilisateur = SAI_Employé
                        Lieu.LieuSujet = SAI_Lieu
                        Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
                        HAjoute(Lieu)
                        Dc..Jour+=1    
                    SINON
                        Info("Plus ou Pas de congé N-1 disponible")
                    FIN
                FIN    
            FIN
        PageFermeDialogue()
        SINON
        
        
                // Evenement RTT
                SI COMBO_Evénement..ValeurAffichée ="RTT JOURNEE" OU COMBO_Evénement..ValeurAffichée ="RTT DEMI JOURNEE" ALORS
                    
                    
                    POUR Jc = 1 A SAI_JourC
                        
                        EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
                        
                        SI DateVersJour(Dc) > 5 ALORS
                            Dc..Jour+=1    
                        SINON
                            
                                    
                            HExécuteRequête(REQ_RTT_restant,hRequêteDéfaut,SAI_Employé,Dc..Année)
                            
                            SI REQ_RTT_restant.RTT_Restant > 0 ALORS
                                // on enlève un jour de RTT
                                // Recherche l'enregistrement
                                HLitRecherchePremier(RTT,IDRTT,REQ_RTT_restant.IDRTT)
                                SI HTrouve() ALORS
                                    resRTT est un numérique = RTT.RTT_restant
                                    resMRTT est un numérique
                                    SI COMBO_Evénement..ValeurAffichée = "RTT JOURNEE" ALORS
                                        resMRTT = resRTT-1 
                                    FIN
                                    SI COMBO_Evénement..ValeurAffichée = "RTT DEMI JOURNEE" ALORS 
                                        resMRTT = resRTT-0.5
                                    FIN    
                                    RTT.RTT_restant =  resMRTT
                                    HModifie(RTT)
                                FIN
                                Lieu.DateA = Dc
                                Lieu.Année = DateVersChaîne(Dc,"AAAA")
                                Lieu.IDUtilisateur = SAI_Employé
                                Lieu.LieuSujet = SAI_Lieu
                                Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
                                HAjoute(Lieu)
                                Dc..Jour+=1    
                            SINON
                                Info("Plus ou Pas de  RTT  disponible")
                            FIN
                        FIN    
                    FIN
                    PageFermeDialogue()
                SINON
        // Evenement MALADIE
                
                    
                    
                    SI COMBO_Evénement..ValeurAffichée ="MALADIE" ALORS
                        
                        POUR Jc = 1 A SAI_JourC
                            
                            EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
                            
                            SI DateVersJour(Dc) > 5 ALORS
                                Dc..Jour+=1    
                            SINON
                        
                        HExécuteRequête(REQ_Maladie_Pris,hRequêteDéfaut,SAI_Employé,Dc..Année)
                        
                        EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
                                                
                        // on ajout un jour de congé Maladie
                        // Recherche l'enregistrement
                        HLitRecherchePremier(Maladie,IDMaladie,REQ_Maladie_Pris.IDMaladie)
                        SI HTrouve() ALORS
                            resMALADIE est un numérique = Maladie.Maladie_pris
                            ResMMALADIE est un numérique = resMALADIE+1
                            Maladie.Maladie_pris =  ResMMALADIE
                            HModifie(Maladie)
                        SINON
                            Maladie.Année = Gauche(SAI_DateA,4)
                            Maladie.IDUtilisateur = SAI_Employé
                            Maladie.Maladie_pris = "1"
                            HAjoute(Maladie)
                                    
                        FIN 
                                Lieu.DateA = Dc
                                Lieu.Année = DateVersChaîne(Dc,"AAAA")
                                Lieu.IDUtilisateur = SAI_Employé
                                Lieu.LieuSujet = SAI_Lieu
                                Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
                                HAjoute(Lieu)
                                Dc..Jour+=1    
                            FIN    
                        FIN
                    
                        PageFermeDialogue()
                SINON        
            // Evenement MALADIE ENFANT
                        
                        SI COMBO_Evénement..ValeurAffichée ="MALADIE ENFANT" ALORS 
                            
                            POUR Jc = 1 A SAI_JourC 
                                
                                EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
                                
                                SI DateVersJour(Dc) > 5 ALORS 
                                    Dc..Jour+=1    
                                SINON 
                                    
                                    HExécuteRequête(REQ_MaladieEnfant_Pris,hRequêteDéfaut,SAI_Employé,Dc..Année)
                                    
                                    EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
                                    
                                    // on ajout un jour de congé Maladie
                                    // Recherche l'enregistrement
                                    HLitRecherchePremier(Maladie_Enfant,IDMaladieEnfant,REQ_MaladieEnfant_Pris.IDMaladieEnfant)
                                    SI HTrouve() ALORS 
                                        resMALADIEENFANT est un numérique = Maladie_Enfant.MaladieEnfant_pris
                                        ResMMALADIEENFANT est un numérique = resMALADIEENFANT+1
                                        Maladie_Enfant.MaladieEnfant_pris =  ResMMALADIEENFANT
                                        SI ResMMALADIEENFANT <= 6 ALORS HModifie(Maladie_Enfant)
                                    SINON
                                       Maladie_Enfant.Année = Gauche(SAI_DateA,4)
                                       Maladie_Enfant.IDUtilisateur = SAI_Employé
                                       Maladie_Enfant.MaladieEnfant_pris = "1"
                                       HAjoute(Maladie_Enfant)
                                      
                                    FIN 
                                    Lieu.DateA = Dc
                                    Lieu.Année = DateVersChaîne(Dc,"AAAA")
                                    Lieu.IDUtilisateur = SAI_Employé
                                    Lieu.LieuSujet = SAI_Lieu
                                    Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
                                    SI ResMMALADIEENFANT <= 6 ALORS  
                                        HAjoute(Lieu)
                                    SINON
                                        Info("On ne peut pas prendre plus de 6 congés CONGE MALADIE par an")
                                    FIN 
                                
                                    Dc..Jour+=1    
                                FIN    
                            FIN
                            
                        PageFermeDialogue()
                        SINON     
                            
                        
        // Evenement autre
        
        POUR Jc = 1 A SAI_JourC
            
            EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
            SI DateVersJour(Dc) > 5 ALORS
                Dc..Jour+=1    
            SINON
                Lieu.DateA = Dc
                Lieu.Année = DateVersChaîne(Dc,"AAAA")
                Lieu.IDUtilisateur = SAI_Employé
                Lieu.LieuSujet = SAI_Lieu
                Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
                HAjoute(Lieu)
                Dc..Jour+=1    
            FIN    
        FIN
    PageFermeDialogue()
        FIN
        FIN
        FIN
        FIN
        FIN
// ------------------------------- Ajouter un événement à Tous les Utilisateurs --------------------------------            
            
        CAS 2
            
            POUR Jc = 1 A SAI_JourC
                SI DateVersJour(Dc) > 5 ALORS
                    Dc..Jour+=1    
                SINON
                    HExécuteRequête(REQ_Utilisateur_présent,Cadil,hRequêteDéfaut,DateDebut,DateFin)
                    HLitPremier(REQ_Utilisateur_présent,IDUtilisateur)
                    
                    TANTQUE PAS HEnDehors()
                        sIdU est une chaîne = REQ_Utilisateur_présent.IDUtilisateur
                        
                        // Evenement CONGE N
                        SI COMBO_Evénement..ValeurAffichée ="CONGE JOURNEE" OU COMBO_Evénement..ValeurAffichée ="CONGE DEMI JOURNEE" ALORS
                        
                        SI Dc > dateFinConge ALORS
                            Sannée  = Gauche(SAI_DateA, 4)
                            Sai_année_suivant..Année++
                            DateDebutConge  = ChaîneVersDate("01/06/"+Sannée,"JJ/MM/AAAA")
                            dateFinConge  = ChaîneVersDate("31/05/"+Sai_année_suivant,"JJ/MM/AAAA")
                        FIN    
                        
                        SI Dc < DateDebutConge ALORS
                            Sannée = Gauche(SAI_DateA, 4)
                            Sannée..Année-=1
                            Sai_année_suivant = Gauche(SAI_DateA, 4) 
                            
                            DateDebutConge  = ChaîneVersDate("01/06/"+Sannée,"JJ/MM/AAAA")
                            dateFinConge  = ChaîneVersDate("31/05/"+Sai_année_suivant,"JJ/MM/AAAA")
                        FIN    
                            
                        HExécuteRequête(REQ_Conge_restant,hRequêteDéfaut,sIdU,DateDebutConge,dateFinConge)
                        
                        EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
                        SI REQ_Conge_restant.CongéN_Restant > 0 ALORS
                            
                            // on enlève un jour de congé N    
                            // Recherche l'enregistrement
                            HLitRecherchePremier(Conge,IDConge,REQ_Conge_restant.IDConge)
                            SI HTrouve() ALORS
                                resN_ est un numérique = Conge.CongéN_Restant
                                resMN_ est un numérique
                                SI COMBO_Evénement..ValeurAffichée = "CONGE JOURNEE" ALORS
                                    resMN_ = resN-1 
                                FIN
                                SI COMBO_Evénement..ValeurAffichée = "CONGE DEMI JOURNEE" ALORS 
                                    resMN_ = resN-0.5
                                FIN
                                Conge.CongéN_Restant =     resMN_
                                Conge.Total_conge_restant = resN_+resMN_
                                HModifie(Conge)
                                
                            FIN
                    
                        Lieu.DateA = Dc
                        Lieu.Année = DateVersChaîne(Dc,"AAAA")
                        Lieu.IDUtilisateur = sIdU
                        Lieu.LieuSujet = SAI_Lieu
                        Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
                        HAjoute(Lieu)
                        SINON
                        Info("Plus ou Pas de congé N disponible")
                        FIN
                        SINON
                        // Evenement CONGE N-1
                        SI COMBO_Evénement..ValeurAffichée ="C N-1 JOURNEE" OU COMBO_Evénement..ValeurAffichée ="C N-1 DEMI JOURNEE" ALORS
                            
                            SI Dc > dateFinConge ALORS
                                Sannée  = Gauche(SAI_DateA, 4)
                                Sai_année_suivant..Année++
                                DateDebutConge  = ChaîneVersDate("01/06/"+Sannée,"JJ/MM/AAAA")
                                dateFinConge  = ChaîneVersDate("31/05/"+Sai_année_suivant,"JJ/MM/AAAA")
                            FIN    
                            
                            SI Dc < DateDebutConge ALORS
                                
                                Sannée = Gauche(SAI_DateA, 4)
                                Sannée..Année-=1
                                Sai_année_suivant = Gauche(SAI_DateA, 4) 
                                
                                DateDebutConge  = ChaîneVersDate("01/06/"+Sannée,"JJ/MM/AAAA")
                                dateFinConge  = ChaîneVersDate("31/05/"+Sai_année_suivant,"JJ/MM/AAAA")
                            FIN    
                            
                        HExécuteRequête(REQ_Conge_restant,hRequêteDéfaut,sIdU,DateDebutConge,dateFinConge)
                        
                         EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
                        SI REQ_Conge_restant.CongéN_1_Restant > 0 ALORS
                            
                                // on enlève un jour de congé N-1
                                // Recherche l'enregistrement
                                HLitRecherchePremier(Conge,IDConge,REQ_Conge_restant.IDConge)
                                SI HTrouve() ALORS
                                    resN_1 est un numérique = Conge.CongéN_1_Restant
                                    ResMN_1 est un numérique
                                    SI COMBO_Evénement..ValeurAffichée = "C N-1 JOURNEE" ALORS
                                        ResMN_1 = resN_1-1 
                                    FIN
                                    SI COMBO_Evénement..ValeurAffichée = "C N-1 DEMI JOURNEE" ALORS 
                                        ResMN_1 = resN_1-0.5
                                    FIN        
                                    Conge.CongéN_1_Restant =  ResMN_1    
                                    Conge.Total_conge_restant = ResMN_1+resN_1 
                                    HModifie(Conge)
                                FIN
                        
                        Lieu.DateA = Dc
                        Lieu.Année = DateVersChaîne(Dc,"AAAA")
                        Lieu.IDUtilisateur = sIdU
                        Lieu.LieuSujet = SAI_Lieu
                        Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
                        HAjoute(Lieu)
                        SINON
                        Info("Plus ou Pas de congé N-1 disponible")
                        FIN
                        SINON
                        // Evenement RTT 
                        
                            SI COMBO_Evénement..ValeurAffichée ="RTT JOURNEE" OU COMBO_Evénement..ValeurAffichée ="RTT DEMI JOURNEE" ALORS
                                
                                                            
                                HExécuteRequête(REQ_RTT_restant,hRequêteDéfaut,sIdU,Dc..Année)
                                
                                EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
                        
                                
                                SI REQ_RTT_restant.RTT_Restant > 0 ALORS
                                    // on enlève un jour de congé N-1
                                    // Recherche l'enregistrement
                                    HLitRecherchePremier(RTT,IDRTT,REQ_RTT_restant.IDRTT)
                                    SI HTrouve() ALORS
                                        resRTT_ est un numérique = RTT.RTT_restant
                                        ResMRTT_ est un numérique
                                        SI COMBO_Evénement..ValeurAffichée = "RTT JOURNEE" ALORS
                                            ResMRTT_ = resRTT_-1 
                                        FIN
                                        SI COMBO_Evénement..ValeurAffichée = "RTT DEMI JOURNEE" ALORS 
                                            ResMRTT_ = resRTT_-0.5
                                        FIN
                                        RTT.RTT_restant =  ResMRTT_
                                        HModifie(RTT)
                                    FIN
                                    
                                    Lieu.DateA = Dc
                                    Lieu.Année = DateVersChaîne(Dc,"AAAA")
                                    Lieu.IDUtilisateur = sIdU
                                    Lieu.LieuSujet = SAI_Lieu
                                    Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
                                    HAjoute(Lieu)
                                SINON
                                    Info("Plus ou Pas de RTT disponible")
                                FIN
                            SINON
                        // Evenement Maladie
                        
                                
                                SI COMBO_Evénement..ValeurAffichée ="MALADIE" ALORS
                                    
                                    
                                    HExécuteRequête(REQ_Maladie_Pris,hRequêteDéfaut,sIdU,Dc..Année)
                                    
                                    EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
                                
                                    
                                
                                        // on ajout un jour de congé Maladie
                                        // Recherche l'enregistrement
                                        HLitRecherchePremier(Maladie,IDMaladie,REQ_Maladie_Pris.IDMaladie)
                                        SI HTrouve() ALORS
                                            resMALADIE_ est un numérique = Maladie.Maladie_pris
                                            ResMMALADIE_ est un numérique = resMALADIE_+1
                                            Maladie.Maladie_pris =  ResMMALADIE_
                                            HModifie(Maladie)
                                        SINON
                                        Maladie.Année = Gauche(SAI_DateA,4)
                                        Maladie.IDUtilisateur = SAI_Employé
                                        Maladie.Maladie_pris = "1"
                                        HAjoute(Maladie)
                                        
                                        FIN 
                                        
                                        Lieu.DateA = Dc
                                        Lieu.Année = DateVersChaîne(Dc,"AAAA")
                                        Lieu.IDUtilisateur = sIdU
                                        Lieu.LieuSujet = SAI_Lieu
                                        Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
                                        HAjoute(Lieu)
                                    
                                SINON    
                                
                                    // Evenement MALADIE ENFANT
                                    
                                    SI COMBO_Evénement..ValeurAffichée ="MALADIE ENFANT" ALORS 
                                        
                                                                                        
                                                HExécuteRequête(REQ_MaladieEnfant_Pris,hRequêteDéfaut,SAI_Employé,Dc..Année)
                                                
                                                EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
                                                
                                                // on ajout un jour de congé Maladie
                                                // Recherche l'enregistrement
                                                HLitRecherchePremier(Maladie_Enfant,IDMaladieEnfant,REQ_MaladieEnfant_Pris.IDMaladieEnfant)
                                                SI HTrouve() ALORS 
                                                    resMALADIEENFANT_ est un numérique = Maladie_Enfant.MaladieEnfant_pris
                                                    ResMMALADIEENFANT_ est un numérique = resMALADIEENFANT_+1
                                                    Maladie_Enfant.MaladieEnfant_pris =  ResMMALADIEENFANT_
                                                    SI ResMMALADIEENFANT_ <= 6 ALORS HModifie(Maladie_Enfant)
                                                SINON
                                                Maladie_Enfant.Année = Gauche(SAI_DateA,4)
                                                Maladie_Enfant.IDUtilisateur = SAI_Employé
                                                Maladie_Enfant.MaladieEnfant_pris = "1"
                                                HAjoute(Maladie_Enfant)
                                            
                                                FIN 
                                                Lieu.DateA = Dc
                                                Lieu.Année = DateVersChaîne(Dc,"AAAA")
                                                Lieu.IDUtilisateur = SAI_Employé
                                                Lieu.LieuSujet = SAI_Lieu
                                                Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
                                                SI ResMMALADIEENFANT_ <= 6 ALORS  
                                                    HAjoute(Lieu)
                                                SINON
                                                    Info("On ne peut pas prendre plus de 6 congés CONGE MALADIE par an")
                                                FIN 
                                                                
                                        
                                    SINON             
                        // Autre Evenement
                        
                        EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
                    
                        Lieu.DateA = Dc
                        Lieu.Année = DateVersChaîne(Dc,"AAAA")
                        Lieu.IDUtilisateur = sIdU
                         Lieu.LieuSujet = SAI_Lieu
                         Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
                        HAjoute(Lieu)                    
                    
                        FIN
                        FIN
                        FIN    
                        FIN
                        FIN
                    HLitSuivant(REQ_Utilisateur_présent,IDUtilisateur)
                    FIN
                    Dc..Jour+=1    
                FIN    
            FIN
            PageFermeDialogue()
            
        AUTRE CAS
        
    FIN

Desktop : 14.04 LTS 64 bits / ASUS M4A89GTD PRO / DDR3 8Go / Phenom II 4x 955 Black Edition / ATI HD6870 / DLINK Airplus Xtrem 108mb/s

Hors ligne

#182 Le 10/12/2010, à 12:39

valAa

Re : Windev et Webdev, c'est super ou c'est super nul?

grim7reaper a écrit :

Le switch c'est spécifique au langage effectivement

Oui, mais tout les langages (généralistes) sérieux que je connais l'ont (sous une forme ou une autre).

Python n'a pas de switch.
Mais on obtient le même comportement très facilement avec un dictionnaire de fonctions (lambda ou pas).
Je sais pas si c'est plus clair pour un novice, mais ce qui est sûr c'est que ça limite beaucoup le code spaghetti.
Les hashtables c'est bon, mangeons en
tongue

Hors ligne

#183 Le 10/12/2010, à 13:31

grim7reaper

Re : Windev et Webdev, c'est super ou c'est super nul?

Mathieu147 a écrit :
grim7reaper a écrit :

Encore faut-il que le langage le permette…
Et non, certaines structures sont assez hard à coder de manière efficace.

Bah, quand on sait comment ça marche… Le plus compliqué dans ce que j'ai cité ce sont les arbres équilibrés mais même ça, avec les algorithmes sous les yeux tu peux les refaire assez facilement dans n'importe quel langage.

Non, pas n'importe quel langage. Certains ne propose pas ce qu'il faut pour.
Savoir comment ça fonctionne est une chose (d'ailleur je dis bien savoir comment ça fonctionne, recopier un algo n'a aucun intérêt), le coder de manière optimale en est une autre.

sebz_ a écrit :
grim7reaper a écrit :

En gros, j'aimerais savoir ce que supporte Windev au niveau structures de données ?

Peut être une réponse ici mais, ça date de 2005

Ouais, c'est pas la joie quoi (bien qu'en 5 ans ça a dû pas mal evolué, j'espère…)

valAa a écrit :

Python n'a pas de switch.
Mais on obtient le même comportement très facilement avec un dictionnaire de fonctions (lambda ou pas).
Je sais pas si c'est plus clair pour un novice, mais ce qui est sûr c'est que ça limite beaucoup le code spaghetti.
Les hashtables c'est bon, mangeons en
tongue

Ouais, bah Python en même temps… (oui, je ne suis pas fan de ce langage smile).
M'enfin, oui on peut obtenir la même chose avec un dico mais j'aime bien mes switch quand même.
Par contre, le switch n'a rien a voir avec le code spaghetti (goto je veux bien, mais switch n'y incite pas plus que le reste).

Dernière modification par grim7reaper (Le 10/12/2010, à 13:32)

Hors ligne

#184 Le 10/12/2010, à 13:46

valAa

Re : Windev et Webdev, c'est super ou c'est super nul?

grim7reaper a écrit :
valAa a écrit :

Python n'a pas de switch.
Mais on obtient le même comportement très facilement avec un dictionnaire de fonctions (lambda ou pas).
Je sais pas si c'est plus clair pour un novice, mais ce qui est sûr c'est que ça limite beaucoup le code spaghetti.
Les hashtables c'est bon, mangeons en
tongue

Ouais, bah Python en même temps… (oui, je ne suis pas fan de ce langage smile).
M'enfin, oui on peut obtenir la même chose avec un dico mais j'aime bien mes switch quand même.

Par contre, le switch n'a rien a voir avec le code spaghetti (goto je veux bien, mais switch n'y incite pas plus que le reste).

Nan mais j'ai rien contre le switch, je dis pas qu'il incite plus qu'autre chose à faire du spaghetti ou quoi.
Je dis juste qu'on s'en passe très bien quand on ne l'a pas sous la main. (ce qui arrive dans des langages "sérieux", oh my god)
Et que mettre les différents 'case' dans des fonctions oblige ceux qui seraient tentés par du code spaghetti (ça m'arrive des fois d'être tenté) à faire autrement.
Après, quand je fais du C++, j'utilise aussi le switch, et je le vis très bien.

Bref, ce qui fait le "sérieux" d'un langage, ce n'est pas sa ressemblance ou pas avec les autres, et est-ce qu'il a la même structure de contrôle de tel autre langage "sérieux"... c'est ce qu'on peut faire avec de manière propre et maintenable.

Hors ligne

#185 Le 10/12/2010, à 13:51

HP

Re : Windev et Webdev, c'est super ou c'est super nul?

exemple :

def switch(arg):
    if arg == 1:
        return do_something()
    if arg == 2:
        return do_other()
    if arg == 3:
        return do_another()
    if arg in [4, 5, 6]:
        return do_wow()
        
    return do_unexpected()

c'est pas forcément génial, mais je ne vois pas en quoi le switch avec un syntaxe de type C serait mieux… m'est avis que le switch est un structure assez peu utile.

Dernière modification par HP (Le 10/12/2010, à 13:53)


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#186 Le 10/12/2010, à 13:58

grim7reaper

Re : Windev et Webdev, c'est super ou c'est super nul?

valAa a écrit :

Je dis juste qu'on s'en passe très bien quand on ne l'a pas sous la main. (ce qui arrive dans des langages "sérieux", oh my god)

roll


@HP : Il n'est pas mieux, je n'ai jamais dit ça !
Et il n'est pas inutile, je rappelle que certains langage n'ont pas de hashmap de base et que j'ai pas forcément envie de me palucher le codage à chaque fois qu'un switch peut suffire.

Hors ligne

#187 Le 10/12/2010, à 14:37

Mathieu147

Re : Windev et Webdev, c'est super ou c'est super nul?

grim7reaper a écrit :
Mathieu147 a écrit :
grim7reaper a écrit :

Encore faut-il que le langage le permette…
Et non, certaines structures sont assez hard à coder de manière efficace.

Bah, quand on sait comment ça marche… Le plus compliqué dans ce que j'ai cité ce sont les arbres équilibrés mais même ça, avec les algorithmes sous les yeux tu peux les refaire assez facilement dans n'importe quel langage.

Non, pas n'importe quel langage. Certains ne propose pas ce qu'il faut pour.
Savoir comment ça fonctionne est une chose (d'ailleur je dis bien savoir comment ça fonctionne, recopier un algo n'a aucun intérêt), le coder de manière optimale en est une autre.

Y a-t-il beaucoup de langages qui n'ont aucune notion de référence vers un objet ou une structure?

J'ai dans mes cours d'algorithmique des explications sur les arbres équilibrés: ça fait seulement 9 pages, avec les explications, pas mal de schémas, et une implémentation en pseudo code. Avec ça tu peux implémenter des arbres équilibrés dans n'importe quel langage.

Une fois que c'est fait, t'es pas obligé de connaître la théorie sur le bout des doigts, tu dois juste utiliser tes fonctions add(), remove(), search() etc.

HP a écrit :

exemple :

def switch(arg):
    if arg == 1:
        return do_something()
    if arg == 2:
        return do_other()
    if arg == 3:
        return do_another()
    if arg in [4, 5, 6]:
        return do_wow()
        
    return do_unexpected()

c'est pas forcément génial, mais je ne vois pas en quoi le switch avec un syntaxe de type C serait mieux… m'est avis que le switch est un structure assez peu utile.

Le switch n'est pas très utile puisqu'il peut être émulé avec des if…elseif…else, mais parfois c'est pas plus mal, ça fait plus clair.

Idem pour le for, il ne sert à rien puisqu'il peut être émulé par une boucle while:

for (A;B;C) {
  …
}

A;
while (B) {
  …
  C;
}
for (int i=0;i<10;i++) {
  …
}

int i=0;
while (i<10) {
  …
  i++;
}

Pffff…

Hors ligne

#188 Le 10/12/2010, à 14:53

grim7reaper

Re : Windev et Webdev, c'est super ou c'est super nul?

Mathieu147 a écrit :

Y a-t-il beaucoup de langages qui n'ont aucune notion de référence vers un objet ou une structure?

Beaucoup non, mais il y en a (c'est pas parce qu'ils sont une minorité, comme les utilisateurs d'OS libre, qu'il faut les négliger ou les oublier).

J'ai dans mes cours d'algorithmique des explications sur les arbres équilibrés: ça fait seulement 9 pages, avec les explications, pas mal de schémas, et une implémentation en pseudo code. Avec ça tu peux implémenter des arbres équilibrés dans n'importe quel langage.

Encore une fois, entre l'implémentation théorique et celle pratique il y a parfois un monde.
En théorie, l'optimisation de Sedgewick sur le tri rapide est cool, en pratique elle l'est beaucoup moins (voire elle à l'effet inverse) de la notion de caches matériels.

Une fois que c'est fait, t'es pas obligé de connaître la théorie sur le bout des doigts, tu dois juste utiliser tes fonctions add(), remove(), search() etc.

Dans la mesure du possible, j'aime comprendre ce que j'utilise. Question de principe…

Le switch n'est pas très utile puisqu'il peut être émulé avec des if…elseif…else

Idem pour le for, il ne sert à rien puisqu'il peut être émulé par une boucle while:

Ces 2 affirmations sont fausses, il faudrait voir à ne pas laisser la sémantique de côté.
Un for n'est pas un while, et un switch n'est pas une suite d'if-else car la sémantique est différente. D'ailleurs, en général, les compilos n'optimise pas de la même manière (un switch est plus performant qu'une suite d'if-else, et un for s'optimise plus facilement qu'un while il me semble).
Alors oui, ok au niveau action ça rend pareil, mais au niveau sens pas vraiment.
C'est comme les gens qui font

printf("Hello Wolrd!\n");

au lieu de faire

puts("Hello World!\n");

printf à une sémantique de chaîne formatée, si on ne formate pas la chaîne c'est un non-sens de l'utiliser.

Dernière modification par grim7reaper (Le 10/12/2010, à 14:54)

Hors ligne

#189 Le 10/12/2010, à 14:58

sebz_

Re : Windev et Webdev, c'est super ou c'est super nul?

Mathieu147 a écrit :

Idem pour le for, il ne sert à rien puisqu'il peut être émulé par une boucle while:

for (A;B;C) {
  …
}

A;
while (B) {
  …
  C;
}
for (int i=0;i<10;i++) {
  …
}

int i=0;
while (i<10) {
  …
  i++;
}

i est un entier = 5
BOUCLE
// blablabla
i++
A FAIRE TANTQUE i<15

Je suis d'accord pour dire que for et while comme POUR et BOUCLE se complètent, ils ont l'un et l'autre une utilité bien distincte.

i est un entier
POUR i=5 A 15
// blabla
FIN

Dernière modification par sebz_ (Le 10/12/2010, à 15:05)


Desktop : 14.04 LTS 64 bits / ASUS M4A89GTD PRO / DDR3 8Go / Phenom II 4x 955 Black Edition / ATI HD6870 / DLINK Airplus Xtrem 108mb/s

Hors ligne

#190 Le 10/12/2010, à 15:03

HP

Re : Windev et Webdev, c'est super ou c'est super nul?

sebz_ a écrit :
i est un entier = 5
BOUCLE
// blablabla
i++
A FAIRE TANTQUE i<15

Quelle horreur…


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#191 Le 10/12/2010, à 15:14

sebz_

Re : Windev et Webdev, c'est super ou c'est super nul?

HP a écrit :
sebz_ a écrit :
i est un entier = 5
BOUCLE
// blablabla
i++
A FAIRE TANTQUE i<15

Quelle horreur…

int i=0;
while (i<10) {
  …
  i++;
}

Ce code est plus lisible isolé, mais ça doit faire mal au yeux à la longue toutes ces  accolades et parenthèses.
Moi c'est les accolades qui me saoule.

Dernière modification par sebz_ (Le 10/12/2010, à 15:16)


Desktop : 14.04 LTS 64 bits / ASUS M4A89GTD PRO / DDR3 8Go / Phenom II 4x 955 Black Edition / ATI HD6870 / DLINK Airplus Xtrem 108mb/s

Hors ligne

#192 Le 10/12/2010, à 15:18

Kanor

Re : Windev et Webdev, c'est super ou c'est super nul?

for i in range(11):
   print i

c'est vrai les accolade c'est chiant

Hors ligne

#193 Le 10/12/2010, à 15:18

The Uploader

Re : Windev et Webdev, c'est super ou c'est super nul?

Ce code est plus lisible isolé, mais ça doit faire mal au yeux à la longue toutes ces  accolades et parenthèses.

lol au pire tu prends python! tongue

Et puis, en W-Langage tu as des parenthèses, tout de même! lol
Y'a bien pire niveau parenthèses :

;; Tabulation of Hofstadter's male and female sequences
(letrec ((female (lambda(n)
                   (if (= n 0) 1
                       (- n (male (female (- n 1)))))))
         (male (lambda(n)
                 (if (= n 0) 0
                     (- n (female (male (- n 1))))))))
  (display "i male(i) female(i)")(newline)
  (do ((i 0 (+ i 1)))
      ((> i 8) #f)
    (display i) (display "   ")(display (male i))(display "         ")(display (female i))
    (newline)))

Vive Scheme! \o/

Dernière modification par The Uploader (Le 10/12/2010, à 15:23)


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#194 Le 10/12/2010, à 15:23

grim7reaper

Re : Windev et Webdev, c'est super ou c'est super nul?

sebz_ a écrit :

Ce code est plus lisible isolé, mais ça doit faire mal au yeux à la longue toutes ces  accolades et parenthèses.
Moi c'est les accolades qui me saoule.

Moi j'aime bien les accolades et les parenthèses (mais à petite dose, faut pas que ça devienne du Lisp non plus).

Mais si tu n'aimes pas, alors tu devrais adorer Python.

@The Uploader : *PAN*, tu me rappelles de mauvais souvenir là…

Dernière modification par grim7reaper (Le 10/12/2010, à 15:24)

Hors ligne

#195 Le 10/12/2010, à 15:27

Mathieu147

Re : Windev et Webdev, c'est super ou c'est super nul?

grim7reaper a écrit :

Le switch n'est pas très utile puisqu'il peut être émulé avec des if…elseif…else

Idem pour le for, il ne sert à rien puisqu'il peut être émulé par une boucle while:

Ces 2 affirmations sont fausses, il faudrait voir à ne pas laisser la sémantique de côté.

Je me suis pas très bien exprimé, je voulais juste dire que switch n'est pas nécessairement indispensable.

grim7reaper a écrit :

un switch est plus performant qu'une suite d'if-else, et un for s'optimise plus facilement qu'un while il me semble

Honnêtement, je n'en sais rien, mais je trouverais ça étonnant. Peut-être que pour le switch il y a des astuces, mais un for c'est vraiment un while comme j'ai montré plus haut.

HP a écrit :
sebz_ a écrit :
i est un entier = 5
BOUCLE
// blablabla
i++
A FAIRE TANTQUE i<15

Quelle horreur…

Tu l'as dit…

Je continue quand-même à me poser la question: il n'y a pas moyen de mettre de gardien de boucle avant ladite boucle?

sebz_ a écrit :

Ce code est plus lisible isolé, mais ça doit faire mal au yeux à la longue toutes ces  accolades et parenthèses.
Moi c'est les accolades qui me saoule.

Non pas du tout… Je préfère des accolades que des mots-clés si longs. Mais je crois que finalement c'est une question d'habitude.

grim7reaper a écrit :

@The Uploader : *PAN*, tu me rappelles de mauvais souvenir là…

yikes yikes yikes re-*PAN* parce que Scheme, merci, j'ai déjà donné… Beurk…


Pffff…

Hors ligne

#196 Le 10/12/2010, à 15:28

sebz_

Re : Windev et Webdev, c'est super ou c'est super nul?

Kanor a écrit :
for i in range(11):
   print i

c'est vrai les accolade c'est chiant

Pas besoin de déclarer i ?


Desktop : 14.04 LTS 64 bits / ASUS M4A89GTD PRO / DDR3 8Go / Phenom II 4x 955 Black Edition / ATI HD6870 / DLINK Airplus Xtrem 108mb/s

Hors ligne

#197 Le 10/12/2010, à 15:29

The Uploader

Re : Windev et Webdev, c'est super ou c'est super nul?

@The Uploader : *PAN*, tu me rappelles de mauvais souvenir là…

Ouais ben j'en bouffe avec l'écriture d'un script-fu pour GIMP... alors pas la peine de me remercier. cool big_smile

Dernière modification par The Uploader (Le 10/12/2010, à 15:30)


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#198 Le 10/12/2010, à 15:31

sebz_

Re : Windev et Webdev, c'est super ou c'est super nul?

The Uploader a écrit :

Ce code est plus lisible isolé, mais ça doit faire mal au yeux à la longue toutes ces  accolades et parenthèses.

lol au pire tu prends python! tongue

Et puis, en W-Langage tu as des parenthèses, tout de même! lol
Y'a bien pire niveau parenthèses :

;; Tabulation of Hofstadter's male and female sequences
(letrec ((female (lambda(n)
                   (if (= n 0) 1
                       (- n (male (female (- n 1)))))))
         (male (lambda(n)
                 (if (= n 0) 0
                     (- n (female (male (- n 1))))))))
  (display "i male(i) female(i)")(newline)
  (do ((i 0 (+ i 1)))
      ((> i 8) #f)
    (display i) (display "   ")(display (male i))(display "         ")(display (female i))
    (newline)))

Vive Scheme! \o/

Au secours lol

C'est pire que SI SINON quand t'oublie une parenthèse, tu t'arraches les cheveux.
Mais comme j'ai lu plus haut VIM les surlignes heureusement.

Oui dans Windev y a des parenthèses mais sur la même ligne, c'est pas comparable.

Dernière modification par sebz_ (Le 10/12/2010, à 15:32)


Desktop : 14.04 LTS 64 bits / ASUS M4A89GTD PRO / DDR3 8Go / Phenom II 4x 955 Black Edition / ATI HD6870 / DLINK Airplus Xtrem 108mb/s

Hors ligne

#199 Le 10/12/2010, à 15:35

Mathieu147

Re : Windev et Webdev, c'est super ou c'est super nul?

The Uploader a écrit :

@The Uploader : *PAN*, tu me rappelles de mauvais souvenir là…

Ouais ben j'en bouffe avec l'écriture d'un script-fu pour GIMP... alors pas la peine de me remercier. cool big_smile

Ouais moi aussi j'en avais fait un une fois. Pourquoi les développeurs de Gimp ont-ils choisi ce langage?

sebz_ a écrit :

Au secours lol

C'est pire que SI SINON quand t'oublie une parenthèse, tu t'arraches les cheveux.

Ouais, avec Scheme, dans tous les cas, tu chies des barres carrées.

Ça doit être simple à parser pour l'interpréteur mais punaise c'est mille fois trop chiant à écrire!


Pffff…

Hors ligne

#200 Le 10/12/2010, à 15:38

sebz_

Re : Windev et Webdev, c'est super ou c'est super nul?

Mathieu147 a écrit :
HP a écrit :
sebz_ a écrit :
i est un entier = 5
BOUCLE
// blablabla
i++
A FAIRE TANTQUE i<15

Quelle horreur…

Tu l'as dit…

Je continue quand-même à me poser la question: il n'y a pas moyen de mettre de gardien de boucle avant ladite boucle?

C'est quoi que t'appelle un gardien de boucle ?

Edit : A FAIRE TANTQUE c'est ça que t'appelle gardien de boucle. Je pense que c'est logique, i++ incrément et tombe sur i<15 à chaque fois, si i<15 il boucle sinon ça s'arrête. C'est une logique de français que veux tu.

les ['Quote'] du BBcode sont chiantes aussi lol.


Edit : Pour revenir au "gardien" de boucle, on peut faire ça aussi.

i est un entier = 5
TANTQUE i<15
    i++
    //Blabla
FIN

Dernière modification par sebz_ (Le 13/12/2010, à 15:21)


Desktop : 14.04 LTS 64 bits / ASUS M4A89GTD PRO / DDR3 8Go / Phenom II 4x 955 Black Edition / ATI HD6870 / DLINK Airplus Xtrem 108mb/s

Hors ligne