Διαδικασίες και λειτουργίες στο Pascal. Αναδρομή. Υπορουτίνες Συχνά μια εργασία απαιτεί από εσάς να επαναλάβετε μια συγκεκριμένη ακολουθία δηλώσεων σε διαφορετικά μέρη του προγράμματος. Διαδικασίες και λειτουργίες Παρουσίαση διαδικασιών και λειτουργιών

Αναδρομή σε PascalΔάσκαλος: Tlekhurai Yu.V. Δημοτικό εκπαιδευτικό ίδρυμα «Λύκειο Νο 8» Τι βλέπετε στους πίνακες; Αυτό το φαινόμενο στην τέχνη λέγεται αναδρομή "Για να κατανοήσετε την αναδρομή, πρέπει πρώτα να κατανοήσετε την αναδρομή." αναδρομή - μερικός ορισμός ενός αντικειμένου μέσω του εαυτού του, ορισμός ενός αντικειμένου χρησιμοποιώντας προηγουμένως καθορισμένα. Επιστημονικά μιλώντας: Αναδρομή - μια μέθοδος ορισμού μιας κλάσης αντικειμένων ή μεθόδων καθορίζοντας πρώτα μία ή περισσότερες (συνήθως απλές) από τις βασικές περιπτώσεις ή μεθόδους της και στη συνέχεια προσδιορίζοντας στη βάση τους τους κανόνες για την κατασκευή της κλάσης που ορίζεται. Peter Deutsch Peter Deutsch

Ανθρώπινη επανάληψη.

Η αναδρομή είναι από τον Θεό.

Αναδρομή στη φυσικήΑναδρομή στη γλώσσα και τη λογοτεχνία Ένα κλασικό παράδειγμα άπειρης αναδρομής είναι δύο καθρέφτες τοποθετημένοι ο ένας απέναντι από τον άλλο: δύο διάδρομοι σχηματίζονται σε αυτά από ξεθωριασμένες αντανακλάσεις καθρεφτών. Ένα άλλο παράδειγμα άπειρης αναδρομής είναι αποτέλεσμα αυτοδιέγερσης (θετικό ανατροφοδότηση) y ηλεκτρονικά κυκλώματακέρδος, όταν το σήμα από την έξοδο φτάσει στην είσοδο, ενισχύεται, ξανά φτάσει στην είσοδο του κυκλώματος και ενισχύεται ξανά. Οι ενισχυτές για τους οποίους αυτός ο τρόπος λειτουργίας είναι στάνταρ ονομάζονται αυτοταλαντωτές. Ένα παράδειγμα αναδρομικού λήμματος στο λεξικό: «Ο ιερέας είχε ένα σκύλο...» - τυπική αναδρομή Αρκετές ιστορίες του Stanislaw Lem είναι αφιερωμένες σε περιστατικά με άπειρη αναδρομή: Μια ιστορία για τους τάφους («The Star Diaries of John the Quiet»), στο οποίο ο ήρωας μετακινείται διαδοχικά από ένα άρθρο σχετικά με τους τάφους σε ένα άρθρο για την αποκήρυξη, από εκεί σε ένα άρθρο για τα σεπουλκάρια, το οποίο περιέχει και πάλι μια αναφορά στο άρθρο "sepulcaria". Μια ιστορία για μια έξυπνη μηχανή που είχε αρκετή ευφυΐα και τεμπελιά για να κατασκευάσει μια παρόμοια για να λύσει ένα δεδομένο πρόβλημα και να της εμπιστευτεί τη λύση (το αποτέλεσμα ήταν μια άπειρη αναδρομή, όταν κάθε καινούριο αυτοκίνητοέφτιαξε ένα παρόμοιο με τον εαυτό της και της παρέδωσε το έργο). Η αναδρομή στον προγραμματισμό είναι ένας τρόπος οργάνωσης μιας υπολογιστικής διαδικασίας στην οποία μια διαδικασία ή μια συνάρτηση αναφέρεται στον εαυτό της κατά την εκτέλεση των τελεστών που την απαρτίζουν. Προκειμένου μια τέτοια κλήση να μην είναι ατελείωτη, το κείμενο της υπορουτίνας πρέπει να περιέχει μια συνθήκη στην οποία δεν θα υπάρξει άλλη κλήση. Έτσι, μια αναδρομική κλήση μπορεί να συμπεριληφθεί μόνο σε έναν από τους κλάδους της υπορουτίνας. Παράδειγμα. Υπολογισμός του παραγοντικού ενός φυσικού αριθμού Δημιουργήστε μια αναδρομική συνάρτηση που υπολογίζει το παραγοντικό του αριθμού n ως εξής: συνάρτηση f (n: ακέραιος): longint; αρχίζει αν n = 1 τότε f:= 1 άλλο f:= n * f(n -1); (η συνάρτηση f καλεί τον εαυτό της)Τέλος προγράμματος Pascal με χρήση αναδρομής: Var n: ακέραιος; α: longint; συνάρτηση παραγοντική (n: ακέραιος): longint; αρχίζει αν n = 1 τότε παραγοντικό:= 1 άλλο παραγοντικό:= n * παραγοντικό (n -1); Τέλος; Begin Write('n='); Readln(n); A:= παραγοντικό(n); Write('n!=',a); Readln; τέλος. Ο Λεονάρντο της Πίζας Φιμπονάτσι

Οι αριθμοί Fibonacci είναι στοιχεία μιας αριθμητικής ακολουθίας

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ..., στα οποία κάθε επόμενος αριθμός είναι ίσος με το άθροισμα των δύο προηγούμενων.

Εργασία: Εμφάνιση μιας σειράς αριθμών Fibonacci που αποτελείται από n στοιχεία. Περιγραφή μεταβλητών: n – αριθμός στοιχείων της σειράς. a, b – τιμές των δύο τελευταίων στοιχείων της σειράς. γ – μεταβλητή buffer ("εφεδρική"). i – μετρητής. Αλγόριθμος για την επίλυση του προβλήματος: 1. Πάρτε την τιμή του n. 2. Εκχωρήστε σε a και b τις τιμές 0 και 1 αντίστοιχα (αυτοί είναι οι πρώτοι αριθμοί της σειράς Fibonacci). Εμφανίστε τα στην οθόνη. 3. Ξεκινώντας από το 3ο στοιχείο στο n: α) εμφανίστε το άθροισμα των a και b, β) αποθηκεύστε την τιμή της μεταβλητής b στο c, γ) γράψτε το άθροισμα των a και b στο b, δ) αντιστοιχίστε την τιμή του γ έως α. Πρόγραμμα Pascal χρησιμοποιώντας επανάληψη: πρόγραμμα Fibonacci? var a,b,c,i,n: ακέραιος; αρχίζουν write("n = "); readln(n); a:= 0; γράψε ένα," "); b:= 1; write(b," "); για i:=3 έως n ξεκινήστε write(a+b," "); c:= b; b:= a + b; a:=c; τέλος; readln; τέλος. Πρόγραμμα Pascal με χρήση αναδρομής:Ο αναδρομικός ορισμός για τον υπολογισμό των αριθμών Fibonacci είναι ο εξής: Αυτός ο ορισμός των αριθμών Fibonacci μπορεί εύκολα να μετατραπεί σε αναδρομική συνάρτηση: συνάρτηση f(n: Integer) : longint; αρχίζω Αν ν<= 1 Then f:= n else f:= f(n– 1) + f(n - 2); end; Program chislaFibonacci; var n,i: integer; a: longint; function fib (n: integer): longint; begin If n <= 1 Then fib:= n else fib:= fib(n– 1) + fib(n - 2); End; begin write(‘n=’); readln(n); for i:=0 to n do begin A:= fib (n); write (‘ ’,a); end; readln; end. Домашнее задание Написать программу нахождения НОД двух натуральных чисел, используя алгоритм Евклида и рекурсию Даны два натуральных числа ΕΝΑΚαι σι.Αν ΕΝΑ= σι,μετά κόμβος ( ΕΝΑ,β)=α.Αν ΕΝΑ>σι,μετά κόμβος ( ΕΝΑ,β)=κόμβος ( α -β,σι).Αν ΕΝΑ< σι,μετά κόμβος ( ΕΝΑ,β)=κόμβος ( ΕΝΑ,β-α). Πρόγραμμα noddvyxchisel; var a,b: longint; συνάρτηση nod(a,b:longint): longint; ξεκινώ Αν a = b Τότε nod:= a other if a>b then nod:= nod(a-b,b) else nod:= nod(a,b-a) End; start write('a='); readln(a); write('b='); readln(b); A:= nod(a,b); write('nod=',a); readln; τέλος. Πρόβλημα με τους Πύργους του Ανόι. Σε αυτή την περίπτωση, πρέπει να τηρούνται αυστηρά οι ακόλουθοι κανόνες:

  • Μπορείτε να μετακινήσετε μόνο έναν δίσκο τη φορά.
  • δεν μπορεί να τοποθετηθεί μεγαλύτερος δίσκος μικρότερο δίσκο;
  • ο δίσκος που αφαιρέθηκε πρέπει να τοποθετηθεί σε οποιαδήποτε καρφίτσα πριν αφαιρεθεί ο άλλος δίσκος.
  • Οι εργατικοί βουδιστές μοναχοί μεταφέρουν δίσκους από κωδωνοστάσιο σε κωδωνοστάσιο μέρα και νύχτα. Ο θρύλος υποστηρίζει ότι όταν οι μοναχοί τελειώσουν το έργο τους, θα έρθει το τέλος του κόσμου. Θα μπορούσε κανείς να υπολογίσει ότι η επίλυση ενός προβλήματος με 64 δίσκους θα απαιτούσε 264–1 κινήσεις. Επομένως, όσον αφορά το τέλος του κόσμου, θα συμβεί μετά από πέντε δισεκατομμύρια αιώνες, αν σκεφτούμε ότι ένας δίσκος κινείται σε ένα δευτερόλεπτο. Ωστόσο, τόσο το πρόβλημα όσο και ο θρύλος για αυτό επινοήθηκαν το 1883 από τον μαθηματικό Edouard Lucas από το Κολλέγιο του Saint-Louis.

Μία από τις τρεις διαμαντένιες ράβδους φέρει 64 στρογγυλούς χρυσούς δίσκους. Οι δίσκοι έχουν διαφορετικές ακτίνες και βρίσκονται στην ακίδα με φθίνουσα σειρά ακτίνων από τη βάση προς την κορυφή. Είναι απαραίτητο να μεταφέρετε τους δίσκους από το πρώτο σπιράλ στο δεύτερο, χρησιμοποιώντας το τρίτο σπιράλ εάν είναι απαραίτητο.

Εργο. Δημιουργήστε ένα αναδρομικό πρόγραμμα που θα έλυνε το πρόβλημα που τέθηκε παραπάνω σχετικά με τους Πύργους του Ανόι με τον αριθμό των δίσκων ίσο με n (n = 1, 2, ...). Λύση. Ας εισαγάγουμε ονόματα για τους κώνους: α, β, γ. Αφήνω Ανόι(n,a,b,c)- την απαιτούμενη συνάρτηση που επιστρέφει την ακολουθία κινήσεων των δίσκων με έναεπί σιχρησιμοποιώντας ντοσύμφωνα με τους κανόνες που περιγράφονται παραπάνω. Όταν n=1 ξέρουμε πώς να λύσουμε το πρόβλημα. Απλά πρέπει να εκτελέσετε τη λειτουργία "μετακίνηση". έναεπί σι" Ας υποθέσουμε ότι μπορούμε να λύσουμε αυτό το πρόβλημα για n – 1 δίσκους. Μετακινήστε n–1 δίσκους από έναεπί Με. Στη συνέχεια, μετακινήστε τον ένα δίσκο που απομένει από έναεπί σικαι τέλος μετακινήστε n–1 δίσκους από ντοεπί σι. Εισαγωγή δεδομένων: αριθμός δίσκων στο μανταλάκι a; Παραγωγή: αλληλουχία; Βήμα 0: (καθορίστε τον τύπο μεταβλητής); Βήμα 1: (περιγραφή της διαδικασίας του Ανόι, η οποία εμφανίζει τη σειρά των ενεργειών). Βήμα 1.1: (μετακίνηση (n-1) δίσκων από το peg a στο peg b); Βήμα 1.2: (μετακίνηση του nth δίσκου από το a στο c); Βήμα 1.3: (μετακίνηση (n-1) δίσκου από το b στο c); (τα βήματα 1.2-1.3 εκτελούνται αναδρομικά). Βήμα 2: (κύριο πρόγραμμα); Βήμα 2.1: (εισαγάγετε τον αριθμό των δίσκων); Βήμα 2.2: (κλήση της διαδικασίας του Ανόι). Επίλυση του προβλήματος στο Πρόγραμμα Pascal bahnya; var n: ακέραιος; a,b,c: char; διαδικασία hanoi(n: ακέραιος;a,b,c: char); αρχίζει αν n>0, τότε αρχίζει hanoi(n-1,a,c,b); writeln ("Peremestit disk so sterzhnya ",a," na sterzhen" ",b); hanoi(n-1,c,b,a); τέλος; τέλος; έναρξη γραφής ("Vvedite naturalnoe chislo n"); readln ( n); a:="a"; b:="b"; c:="c"; hanoi (n,a,c,b); readln; τέλος. Εργασία για το σπίτι Γράψτε ένα πρόγραμμα για τον υπολογισμό του πτυχίου με ένα φυσικό εκθέτης Δίνεται: βάση βαθμών ΧΕκθέτης Προς την Αν k=0, τότε βαθμός(k,x)=1, Διαφορετικά βαθμός(k,x)= x· βαθμός(k-1,x) Πρόγραμμα stepen; var y: πραγματικό; n:ακέραιος; συνάρτηση βήμα(k:ακέραιος, x:real): πραγματικός; αρχίζει Αν k = 0 Τότε βήμα:= 1 άλλο βήμα:= x * βήμα(k-1,x) Τέλος; start write('vvedite osnovanie stepeni x='); readln(y); write('vvedite pokazatel stepeni k='); Readln(n); write('x v stepeni k=',step(n,y)); readln; τέλος. Ανεξάρτητη εργασία

  • Να βρείτε το άθροισμα των ψηφίων ενός αριθμού
  • Να προσδιορίσετε αν ένας δεδομένος φυσικός αριθμός είναι πρώτος
  • Βρείτε το πρώτο ψηφίο ενός αριθμού
  • Μετατροπή φυσικού αριθμού από δεκαδικό σ.σ. σε δυαδικό
  • Να βρείτε το άθροισμα των στοιχείων ενός ακέραιου πίνακα που αποτελείται από 20 στοιχεία
  • Αλλάξτε τις τιμές δύο ακεραίων
  • Παραγγείλετε τις τιμές τριών μεταβλητών α, β, γμε αύξουσα σειρά
  • Βρείτε τον αριθμό των ψηφίων φυσικός αριθμός n
  • Βρείτε τον μεγαλύτερο από τους τρεις δεδομένους αριθμούς
  • Βρείτε τον αριθμό των θετικών αριθμών μεταξύ τεσσάρων Α, Β, Γ, Δ
Απαντήσεις για ανεξάρτητη εργασία Νο. 2 Πρόγραμμα απλό; var n, m, s: ακέραιος; συνάρτηση prost(m, n:ακέραιος): boolean; αρχίζει Αν n = m Τότε prost:= true else prost:= (n mod m<>0) και προστ (m+1, n); Τέλος; αρχίζω να γράφω('n='); Readln(n); Μ:=2; Αν prost(m,n) τότε γράψε (n,'prostoechislo') Else write (n,'sostavnoe'); readln; τέλος.

μετάφραση προγράμματος?

διαδικασία dvd(n:longint);

Αν n >1 Τότε dvd (n div 2);

write(n mod 2);

Υπορουτίνες Συχνά μια εργασία απαιτεί από εσάς να επαναλάβετε μια συγκεκριμένη ακολουθία δηλώσεων σε διαφορετικά μέρη του προγράμματος. Για να περιγράψουμε αυτή τη σειρά μία φορά και να την εφαρμόσουμε πολλές φορές, οι γλώσσες προγραμματισμού χρησιμοποιούν υπορουτίνες. Μια υπορουτίνα είναι ένα ειδικά σχεδιασμένο μπλοκ ενός προγράμματος για την επακόλουθη επαναλαμβανόμενη χρήση του στο κύριο πρόγραμμα. Η χρήση υπορουτίνων σας επιτρέπει να εφαρμόσετε μια από τις πιο σύγχρονες μεθόδους προγραμματισμού - δομημένο προγραμματισμό


Οι υπορουτίνες λύνουν τρία σημαντικά προβλήματα που διευκολύνουν πολύ τον προγραμματισμό: 1. εξαλείφουν την ανάγκη επανειλημμένης επανάληψης παρόμοιων τμημάτων στο κείμενο του προγράμματος, π.χ. μειώστε το μέγεθος του προγράμματος. 2. θα βελτιώσει τη δομή του προγράμματος, καθιστώντας ευκολότερη την κατανόηση κατά την ανάλυση. 3. μείωση της πιθανότητας σφαλμάτων, αύξηση της αντίστασης σε σφάλματα προγραμματισμού και απρόβλεπτες συνέπειες κατά την τροποποίηση.


Διαδικασίες και συναρτήσεις Υπάρχουν δύο τύποι υπορουτίνων στο Pascal: διαδικασία (PROCEDURE) και συνάρτηση (FUNCTION). Οι διαδικασίες και οι συναρτήσεις στο Pascal δηλώνονται στην ενότητα δήλωσης πίσω από την ενότητα μεταβλητής. ProgramProgramName; VAR ... // ενότητα για την περιγραφή μεταβλητών του κύριου προγράμματος. διαδικασία ProcedureName; var ... έναρξη ...//Τέλος σώματος διαδικασίας; αρχή //Σώμα του κύριου προγράμματος τέλος.


Οι συναρτήσεις και οι διαδικασίες έχουν παραμέτρους (μεταβλητές που περνούν μια τιμή). Είναι δύο τύπων: 1) Επίσημα - αυτά που βρίσκονται στην περιγραφή της υπορουτίνας 2) Πραγματικά - αυτά που μεταφέρονται από το κύριο πρόγραμμα σε μια λειτουργία ή διαδικασία. Οι πραγματικές παράμετροι πρέπει να αντιστοιχούν στις τυπικές σε ποσότητα, σειρά και είδος.




Διαδικασίες Οι διαδικασίες χρησιμοποιούνται όταν μια υπορουτίνα χρειάζεται να λάβει πολλαπλά αποτελέσματα. Υπάρχουν δύο τύποι διαδικασιών στο Pascal: διαδικασίες με παραμέτρους και χωρίς παραμέτρους. Η πρόσβαση σε μια διαδικασία γίνεται με το όνομα της διαδικασίας, το οποίο μπορεί να ακολουθηθεί από πραγματικές παραμέτρους. Όταν καλείται μια διαδικασία, δημιουργείται μια αντιστοιχία ένα προς ένα μεταξύ των πραγματικών και τυπικών παραμέτρων και, στη συνέχεια, ο έλεγχος μεταφέρεται στη διαδικασία. Μετά την εκτέλεση της διαδικασίας, ο έλεγχος μεταφέρεται στον επόμενο χειριστή του καλούντος προγράμματος μετά την κλήση της διαδικασίας.


Παράδειγμα 1: Μια διαδικασία χωρίς παραμέτρους που εκτυπώνει μια συμβολοσειρά 60 αστεριών. διαδικασία pr? var i: ακέραιος ; ξεκινώ για i:=1 έως 60 γράφω (* "); γράφω; τέλος; ξεκινάω pr; τέλος.


Παράδειγμα 2. Δημιουργήστε ένα πρόγραμμα για την εναλλαγή δύο αριθμών c=5 και d=7 πρόγραμμα obmenDan; var c,d:integer; ανταλλαγή διαδικασίας (a,b:ακέραιος); var m:ακέραιος; αρχίζω m:=a; α:=β; b:=m; writeln(a,b); τέλος; start writeln("Εισαγάγετε 2 αριθμούς: "); readln(c,d); ανταλλαγή(c,d); writeln(c," ",d); τέλος. c5 d 7 a 5 b 7 1) κατά την κλήση της διαδικασίας obmen με δύο παραμέτρους 5 και 7, οι ίδιοι αριθμοί 5 και 7 τοποθετούνται στις μεταβλητές a και b, αντίστοιχα: 2) στη συνέχεια στη διαδικασία οι τιμές των κελιών μνήμης Τα α και β αναδιατάσσονται: c5 d 7 a 7 b 5 3) αλλά στις μεταβλητές c και d τα δεδομένα δεν έχουν αλλάξει, επειδή βρίσκονται σε άλλα κύτταρα μνήμης


Προκειμένου οι μεταβλητές c και d, a και b να αναφέρονται στα ίδια κελιά μνήμης (αν αλλάξουν οι τιμές των a και b, τότε θα αλλάξουν και οι τιμές των c, d), όταν περιγράφονται επίσημες παραμέτρους, είναι απαραίτητο να προστεθεί η λέξη VAR πριν από τις απαιτούμενες μεταβλητές: ανταλλαγή διαδικασίας (var a,b:integer); σ5 δ 7 α β


Παράδειγμα 3. Δίνονται 3 διαφορετικοί πίνακες ακεραίων (το μέγεθος του καθενός δεν υπερβαίνει τους 15). Σε κάθε πίνακα, βρείτε το άθροισμα των στοιχείων και τον αριθμητικό μέσο όρο. πρόγραμμα proc; var i, n, άθροισμα: ακέραιος; sr: πραγματικό; εργασία διαδικασίας (r:integer; var s:integer; var s1:real); var mas: πίνακας ακέραιου αριθμού ; j:ακέραιος; έναρξη s:=0; για j:=1 έως r αρχίζει να διαβάζει (mas[j]); s:=s+mas[j]; τέλος; s1:=s/r; τέλος;


(κύριο πρόγραμμα) ξεκινήστε για i:=1 έως 3 αρχίστε να γράφετε ("Vvedite razmer",i, "masiva: "); readln(n); work(n, sum, sr); (εργασία διαδικασίας κλήσης) writeln ("Summa elementov = ",sum); writeln("Srednearifmeticheskoe = ",sr:4:1); τέλος; τέλος.


Αποτέλεσμα του προγράμματος: Το πρόγραμμα καλεί τη διαδικασία εργασίας τρεις φορές, στην οποία οι τυπικές μεταβλητές r, s, s1 αντικαθίστανται από τις πραγματικές n, sum, sr. Η διαδικασία εισάγει στοιχεία πίνακα, υπολογίζει το άθροισμα και τον μέσο όρο. Οι μεταβλητές s και s1 επιστρέφονται στο κύριο πρόγραμμα, επομένως η λέξη υπηρεσίας var τοποθετείται πριν από την περιγραφή τους. Οι τοπικές παράμετροι mas, j ισχύουν μόνο στη διαδικασία. Καθολικά - i, n, sum, sr είναι διαθέσιμα σε όλο το πρόγραμμα.


Λειτουργίες στο Pascal Το σύνολο των ενσωματωμένων συναρτήσεων στη γλώσσα Pascal είναι αρκετά ευρύ (ABS, SQR, TRUNC, κ.λπ.). Εάν μια νέα, μη τυπική συνάρτηση περιλαμβάνεται στο πρόγραμμα, τότε πρέπει να περιγραφεί στο κείμενο του προγράμματος και μετά να είναι δυνατή η πρόσβαση σε αυτήν από το πρόγραμμα. Γίνεται πρόσβαση σε μια συνάρτηση στη δεξιά πλευρά του τελεστή εκχώρησης, υποδεικνύοντας το όνομα της συνάρτησης και τις πραγματικές παραμέτρους. Μια συνάρτηση μπορεί να έχει τις δικές της τοπικές σταθερές, τύπους, μεταβλητές, διαδικασίες και συναρτήσεις. Η περιγραφή των συναρτήσεων στο Pascal είναι παρόμοια με την περιγραφή των διαδικασιών.




Παράδειγμα 4. Γράψτε μια συνάρτηση υπορουτίνα βαθμού a x, όπου a, x είναι οποιοιδήποτε αριθμοί. Ας χρησιμοποιήσουμε τον τύπο: a x = e x ln ένα πρόγραμμα p2; var f, b, s, t, c, d: real; (καθολικές μεταβλητές) συνάρτηση stp (a, x: real) : real; var y: πραγματικό; ( τοπικές μεταβλητές) ξεκινούν y:= exp (x * ln (a)) ; stp:= y;(ανάθεση ονόματος συνάρτησης στο αποτέλεσμα υπολογισμών υπορουτίνας) end; (η περιγραφή της συνάρτησης ολοκληρώθηκε) αρχίζει d:= stp (2.4, 5); (υπολογίζοντας δυνάμεις διαφορετικών αριθμών και μεταβλητών) γράψτε (d, stp (5,3.5)); read(f, b, s, t); c:= stp (f, s)+stp (b, t); writeln(c); τέλος.


Λειτουργίες Μια υπορουτίνα είναι ένα μέρος ενός προγράμματος, σχεδιασμένο ως ξεχωριστή συντακτική δομή και παρέχεται με ένα όνομα (ένα ανεξάρτητο μπλοκ προγράμματος), για την επίλυση μεμονωμένων προβλημάτων. Περιγραφή της διαδικασίας: διαδικασία () (ενότητα για την εκτέλεση τοπικών ονομάτων) Έναρξη (ενότητα για τελεστές εκτέλεσης) Τέλος. Περιγραφή συνάρτησης: λειτουργία (): τύπος; (ενότητα για την περιγραφή τοπικών ονομάτων) Αρχή (ενότητα για εκτελέσιμες εντολές) := ; (απαιτούμενη παράμετρος) Τέλος; Κλήση διαδικασίας: (); Κλήση συνάρτησης: := (); 1. Στη δεξιά πλευρά του χειριστή ανάθεσης. 2. Στην έκφραση στην κατάσταση του τελεστή διακλάδωσης. 3. Στη διαδικασία εξόδου, ως αποτέλεσμα της συνάρτησης. Περιγραφή υπορουτίνων Διαδικασίες


Recursion Οι διαδικασίες και οι συναρτήσεις στο Pascal μπορούν να αυτοαποκαλούνται, π.χ. έχουν την ιδιότητα της αναδρομικότητας. Μια αναδρομική συνάρτηση πρέπει απαραίτητα να περιέχει μια συνθήκη για τον τερματισμό της αναδρομικότητας έτσι ώστε να μην προκαλείται βρόχος του προγράμματος. Κάθε αναδρομική κλήση δημιουργεί ένα νέο σύνολο τοπικών μεταβλητών. Δηλαδή, οι μεταβλητές που βρίσκονται εκτός της καλούμενης συνάρτησης δεν αλλάζουν.


1 συνάρτηση f (n: ακέραιος): ακέραιος; αρχίζει αν n = 1 τότε f:= 1 άλλο f:= n * f (n -1); (η συνάρτηση f καλεί τον εαυτό της" title="Παράδειγμα 5. Δημιουργήστε μια αναδρομική συνάρτηση που υπολογίζει το παραγοντικό του αριθμού n ως εξής: n! = 1 εάν n= 1 n!= (n -1)! · n αν n > 1 συνάρτηση f (n: ακέραιος): ακέραιος· αρχίστε αν n = 1 τότε f:= 1 άλλο f:= n * f (n -1); (η συνάρτηση f καλεί τον εαυτό της" class="link_thumb"> 19 !}Παράδειγμα 5. Δημιουργήστε μια αναδρομική συνάρτηση που υπολογίζει το παραγοντικό του αριθμού n ως εξής: n! = 1 αν n= 1 n!= (n -1)! · n εάν n > 1 συνάρτηση f (n: ακέραιος): ακέραιος; αρχίζει αν n = 1 τότε f:= 1 άλλο f:= n * f (n -1); (η συνάρτηση f καλεί τον εαυτό της) τέλος? 1 συνάρτηση f (n: ακέραιος): ακέραιος; αρχίζει αν n = 1 τότε f:= 1 άλλο f:= n * f (n -1); (η συνάρτηση f καλεί τον εαυτό της"> 1 συνάρτηση f (n: ακέραιος): ακέραιος; αρχίζει αν n = 1 τότε f:= 1 άλλο f:= n * f (n -1); (η συνάρτηση f καλεί τον εαυτό της) τέλος; " > 1 συνάρτηση f (n: ακέραιος): ακέραιος; αρχίζει αν n = 1 τότε f:= 1 else f:= n * f (n -1); (η συνάρτηση f καλεί τον εαυτό της" title="Παράδειγμα 5 Δημιουργήστε μια αναδρομική συνάρτηση που υπολογίζει το παραγοντικό του αριθμού n ως εξής: n = 1, εάν n= 1 n!= (n -1) n, εάν n > 1 συνάρτηση f (n: ακέραιος): ακέραιος αριθμός; αρχίζει αν n = 1 τότε f:= 1 άλλο f:= n * f (n -1)· (η συνάρτηση f καλεί τον εαυτό της"> title="Παράδειγμα 5. Δημιουργήστε μια αναδρομική συνάρτηση που υπολογίζει το παραγοντικό του αριθμού n ως εξής: n! = 1 αν n= 1 n!= (n -1)! · n εάν n > 1 συνάρτηση f (n: ακέραιος): ακέραιος; αρχίζει αν n = 1 τότε f:= 1 άλλο f:= n * f (n -1); (η συνάρτηση f αυτοαποκαλείται"> !}



Διαφάνεια 1

Διαφάνεια 3

Υπορουτίνες: καθολικές και τοπικές μεταβλητές Όλες οι υπορουτίνες πρέπει να περιγράφονται στην ενότητα περιγραφής. Κάθε υπορουτίνα πρέπει να έχει ένα όνομα. Οι πληροφορίες μεταξύ του κύριου προγράμματος και των υπορουτίνων μεταδίδονται από καθολικές παραμέτρους (μεταβλητές) που λειτουργούν σε οποιοδήποτε μέρος του προγράμματος και έχουν ένα όνομα που περιγράφεται στο κύριο πρόγραμμα. Οι τοπικές παράμετροι (μεταβλητές) μπορούν να χρησιμοποιηθούν μέσα σε μια υπορουτίνα - τα ονόματα και οι τιμές τους έχουν σημασία μόνο εντός των ορίων μιας δεδομένης υπορουτίνας και δεν είναι διαθέσιμες στο πρόγραμμα κλήσης

Διαφάνεια 4

Τυπικές και πραγματικές παράμετροι Στην περιγραφή των υπορουτινών, οι παράμετροι υποδεικνύονται μόνο με ονόματα, επομένως ονομάζονται τυπικές. Δεν έχουν νόημα μέχρι να κληθεί η υπορουτίνα. Διατηρούν χώρο μόνο για τις πραγματικές παραμέτρους, καθορίζοντας τον αριθμό και τον τύπο δεδομένων τους. Τύποι πραγματικών παραμέτρων: Οι παράμετροι τιμών υποδεικνύουν ποια τιμή πρέπει να εκχωρηθεί σε μια συγκεκριμένη παράμετρο υπορουτίνας. Αφού τελειώσει η υπορουτίνα, παίρνουν τις προηγούμενες τιμές τους, ακόμα κι αν είχαν αλλάξει στην υπορουτίνα. Οι μεταβλητές παράμετροι σε μια υπορουτίνα αντικαθιστούν τις τυπικές, μπορούν να αλλάξουν την τιμή τους κατά την εκτέλεση της υπορουτίνας και να αποθηκεύσουν τις αλλαγές κατά την έξοδο από την υπορουτίνα (προηγούνται οι μεταβλητές παράμετροι λέξη-κλειδί Var).

Διαφάνεια 5

Διαφάνεια 6

Περιγραφή της διαδικασίας Πρόγραμμα Pr1; Const...Type...Var...Procedure(); Περιγραφικό μέρος Έναρξη Διαδικασία σώμα Τέλος; Αρχίζουν...(); ... τέλος. Όταν καλείται μια διαδικασία, οι τυπικές παράμετροι αντικαθίστανται με πραγματικές.

Διαφάνεια 7

Η διαδικασία για τον υπολογισμό του αθροίσματος δύο αριθμών πρόγραμμα pr1; Usescrt; Var a,b,s:real; σύνοψη διαδικασίας(x,y:real;var z:real); έναρξη z:=x+y; τέλος; έναρξη clrscr? writeln("enter a,b"); readln(a,b); summa(a,b,s); writeln(" άθροισμα αριθμών ",a:3:1," and ",b:3:1," = ",s:3:1); readln; τέλος. x,y,z – τυπικές παράμετροι, τοπικές μεταβλητές a,b,s– καθολικές μεταβλητές a,b,s – πραγματικές παράμετροι x y z a b s Παράμετροι τιμής Μεταβλητή παραμέτρου

Διαφάνεια 8

Διαφάνεια 9

Διαφάνεια 10

Υπολογίστε την τιμή της παράστασης a:=(3n!+2m!)/(m+n)! Για να βρείτε το παραγοντικό, ποιο είδος μεταβλητών είναι κατάλληλο να χρησιμοποιήσετε; πρόγραμμα pr2; Usescrt; Var m,n,x,y,z:ακέραιος; α:πραγματικό; Γεγονός διαδικασίας(d:integer;var q:ακέραιος); var i:ακέραιος; έναρξη q:=1; για i:=1 έως d κάνει q:=q*i; τέλος; έναρξη clrscr? writeln("εισαγωγή τιμών n, m"); readln(n,m); γεγονός(n,x); γεγονός(m,y); γεγονός(m+n,z); a:=(3*x+2*y)/z; writeln("η τιμή της έκφρασης με m= ",m:4," και n= ",n:4,"ισούται με",a:8:3); readln; τέλος. Ν!=1·2·3·…· Ν

Διαφάνεια 11

Έξοδος εισόδου στοιχείων ενός μονοδιάστατου πίνακα Η συνάρτηση Random(X) δημιουργεί έναν τυχαίο αριθμό από το 0 έως το X ακέραιου ή πραγματικού τύπου (πριν καλέσετε τη συνάρτηση, πρέπει να αρχικοποιηθεί χρησιμοποιώντας τη διαδικασία Randomize). Εάν η παράμετρος X δεν έχει καθοριστεί, το αποτέλεσμα θα είναι τύπου Real στην περιοχή από 0,0 έως 1,0. Για να αποκτήσετε έναν πίνακα τυχαίων ακεραίων αριθμών από το εύρος random(B-A+1)+A Εργασία: Διατυπώστε την είσοδο στοιχείων ενός μονοδιάστατου πίνακα χρησιμοποιώντας μια γεννήτρια τυχαίων αριθμών (εύρος τιμών από -10 έως 20) και το παραγωγή στοιχείων ως διαδικασία. Για A=-10 B=20 τυχαία(20-(-10)+1)+(-10)

Διαφάνεια 12

Διαφάνεια 13

Διαφάνεια 14

Περιγραφή της συνάρτησης Οι συναρτήσεις έχουν σχεδιαστεί για να υπολογίζουν μόνο μία τιμή, 1. Επομένως, η πρώτη της διαφορά είναι ότι η διαδικασία μπορεί να έχει νέες τιμές για πολλές παραμέτρους, αλλά η συνάρτηση έχει μόνο μία (θα είναι το αποτέλεσμα). 2. Η δεύτερη διαφορά είναι στον τίτλο της συνάρτησης. Αποτελείται από τη λέξη FUNCTION, ακολουθούμενη από το όνομα της συνάρτησης, στη συνέχεια μια λίστα τυπικών παραμέτρων σε παρένθεση, ακολουθούμενη από τον τύπο του αποτελέσματος της συνάρτησης, διαχωρισμένη με άνω και κάτω τελεία. 3. Το σώμα της λειτουργίας πρέπει να περιέχει τουλάχιστον έναν τελεστή εκχώρησης, όπου το όνομα της συνάρτησης βρίσκεται στην αριστερή πλευρά και η τιμή της στη δεξιά πλευρά. Συνάρτηση (): Περιγραφική αρχή Συνάρτηση σώμα:=; Τέλος;

Διαφάνεια 15

Υπολογίστε την τιμή της παράστασης a:=(3n!+2m!)/(m+n)! πρόγραμμα fn2? Usescrt; Var m,n:ακέραιος; α:πραγματικό; συνάρτηση fact(d:integer) :longint; var i:ακέραιος; q:longint; έναρξη q:=1; για i:=1 έως d κάνει q:=q*i; γεγονός:=q; τέλος; έναρξη clrscr? writeln("εισαγωγή τιμών n, m"); readln(n,m); a:=(3*γεγονός(n)+2*γεγονός(m))/γεγονός(m+n); writeln("η τιμή της έκφρασης με m= ",m:4," και n= ",n:4,"ισούται με",a:8:3); readln; τέλος.

Διαφάνεια 16

Δημιουργήστε ένα πρόγραμμα που θα βρίσκει το ab, δηλαδή τη bth δύναμη του αριθμού A, όπου τα A και B είναι ακέραιοι και B>0, που εισάγονται από το πληκτρολόγιο. Συνθέστε ένα πρόγραμμα αντικαθιστώντας τη συνάρτηση με το πρόγραμμα διαδικασίας pr2. Usescrt; Var a,b:ακέραιος; c:longint; Συνάρτηση stepen(x,y:ακέραιος):longint; var i:ακέραιος; s:longint; έναρξη s:=1; για i:=1 έως y κάντε s:=s*x; step:=s; τέλος; έναρξη clrscr? writeln("εισαγωγή τιμών a, b"); readln(a,b); Γ:=βήμα(α,β); writeln("s=",s); readln; τέλος.

Διαφάνεια 17

Διαφάνεια 18

Μηχανισμός μεταβίβασης παραμέτρων σε συναρτήσεις και διαδικασίες Τι θα εκτυπωθεί από τη διαδικασία και τι από το πρόγραμμα; Καθολικές μεταβλητές Τοπικές μεταβλητές a b 3 3 -3 Διεύθυνση c a b c 48 Διεύθυνση c A:=b+3 B:=3*a C:=a+b Κατάσταση C 24 5 8 Απάντηση

Διαφάνεια 19

8η τάξη. Προγραμματισμός σε ABC Pascal

Καθηγητής Πληροφορικής του NIS του Uralsk Φυσικής και Μαθηματικών Zelenov Boris Aleksandrovich


  • Οι μαθητές χρησιμοποιούν διαδικασίες και συναρτήσεις για την επίλυση προβλημάτων
  • Οι μαθητές μαθαίνουν να λύνουν μεγάλα προβλήματα χωρίζοντάς τα σε μικρότερα

  • Αναπτύξτε μια έννοια διαδικασιών και συναρτήσεων σε μια γλώσσα προγραμματισμού.

  • Οι μαθητές γνωρίζουν τις έννοιες «διαδικασίες» και «λειτουργίες», καθορίζουν επίσημες και πραγματικές παραμέτρους

Αναμενόμενα αποτελέσματα - Περιγραφείς:

1. Γνωρίζει τον ορισμό της «διαδικασίας»

2. Γνωρίζει τον ορισμό της «λειτουργίας»

3. Καθορίζει πραγματικές και τυπικές παραμέτρους

4.Διαφοροποιεί μεταξύ παραμέτρων τιμής και μεταβλητής

5. Βρίσκει μια κλήση σε μια διαδικασία ή λειτουργία σε κώδικα προγράμματος



Το καθιερωμένο σχέδιο της Ελβίρας

1. Αφαιρέστε τα χαρτιά

2. Ποτίστε τα λουλούδια

3. Πλύνετε τα γραφεία

4. Σκουπίστε το γυαλί

Τέλος του αλγορίθμου

Πώς να βελτιώσετε την οργάνωση αυτής της διαδικασίας;




Θέμα μαθήματος

Υπορουτίνες:


Ishki bagdarlama

Υπορουτίνα

Διαδικασία

Διαδικασία

Παραμετρητής

Χρήσιμες φράσεις:

Για να περάσουν μεταβλητές τιμές σε μια διαδικασία (συνάρτηση), χρησιμοποιούνται πραγματικές παράμετροι...

Για να περιγράψετε τη διαδικασία, θα πρέπει πρώτα... και μετά...


Η έννοια της υπορουτίνας

Ορισμός

Υπορουτίνα- Αυτό είναι ένα ξεχωριστό λειτουργικά ανεξάρτητο μέρος του προγράμματος.

Υπορουτίνες

Διαδικασίες


  • εξαλείφει την ανάγκη επανειλημμένης επανάληψης παρόμοιων θραυσμάτων στο κείμενο του προγράμματος.
  • βελτίωση της δομής του προγράμματος, καθιστώντας το πιο κατανοητό·
  • αύξηση της αντίστασης σε σφάλματα προγραμματισμού και απρόβλεπτες συνέπειες κατά τις τροποποιήσεις του προγράμματος.

  • Σχεδιάστε ένα φράχτη χρησιμοποιώντας μια γλώσσα προγραμματισμού

Σε αυτήν την εργασία, μπορείτε να δημιουργήσετε μια διαδικασία που θα εκτελέσει τον αλγόριθμο για τη σχεδίαση ενός θραύσματος (φράχτη ανάκλησης) και στη συνέχεια να ανατρέχετε συνεχώς σε αυτήν τη διαδικασία, αλλάζοντας την αρχική θέση του στυλό


  • Περιγράψτε πώς να σχεδιάσετε αποτελεσματικά ένα χριστουγεννιάτικο δέντρο σε ένα περιβάλλον προγραμματισμού

  • Είναι ανεξάρτητα τμήματα προγράμματος, σχεδιασμένα με ιδιαίτερο τρόπο και έχουν το δικό τους όνομα.

Αλληλεπίδραση μεταξύ του κύριου προγράμματος και της υπορουτίνας



Μπλοκ διάγραμμα

  • Μπλοκ κλήσεων υπορουτίνας (διαδικασίας ή λειτουργίας).

Όνομα υπορουτίνας (διαδικασίας ή λειτουργίας).


Μπλοκ διάγραμμα


Η περιγραφή της διαδικασίας έχει ως εξής:

διαδικασίαόνομα(κατάλογος επίσημων παραμέτρων). ενότητα περιγραφών αρχίζουνχειριστές τέλος ;


Η περιγραφή της συνάρτησης μοιάζει με:

λειτουργίαόνομα(λίστα επίσημων παραμέτρων): τύπος επιστροφής;

ενότητα περιγραφών αρχίζουνχειριστές τέλος ;


Τοποθεσία στο πρόγραμμα

Πρόγραμμα ...;

//Ενότητα περιγραφής Χρήσεις, Const, Var, ...

διαδικασία ΕΝΑ ;

αρχίζουν ....... τέλος ;

διαδικασία σι ;

αρχίζουν ........ τέλος ;

Λειτουργία Γ ;

αρχίζουν ........ τέλος ;

//Κύριο πρόγραμμα

αρχίζουν ........ τέλος .


  • Η διαφορά μεταξύ μιας συνάρτησης και μιας διαδικασίας είναι ότι το αποτέλεσμα της εκτέλεσης των τελεστών που σχηματίζουν το σώμα της συνάρτησης είναι πάντα μια ενιαία τιμή, επομένως η κλήση μιας συνάρτησης μπορεί να χρησιμοποιηθεί σε κατάλληλες εκφράσεις μαζί με μεταβλητές και σταθερές.

Διαδικασίες

Λειτουργίες

Μπορεί να έχει πολλαπλά αποτελέσματα ή να εκτελέσει κάποια ενέργεια

Έχει μόνο ένα αποτέλεσμα, ο τύπος του οποίου καθορίζεται ξεχωριστά κατά τη δήλωση της συνάρτησης.

Τα αποτελέσματα μπορεί να είναι τιμές οποιουδήποτε τύπου - πίνακες, συμβολοσειρές, αριθμοί κ.λπ.

Το αποτέλεσμα μπορεί να είναι μόνο μια τιμή τύπου real, ακέραιος ή char.

Η εντολή κλήσης διαδικασίας είναι μια ξεχωριστή εντολή που μπορεί να χρησιμοποιηθεί ανεξάρτητα

Μια κλήση συνάρτησης μπορεί να χρησιμοποιηθεί μόνο ως στοιχείο μιας έκφρασης του κατάλληλου τύπου.

Το σώμα λειτουργίας πρέπει να περιέχει τουλάχιστον έναν τελεστή εκχώρησης με το όνομα της λειτουργίας στην αριστερή πλευρά.


b τότε max:=a other max:=b; MaxNumber:= max; end;" width="640"

Διαδικασία ή λειτουργία;

MaxNumber(a,b: ακέραιος): ακέραιος;

var max: ακέραιος;

MaxNumber:= max;


b τότε max:=a other max:=b; end;" width="640"

Διαδικασία ή λειτουργία;

MaxNumber(a,b: ακέραιος; var max: ακέραιος);

αν ab τότε max:=a other max:=b;


Διαδικασία ή λειτουργία;

ChangeColor(C1, C2: Word);

TextBackGround(C2)


Διαδικασία ή λειτουργία;

Add(X, Y: Integer): Ακέραιος;


Πραγματικός

  • Υποδεικνύεται στην ενότητα του κύριου προγράμματος

Επίσημος

  • Καθορίζεται στην υπορουτίνα
  • Καθορίζεται στην υπορουτίνα

Η διαδικασία καλείται από έναν χειριστή που έχει την ακόλουθη μορφή:

όνομα διαδικασίας (κατάλογος πραγματικών παραμέτρων).

  • Λίστα πραγματικών παραμέτρων- αυτή είναι μια λίστα τους χωρισμένη με κόμμα.

  • Στο πρότυπο γλώσσας Pascal, οι παράμετροι μπορούν να μεταβιβαστούν με δύο τρόπους - με τιμή και με αναφορά. Οι παράμετροι που μεταβιβάζονται με τιμή καλούνται παραμέτρους-τιμές, μεταδόθηκε με αναφορά - παραμέτρους-μεταβλητές. Οι τελευταίες διαφέρουν στο ότι στην κεφαλίδα της διαδικασίας (συνάρτησης) προηγούνται της λέξης υπηρεσίας var.

Διαβίβαση παραμέτρων. Τυπικές παράμετροι

Μεταβλητές

Αξίες

Παράμετροι κατά τιμή

Τυπικές παράμετροι

Μεταβλητές


Τυπικές παράμετροι

Παράμετροι κατά τιμή

  • Στην πρώτη μέθοδο (μεταβίβαση με τιμή), οι τιμές των πραγματικών παραμέτρων αντιγράφονται στις αντίστοιχες επίσημες παραμέτρους.

Διαδικασία

Όνομα διαδικασίας (α, β: ακέραιος αριθμός);

Κύριο πρόγραμμα

Όταν αλλάζετε αυτές τις τιμές κατά την εκτέλεση μιας διαδικασίας (συνάρτησης), τα αρχικά δεδομένα (πραγματικές παράμετροι) δεν μπορούν να αλλάξουν


Var c, d: ακέραιος;

  • Κατά τη διέλευση μέσω αναφοράς, όλες οι αλλαγές που συμβαίνουν στο σώμα μιας διαδικασίας (συνάρτησης) με τυπικές παραμέτρους οδηγούν σε άμεσες παρόμοιες αλλαγές στις αντίστοιχες πραγματικές παραμέτρους.

Διαδικασία

Όνομα διαδικασίας (a, b: ακέραιος αριθμός, Var c: πραγματικός);

Κύριο πρόγραμμα

Πραγματοποιούνται αλλαγές στις μεταβλητές του μπλοκ κλήσης, επομένως οι παράμετροι εξόδου μεταβιβάζονται με αναφορά. Όταν καλούνται, οι αντίστοιχες πραγματικές τους παράμετροι μπορούν να είναι μόνο μεταβλητές.


Γράφετε:

1. Πραγματικές παράμετροι___________

Διαδικασία Kvad(R: πραγματικό; var S: πραγματικό);

2. Τυπικές παράμετροι ___________

3. Τυπικές παράμετροι-τιμές __________

5.Όνομα διαδικασίας ___________

6. Πρόσβαση σε διαδικασία από το πρόγραμμα ____________________


Διαδραστική εργασία

http://www.bzfar.net/load/podprogrammy_procedury_i_funkcii_parametry/23-1-0-498


Η Ελβίρα είναι η αρχηγός της τάξης. Θα πρέπει να κάνει ένα σχέδιο για τον γενικό καθαρισμό στην τάξη: αφαιρέστε χαρτιά, λουλούδια νερού, πλύσιμο θρανίων, σκουπίστε το γυαλί. Πώς μπορεί να οργανώσει καλύτερα τη δουλειά της; Βοήθησε την Ελβίρα.


Το Προηγμένο Σχέδιο της Ελβίρας

Υπορουτίνες:

Άρσεν - αφήνει τα χαρτιά

Mila - πότισμα λουλουδιών

Vitaly – πλένει γραφεία

Indira - σκούπισμα του γυαλιού

1. Εκτελέστε τον Άρσεν

2. Τρέξε τη Μίλα

3. Εκτελέστε τον Βιτάλι

4. Τρέξτε την Indira

Τέλος του αλγορίθμου


  • Ποιες νέες δομές γλωσσών προγραμματισμού συναντήσαμε σήμερα;
  • Ονομάστε τις παραμέτρους που μελετήθηκαν
  • Πώς μεταβιβάζονται οι παράμετροι σε μια διαδικασία;

  • Περίληψη μαθήματος
  • Βρείτε ορισμούς: "Τοπικές μεταβλητές" και "Καθολικές μεταβλητές"
  • Συνθέστε δύο εργασίες στις οποίες μπορείτε να χρησιμοποιήσετε διαδικασίες ή συναρτήσεις.

  • Πώς θα προσδιορίζατε το θέμα του μαθήματος; (βγάλτε το δικό σας όνομα)
  • Τι πιστεύετε ότι πρέπει να μάθετε στο επόμενο μάθημα;

Ας συναντηθούμε

επόμενο μάθημα!

Ο σκοπός του μαθήματος

εκπαιδευτικός

  • να σχηματίσουν μεταξύ των μαθητών ένα ενιαίο σύστημα εννοιώνσχετίζονται με τις έννοιες της διαδικασίας και της λειτουργίας·
  • διδάξτε πώς να χρησιμοποιείτε υπορουτίνες για την επίλυση προβλημάτων στο Pascal και επίσης διδάξτε να κατανοείτε ποιος τύπος υπορουτίνας χρειάζεται κατά την επίλυση ενός συγκεκριμένου προβλήματος.
  • Δείξτε βασικές τεχνικές για τη χρήση υπορουτίνων.

εκπαιδευτικός

  • καλλιεργήστε ακρίβεια, προσοχή, οργάνωση.
  • κουλτούρα των δεξιοτήτων υπολογιστών?

ανάπτυξη

  • ανάπτυξη λογικής σκέψης, αλγοριθμικής κουλτούρας των μαθητών.
  • να αναπτύξουν γνώσεις και δεξιότητες για τη σύνθεση και τον εντοπισμό σφαλμάτων υπορουτίνων στο Pascal.

Οι μαθητές πρέπει:

  • γνωρίζουν τους κανόνες για τη σύνταξη διαδικασιών χωρίς παραμέτρους και με παραμέτρους.
  • γνωρίζουν τους κανόνες για τη γραφή συναρτήσεων.
  • να είναι σε θέση να εφαρμόζει διαδικασίες και λειτουργίες για την επίλυση απλών προβλημάτων.

Κατά τη διάρκεια των μαθημάτων

Ι. Οργ. στιγμή

II. Εισαγωγή. Συνάφεια

Δώστε την εργασία σε κομμάτια χαρτιού ( Παράρτημα 1 ). Βρείτε επαναλήψεις.

Μερικές φορές σε διαφορετικά σημεία του προγράμματος πρέπει να εκτελέσετε σχεδόν τις ίδιες ακολουθίες ενεργειών με διαφορετικά αρχικά δεδομένα. Τέτοιες αλληλουχίες ενεργειών μπορούν να επισημοποιηθούν με τη μορφή των λεγόμενων υπορουτίνες (από τα Αγγλικά, υπορουτίνα) –ομαδοποιήστε τους τελεστές σε ένα μπλοκ στο οποίο μπορείτε να έχετε πρόσβαση ονομαστικά και επανειλημμένα.

Οι υπορουτίνες συντομεύουν το κείμενο ενός προγράμματος, μειώνουν σημαντικά τον χρόνο εκτέλεσής του και διευκολύνουν τους προγραμματιστές που μπορούν να δημιουργήσουν προγράμματα σπονδυλωτά, δηλαδή συναρμολογώντας ένα σύνθετο πρόγραμμα από ολοκληρωμένα κομμάτια απλούστερων στοιχείων. Αυτό επιτρέπει σε μια ομάδα προγραμματιστών να δημιουργήσει μεγάλα προγράμματα και σε μια ομάδα μαθητών να αναπτύξει και να εφαρμόσει οποιαδήποτε παγκόσμια έργα

Οι υπορουτίνες χωρίζονται σε διαδικασίες και λειτουργίες.

Οι ενσωματωμένες (τυπικές) διαδικασίες και λειτουργίες είναι μέροςγλώσσα και μπορεί να ονομαστεί χωρίς προηγούμενη περιγραφή.Για παράδειγμα , Τα abs, sqrt, ln, sin... είναι συναρτήσεις (επιστρέφει αποτέλεσμα), readln, write... είναι διαδικασίες (μην επιστρέφει αποτέλεσμα). Η παρουσία τους διευκολύνει πολύ την ανάπτυξη προγραμμάτων εφαρμογής. Ωστόσο, στις περισσότερες περιπτώσεις ορισμένες ειδικόςγια ένα δεδομένο πρόγραμμα, οι ενέργειες δεν βρίσκουν άμεσα ανάλογα στις βιβλιοθήκες Turbo Pascal και, στη συνέχεια, ο προγραμματιστής πρέπει να αναπτύξει τη δική του μη τυποποιημένοδιαδικασίες και λειτουργίες.

III. Επεξήγηση νέου υλικού

Οι διαδικασίες χρήστη είναι γραμμένες εμείς οι ίδιοιπρογραμματιστής σύμφωνα με τη σύνταξη της γλώσσας σε ενότητα περιγραφής υπορουτίνας.

Η δομή της διαδικασίας ακολουθεί τη δομή του προγράμματος· είναι ένα "πρόγραμμα σε μικρογραφία" - αντιπροσωπεύεται επίσης από μια κεφαλίδα και ένα σώμα.

Η κεφαλίδα αποτελείται από τη διαδικασία δεσμευμένης λέξης, το αναγνωριστικό (όνομα)διαδικασίες.

VAR ... // ενότητα για την περιγραφή μεταβλητών του κύριου προγράμματος

διαδικασία ProcedureName;

//σώμα του κύριου προγράμματος

Η κλήση διαδικασίας για επακόλουθη εκτέλεση καταγράφεται στο σώμα του κύριου προγράμματος.

Παράδειγμα 1. Πρόγραμμα υπολογισμού εμβαδού και περιμέτρου.

Πλεονεκτήματα των υπορουτίνων:

  • Προγράμματα γραμμένα με υπορουτίνες ευκολότερος έλεγχος και εντοπισμός σφαλμάτων,έχουν μια πιο ξεκάθαρη λογική δομή.
  • Η ανεξάρτητη φύση των υπορουτίνων επιτρέπει την ανάθεση της δημιουργίας τους σε διάφορους προγραμματιστές. Με αυτόν τον τρόπο διαιρείται το έργο προγραμματισμού και επιταχύνεται η ολοκλήρωσή του.
  • Η χρήση υπορουτίνων εξοικονομεί μνήμη. Η μνήμη για την αποθήκευση μεταβλητών που χρησιμοποιείται σε μια υπορουτίνα εκχωρείται μόνο για τη διάρκεια της λειτουργίας της και απελευθερώνεται μόλις τελειώσει η εκτέλεσή της.

Παράδειγμα 2. Ο χρήστης εισάγει δύο πλευρές τριών ορθογωνίων. Εξάγετε τις περιοχές τους.

Μπορείτε να λύσετε το πρόβλημα ως εξής:

για i:=1 έως 3 κάνω

writeln('Εισαγάγετε a και b:');

writeln('Area=',a*b);

Θεωρείται καλό στυλ προγραμματισμού η χρήση διαδικασιών. Απαιτείται μια διαδικασία που θα υπολογίζει το εμβαδόν ενός ορθογωνίου. Δείτε πώς θα μοιάζει σχηματικά το κύριο πρόγραμμα:

υπολογισμός

υπολογισμός

υπολογισμός

Η διαδικασία κειμένου υπάρχει ήδη (βλ. παράδειγμα 1). Ας δημιουργήσουμε μια δεύτερη διαδικασία που υπολογίζει το εμβαδόν. Αλλά για να υπολογίσετε το S, πρέπει να γνωρίζετε 2 πλευρές, επομένως η διαδικασία πρέπει να δείξει ποιες πλευρές πρέπει να πολλαπλασιαστεί.

διαδικασία pl (c,d: ακέραιος);

writeln(‘εμβαδόν ορθογωνίου με πλευρές’,c, ‘‘ ,d, ‘=’,S);

Μια παράμετρος είναι μια μεταβλητή στην οποία εκχωρείται μια τιμή. Υπάρχει τυπικές παραμέτρους , που ορίζεται στην κεφαλίδα υπορουτίνας και πραγματικές παραμέτρους – εκφράσεις που καθορίζουν συγκεκριμένες τιμές κατά την πρόσβαση σε μια υπορουτίνα.

Η διαδικασία θα εκτελεστεί εάν την καλέσετε ονομαστικά και καθορίσετε τις πραγματικές παραμέτρους , χωρίζονται με κόμμα και περικλείονται σε παρένθεση:

Οι πραγματικές παράμετροι πρέπει να ταιριάζουν με τις τυπικές σε είδος και ποσότητα.

Λοιπόν, το κύριο πρόγραμμα:

για i:=1 έως 3 κάνω

Σχόλιο.Κατά την επίλυση αυτού του προβλήματος, είναι απαραίτητο να ελέγξετε τους αριθμούς που εισάγει ο χρήστης (δεν πρέπει να είναι αρνητικοί, διαφορετικά το πρόγραμμα θα διακοπεί).

Ας δημιουργήσουμε μια διαδικασία επαλήθευσης:

σφάλμα διαδικασίας (f,g:ακέραιος);

αν (στ<0) or (g<0) then begin

writeln('οι πλευρές ενός ορθογωνίου δεν μπορούν να είναι αρνητικές');

παύση; // διακοπή προγράμματος

Τελικό πρόγραμμα - Παράρτημα 4

Άρα η μορφή της διαδικασίας:

Διαδικασία<имя>(επίσημες παράμετροι).

<операторы>;

Παράδειγμα 3. Να γράψετε πρόγραμμα για την εναλλαγή των θέσεων δύο αριθμών c=5 και d=7.

πρόγραμμα ανταλλαγήDan?

var c,d:integer;

ανταλλαγή διαδικασίας (a,b:ακέραιος);

m:=a; α:=β; b:=m;

writeln("Εισαγάγετε 2 αριθμούς: ");

writeln(c," ",d);

Μετά την εκκίνηση του προγράμματος, μπορείτε να δείτε ότι οι τυπικές παράμετροι (στη διαδικασία) έχουν αλλάξει θέσεις, αλλά οι πραγματικές (που χρησιμοποιούνται στο κύριο πρόγραμμα) δεν έχουν αλλάξει. Ας δούμε το σχήμα που δείχνει μέρος της μνήμης RAM:

1) όταν καλείτε τη διαδικασία obmen με δύο παραμέτρους 5 και 7, οι αριθμοί 5 και 7 τοποθετούνται επίσης στις μεταβλητές a και b, αντίστοιχα:

3) αλλά στις μεταβλητές γ και δ τα δεδομένα δεν έχουν αλλάξει, γιατί βρίσκονται σε άλλα κύτταρα μνήμης.

Για τις μεταβλητές c και d, a και b αναφέρθηκε στα ίδια κύτταρα μνήμης (εάν αλλάξουν οι τιμές των a και b, τότε θα αλλάξουν και οι τιμές των c, d) κατά την περιγραφή των τυπικών παραμέτρων, είναι απαραίτητο να προσθέσετε τη λέξη VAR πριν από τις απαιτούμενες μεταβλητές:

ανταλλαγή διαδικασιών (var a,b:ακέραιος);

Αλλάξτε το πρόγραμμα obmenDan:

Σφάλμα λόγω var. Οι αριθμοί είναι σταθερές που δεν μπορούν να αλλάξουν σε μια διαδικασία.

Παράδειγμα 4. Βρείτε την περιοχή ενός κύκλου χρησιμοποιώντας μια διαδικασία που υπολογίζει μόνο αλλά δεν εμφανίζει το αποτέλεσμα στην οθόνη.

κύκλος διαδικασίας(r:real);

Η διαδικασία θα πρέπει να επιστρέψει το αποτέλεσμα:

κύκλος διαδικασίας (r:real; var S:real);

readln(a, e);

Σχόλιο:Η μεταβλητή στη διαδικασία S χρησιμοποιείται για την επιστροφή των αποτελεσμάτων της διαδικασίας στο κύριο πρόγραμμα. Όταν αλλάζει, αλλάζει και η πραγματική παράμετρος στο καλούν πρόγραμμα, π.χ. μεταβλητή ε.

Πιο συχνά, για αυτό στο Pascal, αντί για διαδικασίες, χρησιμοποιούνται συναρτήσεις (υπορουτίνες που επιστρέφουν κάτι).

Η λειτουργία είναι παρόμοια με τη διαδικασία, αλλά υπάρχουν δύο διαφορές.

  • Η συνάρτηση μεταδίδει το αποτέλεσμα της εργασίας της στο πρόγραμμα - μια ενιαία τιμή, φορέας της οποίας είναι το όνομα της συνάρτησής της.
  • Το όνομα της συνάρτησης μπορεί να εμφανίζεται σε μια έκφραση ως τελεστής. Η συνάρτηση επιστρέφει το αποτέλεσμα στο σημείο της κλήσης της.

Για παράδειγμα, sqr(x) – θα τετραγωνίσει την τιμή x και θα επιστρέψει την υπολογισμένη τιμή του τετραγώνου του αριθμού x στο σημείο κλήσης: y:=sqr(x);

Μια συνάρτηση που ορίζεται από το χρήστη αποτελείται από μια κεφαλίδα συνάρτησης και ένα σώμα συνάρτησης. Το σώμα της συνάρτησης είναι παρόμοιο στη δομή με το πρόγραμμα. Περιγραφή ετικετών, σταθερών, τύπων κ.λπ. ισχύει μόνο στο πλαίσιο αυτής της διαδικασίας.

Λειτουργία<имя>(επίσημες παράμετροι):<тип результата>;

<операторы>;

Η ενότητα δήλωσης πρέπει να περιέχει τουλάχιστον μία δήλωση που εκχωρεί μια τιμή στο όνομα της συνάρτησης. Το αποτέλεσμα της τελευταίας ανάθεσης επιστρέφεται στο σημείο κλήσης.

Παράδειγμα 5. Ας επεξεργαστούμε ξανά το πρόβλημα σχετικά με το εμβαδόν ενός κύκλου.

κύκλος συνάρτησης (r:real): πραγματικός;

a:=κύκλος(5); (ΠΡΕΠΕΙ να ανατεθεί)

Παράδειγμα 6. Βρείτε 1!+2!+…+n!

Χρησιμοποιούμε τη συνάρτηση εύρεσης του παραγοντικού, γιατί το τροφοδοτούμε ως είσοδο και παίρνουμε το αποτέλεσμα.

συνάρτηση γεγονός (α:ακέραιος): ακέραιος;

για i:=1 να κάνω

Στη γραμμή γεγονός:=γεγονός*Ι;

ο μεταγλωττιστής θα βρει ένα σφάλμα, επειδή το γεγονός πρέπει να καλείται με παραμέτρους. Επομένως, συνήθως εισάγεται μια πρόσθετη μεταβλητή στην οποία τοποθετείται το αποτέλεσμα. Και στη συνέχεια αυτό το αποτέλεσμα εκχωρείται στη μεταβλητή δεδομένων:

πρόγραμμα παραγοντικό?

var sum,n,j: ακέραιος;

συνάρτηση γεγονός (α: ακέραιος): ακέραιος;

var i,d: ακέραιος;

για i:=1 να κάνω

για j:=1 έως n κάνω

sum:=sum+fact(j);

IV. Περίληψη μαθήματος

Αυτή τη στιγμή, η διαδικασία προγραμματισμού μετατρέπεται σε βιομηχανική παραγωγή λογισμικούμε βάση τεχνολογίες προγραμματισμού. Οι περισσότεροι ειδικοί είναι της άποψης ότι μέθοδος σχεδίασης προγράμματος από πάνω προς τα κάτωπιο κατάλληλο για την επίλυση σύνθετων προβλημάτων. Αρχικά, η εργασία ορίζεται με γενικούς όρους, στη συνέχεια η δομή της αποσαφηνίζεται σταδιακά. Στο επόμενο βήμα, κάθε δευτερεύουσα εργασία, με τη σειρά της, χωρίζεται σε μια σειρά από άλλες. Η λύση σε ένα ξεχωριστό τμήμα ενός σύνθετου προβλήματος είναι ένα ανεξάρτητο μπλοκ προγράμματος - μια υπορουτίνα.

V. Εργασία για το σπίτι

Επίλυση προβλημάτων (γραπτά):

  1. Δημιουργήστε μια διαδικασία που αντικαθιστά όλα τα γράμματα a στην εισαγόμενη συμβολοσειρά με *.
  2. Δίνονται δύο προτάσεις. Βρείτε τον συνολικό αριθμό των γραμμάτων «n» σε αυτά. (Ορίστε μια συνάρτηση για τον υπολογισμό του αριθμού των γραμμάτων "n" σε μια πρόταση.)