Ilias95 Δημοσ. 4 Μαρτίου 2015 Δημοσ. 4 Μαρτίου 2015 Κάποιο καλό tutorial με τα βασικά της Prolog και του λογικού προγραματισμού στα ελληνικά; Δες αν θες τις σημειώσεις που χρησιμοποιούμε για την τεχνητή νοημοσύνη στο teithe: http://aetos.it.teithe.gr/~demos/teaching_GR.html Κατέβασε το zip "Σημειώσεις διαλέξεων του μαθήματος". 1
PC_MAGAS Δημοσ. 14 Μαρτίου 2015 Δημοσ. 14 Μαρτίου 2015 Serlvets σε linux και tomcat μα maven: http://wp.me/pRFAL-bt
skiabox Δημοσ. 18 Μαρτίου 2015 Δημοσ. 18 Μαρτίου 2015 Απλά κάντε κλικ στην υπογραφή μου. Αρκετά άρθρα γύρω από διάφορα θέματα software development.
DeadElectron Δημοσ. 24 Ιουνίου 2015 Δημοσ. 24 Ιουνίου 2015 Tutorials για C++ από εμένα -> programmunity.blogspot.com...
Tmark Δημοσ. 22 Ιανουαρίου 2016 Δημοσ. 22 Ιανουαρίου 2016 47 free C++ tutorials: http://www.engineer4free.com/cplusplus.html
InfernoN Δημοσ. 27 Ιανουαρίου 2016 Δημοσ. 27 Ιανουαρίου 2016 Εισαγωγή στον πρoγραμματισμό υπολογιστών με τη γλώσσα C http://fourier.math.uoc.gr/~mk/prog0001/prog/progS/
Moderators Kercyn Δημοσ. 28 Ιανουαρίου 2016 Moderators Δημοσ. 28 Ιανουαρίου 2016 Εισαγωγή στον πρoγραμματισμό υπολογιστών με τη γλώσσα C http://fourier.math.uoc.gr/~mk/prog0001/prog/progS/ Το hello world: #include <stdio.h> main() { printf("Hello, world!\n"); } Πιο κάτω: Όλες οι μέθοδοι ανακύκλωσης εκτός από το goto θεωρούνται μέθοδοι δομημένου προγραμματισμού, το δε goto θα δείτε πάρα πολλά βιβλία προγραμματισμού να σας συνιστούν να το αποφεύγετε, επειδή η χρήση του καθιστά ένα πρόγραμμα δυσκολοδιάβαστο. Αυτό είναι εν μέρει μόνο σωστό. Υπάρχουν περιπτώσεις όπου η χρήση ενός goto για την υλοποίηση ενός loop, απλοποιεί πολύ τα πράγματα σε σχέση με το αν είχαμε χρησιμοποιήσει μια από τις άλλες τρεις μεθόδους ανακύκλωσης, που θεωρούνται αποδεκτές στη φιλοσοφία του δομημένου προγραμματισμού. Είναι ΟΚ να χρησιμοποιεί κανείς σε ένα μέρος ενός κώδικα ένα ή και δύο goto. Αν όμως βλέπει κανείς να χρησιμοποιεί πολλά labels, τότε μαλλον το loop του χρειάζεται ανασχεδιασμό και υλοποίηση με κάποια από τις άλλες μεθόδους ανακύκλωσης. Δεν το διάβασα όλο αλλά μόνο απ' αυτά τα 2 δε νομίζω να θέλω να το διαβάσω όλο. 2
gon1332 Δημοσ. 28 Ιανουαρίου 2016 Δημοσ. 28 Ιανουαρίου 2016 Μάθημα προγραμματισμού από τμήμα Μαθηματικών. Οι καθηγητές παίζει να έχουν μείνει σε άλλες εποχές.
MitsakosGR Δημοσ. 28 Ιανουαρίου 2016 Δημοσ. 28 Ιανουαρίου 2016 Το hello world: #include <stdio.h> main() { printf("Hello, world!\n"); } Καλά για το "GOTO" αλλά στο Hello World, τι δεν σου αρέσει;;;
gon1332 Δημοσ. 28 Ιανουαρίου 2016 Δημοσ. 28 Ιανουαρίου 2016 Καλά για το "GOTO" αλλά στο Hello World, τι δεν σου αρέσει;;; #include <stdio.h> int main(void) // or int main(int argc, char *argv[]) { printf("Hello, world!\n"); return 0; } Εκτός κι αν κάνει compile με C99, οπότε και δεν είναι απαραίτητο το return. Δεν το νομίζω όμως.
Ilias95 Δημοσ. 28 Ιανουαρίου 2016 Δημοσ. 28 Ιανουαρίου 2016 Δηλαδή το "μέθοδος ανακύκλωσης" δεν σας πείραξε καθόλου?
M2000 Δημοσ. 2 Φεβρουαρίου 2016 Δημοσ. 2 Φεβρουαρίου 2016 Η χρήση του Goto είναι για προχωρημένους προγραμματιστές μόνο! Δηλαδή η αξία του δεν γίνεται αντιληπτή σε αρχάριους! Δεν χρειάζεται goto για κώδικα των 100 γραμμών...Όμως πιθανόν χρειάζεται για πολύ μεγαλύτερο! Ο κώδικας παρακάτω είναι για το ColorDataEvent ενός αντικειμένου TextViewer που οδηγεί ένα user control μετατρέποντάς το σε επεξεργαστή κειμένου. Στο Event χρωματίζεται ο κώδικας. Τα goto εδώ είναι απαραίτητα. Είναι σαν να χρησιμοποιείς λογική με σύρματα...τα Goto ενώνουν τα σημεία. Τη ρουτίνα την έγραψα με εμπλουτισμό. Αν έπρεπε να την σκεφτώ στο χαρτί, θα έκανα ένα μήνα και παραπάνω. Την έφτιαξα για τα βασικά και μέσα σε λίγες μέρες έφτασε στο "τέρας" που είναι τώρα. Ευτυχώς στην Vb6 μπορείς να τρέχεις το πρόγραμμα και να φτιάχνεις και το κώδικα ταυτόχρονα! Δηλαδή σταματάς το κώδικα, τον αλλάζεις και συνεχίζεις από εκεί που ήσουν (σε εξαιρετικές περιπτώσεις δεν σε αφήνει). Κάποια στιγμή χρησιμοποιώ ετικέτα με όνομα marvel...είναι η θαυμάσια σκέψη που μου έδωσε τη λύση.(γράφω διαισθητικά περισσότερο, δηλαδή ξέρω πως πρέπει περίπου να γράψω το κώδικα, τι χρειάζεται πριν το κάνω να δουλέψει σωστά, οπότε έχω κέρδος ότι ξεκινάω με καλή βάση, αυτό είναι ταλέντο που μπορεί να κοντραριστεί μόνο με μεγάλη εμπειρία) Οπότε αν κάτι σας λένε ότι δεν είναι καλό αλλά δεν σας εξηγούν γιατί δεν το αφαιρούν από τη γλώσσα, τότε μάλλον είναι καλό για προχωρημένους! Το Goto ή Προς το έχει και η Μ2000. Private Sub mDoc_ColorDataEvent(thispara As Long, data As String, col() As Variant, feedback As Long) Dim feedthis As Long If NoColor Then If UBound(col()) > 1 Then ReDim col(1) End If Exit Sub End If ReDim col(1) Dim A$, k As Long, drop$, pos1 As Long, pos2 As Long, onetime As Boolean, kind As Long Dim lastcol As Long A$ = data onetime = True k = Len(A$) If k < 1 Then makebase col(), 14 Exit Sub End If If feedback > 0 Then lastcol = 15 GoTo marvel Else lastcol = 14 End If again: If RTrim$(A$) = "" Then If pos2 > 0 Then addone col(), pos2, lastcol Else makebase col(), 14 End If Exit Sub Rem FOR TESTS pos1 = 0 For k = 1 To UBound(col()) Step 2 If VarType(col(k)) = 0 Then Exit Sub If col(k) > pos1 Then pos1 = col(k) If col(k) < pos1 Then Exit Sub Next k For k = 0 To UBound(col()) Step 2 If col(k) > 15 Then Exit Sub Next k End If While FastSymbol(A$, ":") If pos2 > 0 Then addone col(), pos2, 14 Else addone col(), 1, 14 End If pos2 = k - Len(A$) + 1 Wend drop$ = "@(": kind = Abs(FastSymbol(A$, drop$)) * 4 If kind = 0 Then If IsSymbol(A$, "@") Then If pos2 > 0 Then addone col(), pos2, 14 Else addone col(), 1, 14 End If pos2 = k - Len(A$) + 1 End If End If kind = IsLabelDot("", A$, drop$) If kind = 0 Then drop$ = "$(": kind = Abs(FastSymbol(A$, drop$)) * 4 If kind = 0 Then drop$ = "~(": kind = Abs(FastSymbol(A$, drop$)) * 4 If kind = 0 Then drop$ = "" If kind > 0 Then If ismine(drop$) Then lastcol = 11 If pos2 > 0 Then addone col(), pos2, 11 Else addone col(), k - Len(A$) - Len(drop$) + 1, 11 End If If ismine2(drop$) Then kind = -2 If Trim$(A$) <> "" Then pos2 = k - Len(A$) + 1 If FastSymbol(A$, "{") Then addone col(), pos2, 14 pos2 = k - Len(A$) + 1 onetime = True GoTo again ElseIf ismine3(drop$) Then onetime = True kind = -2 GoTo again2 End If End If ElseIf ismine1(drop$) Then kind = -1 If Trim$(A$) <> "" Then pos2 = k - Len(A$) + 1 If FastSymbol(A$, "{") Then addone col(), pos2, 14 pos2 = k - Len(A$) + 1 onetime = True GoTo again Else Exit Sub End If End If End If Else lastcol = 10 If pos2 > 0 Then addone col(), pos2, 10 Else addone col(), k - Len(A$) - Len(drop$) + 1, 10 End If End If pos2 = k - Len(A$) + 1 If kind > 3 Then pos1 = 1 drop$ = aheadstatus(A$, False, pos1) marvel: If pos1 > 1 Then marvel2: ColorizeExpressions Mid$(A$, 1, pos1 - 1), col(), k - Len(A$) + pos1 - 1, pos2, feedthis feedback = feedthis A$ = Mid$(A$, pos1) If FastSymbol(A$, ",") Then pos2 = k - Len(A$) + 1 pos1 = 1 drop$ = aheadstatus(A$, False, pos1) GoTo marvel2 End If End If If FastSymbol(A$, ")") Then addone col(), pos2, lastcol ' 'lastcol pos2 = k - Len(A$) + 1 End If End If If FastSymbol(A$, ".") Then addone col(), pos2, lastcol pos2 = k - Len(A$) + 1 End If If FastSymbol(A$, "<=") Then addone col(), pos2, 15 pos2 = k - Len(A$) + 1 Else again4: If FastSymbol(A$, "=") Then addone col(), pos2, 15 pos2 = k - Len(A$) + 1 ElseIf MaybeIsSymbol(A$, "+-*/", "=", True) Then addone col(), pos2, 14 pos2 = k - Len(A$) + 1 ElseIf MaybeIsSymbolNoSpace(A$, "~", True) Then addone col(), pos2, 14 pos2 = k - Len(A$) + 1 End If End If again2: Do again3: pos1 = 1 A$ = NLtrim$(A$) drop$ = aheadstatus(A$, False, pos1) If pos1 > 1 Or drop$ = "S" Then If pos1 = 1 Then drop$ = A$ pos1 = Len(A$) + 1 Else drop$ = Mid$(A$, 1, pos1 - 1) If drop$ = "" Then drop$ = " " End If feedback = 0 ColorizeExpressions drop$, col(), k - Len(A$) + pos1 - 1, pos2, feedback A$ = Mid$(A$, pos1) If InStr(drop$, " ") = 0 Or kind >= 0 Then GoTo again3 End If If MaybeIsSymbol(A$, ",;", , True) Then addone col(), pos2, 14 pos2 = k - Len(A$) + 1 onetime = False ElseIf FastSymbol(A$, "}") Then addone col(), pos2, 14 pos2 = k - Len(A$) + 1 onetime = True GoTo again Else onetime = True Exit Do End If Loop GoTo again ElseIf MaybeIsSymbol(A$, "\'") Then If pos2 > 0 Then addone col(), pos2, 7 Else addone col(), 1, 7 End If pos2 = k - Len(A$) + 1 Exit Sub ElseIf Not onetime Then If FastSymbol(A$, ",") Then ElseIf FastSymbol(A$, ":") Then onetime = True ElseIf FastSymbol(A$, ")") Then addone col(), pos2, lastcol pos2 = k - Len(A$) + 1 GoTo again4 ElseIf FastSymbol(A$, ";") Then addone col(), pos2, 14 pos2 = k - Len(A$) + 1 GoTo again2 ElseIf FastSymbol(A$, "}") Then addone col(), pos2, 14 addone col(), k - Len(A$), 11 pos2 = k - Len(A$) + 1 GoTo again3 ElseIf FastSymbol(A$, "{") Then onetime = True ElseIf FastSymbol(A$, "?") Then addone col(), pos2, 14 addone col(), k - Len(A$), 11 pos2 = k - Len(A$) + 1 GoTo again2 Else addone col(), pos2, lastcol Exit Sub End If addone col(), pos2, 14 pos2 = k - Len(A$) + 1 GoTo again ElseIf IsSymbol(A$, "?") Then addone col(), 1, 11 pos2 = k - Len(A$) + 1 GoTo again2 ElseIf IsSymbol(A$, "=") Then If pos2 > 0 Then addone col(), pos2, 11 Else addone col(), 1, 11 End If pos2 = k - Len(A$) + 1 GoTo again2 ElseIf FastSymbol(A$, "{") Then onetime = True If pos2 > 0 Then addone col(), pos2, 14 Else addone col(), 1, 14 End If pos2 = k - Len(A$) + 1 GoTo again ElseIf FastSymbol(A$, "}") Then If pos2 > 0 Then addone col(), pos2, 14 Else addone col(), 1, 14 End If pos2 = k - Len(A$) + 1 GoTo again ElseIf pos2 = 0 Then If IsNumberLabel(A$, drop$) Then addone col(), k - Len(A$) - Len(drop$) + 1, 15 pos2 = k - Len(A$) + 1 GoTo again End If End If If pos2 > 0 Then addone col(), pos2, 14 End Sub Private Sub ColorizeExpressions(ByVal A$, col(), k As Long, pos2 As Long, feedthis As Long) Dim drop$, pos1 As Long, kind As Long Dim lastcol As Long again: If A$ = "" Then Exit Sub drop$ = "@(": kind = Abs(FastSymbol(A$, drop$)) * 4 If kind = 0 Then If IsSymbol(A$, "@") Then If pos2 > 0 Then addone col(), pos2, 14 Else addone col(), 1, 14 End If pos2 = k - Len(A$) + 1 End If kind = IsLabelOnly(A$, drop$) End If If kind = 0 Then drop$ = "$(": kind = Abs(FastSymbol(A$, drop$)) * 4 If kind = 0 Then drop$ = "~(": kind = Abs(FastSymbol(A$, drop$)) * 4 If kind = 0 Then drop$ = "" If kind > 0 Then If ismine(drop$) Then lastcol = 11 If pos2 > 0 Then addone col(), pos2, 11 Else addone col(), k - Len(A$) - Len(drop$) + 1, 11 End If Else If kind = 10 Then lastcol = 14 Else lastcol = 10 If pos2 > 0 Then addone col(), pos2, lastcol Else addone col(), k - Len(A$) - Len(drop$) + 1, lastcol End If End If pos2 = k - Len(A$) + 1 If kind > 3 Then Do pos1 = 1 drop$ = aheadstatus(A$, False, pos1) If pos1 > 1 Then ColorizeExpressions Mid$(A$, 1, pos1 - 1), col(), k - Len(A$) + pos1 - 1, pos2, feedthis If feedthis > 0 And pos1 >= Len(A$) Then Exit Sub feedthis = 0 A$ = Mid$(A$, pos1) End If If FastSymbol(A$, ",") Then addone col(), pos2, 14 pos2 = k - Len(A$) + 1 Else Exit Do End If Loop If FastSymbol(A$, ")") Then addone col(), pos2, lastcol pos2 = k - Len(A$) + 1 End If End If GoTo again ElseIf IsSymbol(A$, ",") Then addone col(), pos2, 14 pos2 = k - Len(A$) + 1 GoTo again ElseIf MaybeIsSymbol(A$, "{", , True) Then addone col(), pos2, 15 drop$ = blockString(A$) If drop$ <> "" Or (drop$ = "" And Left$(A$, 1) = "}") Then feedthis = 0 If Not MaybeIsSymbol(A$, "}", , True) Then feedthis = 15 Else feedthis = 15 End If drop$ = "" pos2 = k - Len(A$) + 1 If feedthis = 15 Then Exit Sub GoTo again ElseIf MaybeIsSymbol(A$, Chr(34)) Then If Not ISSTRINGA(A$, drop$) Then A$ = "" addone col(), pos2, 10 Else addone col(), pos2, 15 End If drop$ = "" pos2 = k - Len(A$) + 1 GoTo again Else addone col(), pos2, 14 A$ = Mid$(A$, 2) pos2 = k - Len(A$) + 1 GoTo again End If If pos2 > 0 Then addone col(), pos2, 14 End Sub
Moderators Kercyn Δημοσ. 2 Φεβρουαρίου 2016 Moderators Δημοσ. 2 Φεβρουαρίου 2016 Offtopic Θες να γράψεις ένα παράδειγμα όπου είναι αναγκαία η χρήση του goto (δηλαδή ο κώδικας έχει σχεδιαστεί σωστά αλλά η χρήση του goto θα μας δώσει πιο readable κώδικα); Δε μιλάω για κώδικα 300 γραμμών σε vb6, πιο πολύ ένα μικρό παράδειγμα με ψευδοκώδικα ή ακόμα και με λόγια. Γιατί ο μόνος λόγος που μπορώ να σκεφτώ για τη χρήση του goto είναι κάποιο τρελό optimization σε embedded ή κάτι τέτοιο (δε λέω ότι με goto γίνεται το optimization, απλώς είναι το μόνο context που εμένα τουλάχιστον μου φαίνεται λογικό να χρησιμοποιηθεί).
gon1332 Δημοσ. 2 Φεβρουαρίου 2016 Δημοσ. 2 Φεβρουαρίου 2016 Offtopic Θες να γράψεις ένα παράδειγμα όπου είναι αναγκαία η χρήση του goto (δηλαδή ο κώδικας έχει σχεδιαστεί σωστά αλλά η χρήση του goto θα μας δώσει πιο readable κώδικα); Δε μιλάω για κώδικα 300 γραμμών σε vb6, πιο πολύ ένα μικρό παράδειγμα με ψευδοκώδικα ή ακόμα και με λόγια. Γιατί ο μόνος λόγος που μπορώ να σκεφτώ για τη χρήση του goto είναι κάποιο τρελό optimization σε embedded ή κάτι τέτοιο (δε λέω ότι με goto γίνεται το optimization, απλώς είναι το μόνο context που εμένα τουλάχιστον μου φαίνεται λογικό να χρησιμοποιηθεί). Offtopic Ναι, υπάρχουν περιπτώσεις που η χρήση goto θα κατέληγε σε ευανάγνωστο κώδικα. Single point of exit: char *malloc_wrp(size_t bytes) { if (length <= 0) goto ERROR; char *s_ptr = malloc(bytes); if (!s_ptr) goto ERROR; return s_ptr; ERROR: return NULL; } Εντελώς χαζό παράδειγμα, δε χρειάζεται να δούμε τί κάνει, αλλά όταν έχουμε ένα μαζεμένα τα return σε ένα σημείο, τότε όλα φαίνονται πιο ξεκάθαρα. Άλλο case είναι όταν θες να βγεις από ένα τρίπατο nested loop. Δε θα μπλέξεις προφανώς με breaks και ifs σε κάθε επίπεδο. Θα βάλεις μία goto. Αν και για να έφτασες σε αυτό το σημείο τότε κάτι πάει στραβά από άποψη σχεδιασμού.
M2000 Δημοσ. 2 Φεβρουαρίου 2016 Δημοσ. 2 Φεβρουαρίου 2016 (επεξεργασμένο) Να ξεκαθαρίσω, δεν γίνεται όπως το σκέφτεσαι Kercyn. Δηλαδή να έχουμε ήδη μια στρωτή περίπτωση δίχως Goto και να πάμε στο Goto. Δεν συζητώ για Optimization. Αν και βοηθάει το goto αν δεν θέλουμε να καλέσουμε ρουτίνα/διαδικασία. Συζητώ για την χρήση του από την αρχή επειδή είναι το μόνο φάρμακο! Δεν γίνεται να μην το χρησιμοποιήσεις όταν έχεις φωλιασμένες επαναλήψεις και εσωτερικά πολλαπλά Αν που αν επιλεγούν τότε ως τελευταία εντολή ορίζουν σε ποια εξωτερική επανάληψη θα ξαναμπεί η ροή. Με πρόλαβε ο gon1332.. Να ένα παράδειγμα με Goto...Το έφτιαξα ειδικά για εδώ! Σε Μ2000. Α$=" +13243.423423, "Κ=Μήκος(Α$)Αν Κ=0 τότε έξοδοςι=1Β$=Μεσ$(Α$,ι,1)προ=ψευδέςδεκ=Ψευδέςκενά=1{οκ5:Αν Β$=" " τότε κενά++ : προς οκ0οκ4:Αν προ Αλλιώς Αν Β$ ~ "[+-]" τότε προ~ : προς οκ1προ=αληθέςοκ3:Αν δεκ Αλλιώς Αν Β$ = "." τότε δεκ~ : προς οκ1οκ2:Αν όχι Β$ ~ "[1234567890]" τότε Αν όχι Β$ ~ "[ ,]" Τότε { λαθος "οχι αριθμός"} Αλλιώς Έξοδοςοκ1:ι++Αν ι<=κ τότε { Β$=Μεσ$(Α$,Ι,1) Αν προ και όχι δεκ τότε προς οκ3 Αν προ και δεκ τότε προς οκ2 προς οκ4}οκ0:Αν ι<κ τότε ι++ : Β$=Μεσ$(Α$,Ι,1) : Προς οκ5Αν ι=κενά και προ τότε Λαθος "μόνο πρόσημο"Αν ι=κενά και δεκ τότε Λαθος "μόνο τελεία"Αν ι=κενά και δεκ και προ τότε Λάθος "Δεν έχω αριθμό"Αν κ<κενά τότε Λάθος "Δεν έχω αριθμό"}Τύπωσε "Σωστός Αριθμός", Μες$(Α$, κενά, ι-κενά) Επεξ/σία 2 Φεβρουαρίου 2016 από M2000
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα