Λογισμικό ανοιχτού κώδικα για android. Πηγαίος κώδικας προγράμματος. Πολύπλοκοι τύποι δεδομένων

(Οδηγός σχεδιαστή για μικροελεγκτές HCS08)

Στο Παράδειγμα 12.1, θα εξετάσουμε τον κώδικα που σας επιτρέπει να γράψετε και να διαγράψετε τα δικά σας δεδομένα στη μνήμη flash. Τέτοιες ενέργειες μπορεί να είναι απαραίτητες εάν ο χρήστης μιας συσκευής πραγματοποιήσει πρόσθετη διαμόρφωση αυτής της συσκευής και θέλει η επιλεγμένη διαμόρφωση να αποθηκευτεί μετά την απενεργοποίηση της τροφοδοσίας.

Προηγουμένως, σημειώσαμε ότι οι MCU της οικογένειας HCS08 δεν επιτρέπουν τη διαγραφή και τον προγραμματισμό λειτουργιών μνήμης flash, εκτελώντας το πρόγραμμα ελέγχου για αυτές τις λειτουργίες και από τη μνήμη flash. Φροντίστε πρώτα να ξαναγράψετε τον κώδικα προγράμματος που είναι υπεύθυνος για τις λειτουργίες διαγραφής και προγραμματισμού στη μνήμη RAM και, στη συνέχεια, εκτελέστε αυτόν τον κώδικα για εκτέλεση. Κατά τη διαδικασία διαγραφής και προγραμματισμού, θα προσαρτηθεί η μονάδα μνήμης flash υπέρταση. Ωστόσο, αυτό δεν θα προκαλέσει τη διακοπή λειτουργίας του προγράμματος, καθώς θα εκτελεστεί από τη μνήμη RAM σε αυτό το χρονικό σημείο.

Η NXP έχει αναπτύξει ένα σύνολο βοηθητικών προγραμμάτων γλώσσας assembly που διευκολύνει τη δημιουργία της δικής σας κώδικα προγράμματοςγια τον προγραμματισμό της μνήμης flash υπό τον έλεγχο του προγράμματος λειτουργίας της συσκευής. Αυτά τα βοηθητικά προγράμματα βρίσκονται στο αρχείο doonstack.asm. Αυτό το αρχείο θα πρέπει να συμπεριληφθεί στο έργο όπως φαίνεται στο Σχ. 12.3.

Ρύζι. 12.3. Παράθυρο έργου με περιλαμβανόμενο αρχείο doonstack.asm.

Περιεχόμενα αρχείου doonstack.asmπαρουσιάζεται παρακάτω. Έφερε πρωτότυπο κείμενοχρησιμοποιείται κώδικας προγράμματος, επομένως τα σχόλια δεν υπόκεινται σε μετάφραση.


;* Αυτή η γραφική ύλη προορίζεται να χρησιμεύσει ως πλαίσιο για ένα *
;* εφαρμογή χρήστη. Για ένα πιο ολοκληρωμένο πρόγραμμα που *
;* δείχνει την πιο προηγμένη λειτουργικότητα αυτού του *
;* επεξεργαστής, δείτε τις εφαρμογές επίδειξης *
;* που βρίσκεται στον υποκατάλογο παραδειγμάτων του *
;* Metrowerks Codewarrior για τον κατάλογο προγραμμάτων HC08 *
;**************************************************************
; σύμβολα εξαγωγής
XDEF DoOnStack
XDEF FlashErase
XDEF FlashProg
; χρησιμοποιούμε ως σύμβολο εξαγωγής "Είσοδος". Αυτό μας επιτρέπει
; αναφορά "Είσοδος" είτε στο αρχείο linker .prm
; ή από C/C++ αργότερα

; περιλαμβάνουν ειδικές μακροεντολές παραγώγων
Συμπεριλάβετε το "MC9S08GB60.inc"

Δύο παρακάτω γραμμέςθα πρέπει να μην σχολιαστεί και να αποδοθούν οι επιθυμητές τιμές.

;mPageErase ισοδυναμεί με 40$
;mByteProg ισοδυναμεί με 20$
mFACCERR ισοδύναμο $10
mFPVIOL eq $20
mFCBEF 80 $
; μεταβλητή/ενότητα δεδομένων
MY_ZEROPAGE: SECTION SHORT
; Εισαγάγετε εδώ τον ορισμό των δεδομένων σας. Για επίδειξη, χρησιμοποιείται temp_byte.
; temp_byte ds.b 1
; ενότητα κώδικα
MyCode: SECTION
;**************************************************************
; αυτή η ρουτίνα συναρμολόγησης ονομάζεται εφαρμογή C/C++
DoOnStack:pshx
pshh ;αποθήκευση δείκτη στο flash
psha ;εντολή αποθήκευσης στη στοίβα
ldhx #SpSubEnd ;σημαδέψτε στο τελευταίο byte για να μετακινηθείτε στη στοίβα.
SpMoveLoop: lda ,x ;ανάγνωση από flash
psha ;μεταβείτε στη στοίβα
aix #-1 ;επόμενο byte προς μετακίνηση
cphx #SpSub-1 ;προηγούμενο τέλος;
bne SpMoveLoop ;βρόχος μέχρι ολόκληρου υπο στη στοίβα
tsx ;point to sub στη στοίβα
tpa ;μετακινήστε το CCR στο A για δοκιμή
και #$08 ;ελέγξτε τη μάσκα I
bne I_set ;παράλειψη εάν έχω ήδη ορίσει
sei ;μπλοκ διακόπτει ενώ το FLASH είναι απασχολημένο
lda SpSubSize+6,sp ;προφόρτωση δεδομένων για εντολή
cli ;ok για διαγραφή I mask now
σουτιέν I_cont ;συνέχεια στη στοίβα απο-κατανομή
I_set: lda SpSubSize+6,sp ;προφόρτωση δεδομένων για εντολή
jsr ,x ;εκτελέστε το δευτερεύον στη στοίβα
I_cont: ais #SpSubSize+3 ;deallocate subbody + H:X + εντολή
;H:X δείκτης φλας ΟΚ από το SpSub
lsla ;A=00 & Z=1 εκτός εάν PVIOL ή ACCERR
rts ;για να αναβοσβήνει εκεί που κλήθηκε το DoOnStack
;**************************************************************
SpSub: ldhx LOW(SpSubSize+4),sp ;λάβετε διεύθυνση flash από τη στοίβα
sta 0,x ;εγγραφή στο flash; πρόσθετο κλειδώματος και δεδομένα
lda SpSubSize+3,sp ;get εντολή flash
sta FCMD ;γράψτε την εντολή flash
lda #mFCBEF ;μάσκα για εκκίνηση εντολής
στα FSTAT ; εντολή εγγραφής
όχι ;[p] θέλει min 4~ από τον κύκλο w στο r
ChkDone: lda FSTAT ; οπότε ισχύει το FCCF
lsla ;FCCF τώρα στο MSB
bpl ChkDone ;loop εάν FCCF = 0
SpSubEnd: rts ;επιστρέφει στο DoOnStack σε flash
SpSubSize: equ (*-SpSub)
;**************************************************************
FlashErase: psha ;adjust sp για την καταχώρηση DoOnStack

lda #mPageErase ;μοτίβο μάσκας για την εντολή διαγραφής σελίδας
bsr DoOnStack ;εντολή ολοκλήρωσης από υποστ. που βασίζεται σε στοίβα
rts
;**************************************************************
FlashProg: psha ;προσωρινή αποθήκευση δεδομένων εισόδου
lda #(mFPVIOL+mFACCERR) ;μάσκα
sta FSTAT ;ακύρωση οποιασδήποτε εντολής και εκκαθάριση σφαλμάτων
lda #mByteProg ;μοτίβο μάσκας για την εντολή byte prog
bsr DoOnStack ;εκτέλεση κωδικού προγράμματος από τη στοίβα RAM
ais #1 ;κατανομή θέσης δεδομένων από τη στοίβα
rts
;**************************************************************

Επίσης, στο κείμενο του κώδικα προγράμματος σε C, είναι απαραίτητο να χρησιμοποιήσετε την οδηγία #περιλαμβάνωαρχείο σύνδεσης doonstack.χ, το κείμενο του οποίου φαίνεται παρακάτω.


/* */
/* Όνομα έργου: doonstack.h */
/* Τελευταία τροποποίηση: 04/11/2004 */
/* Από: r60817 */
/* */
/* */
/**********************************************************************/
/* */
/* Περιγραφή: MC9S08GB60_FLASH_DOONSTACK - επίδειξη */
/* */
/* */
/* Τεκμηρίωση: MC9S08GB60/D Αναθ. 2.2 */
/* HCS08RMv1/D Αναθ. 1(4.8Παραδείγματα εφαρμογής FLASH) */
/* */
/* Αυτό το λογισμικό έχει ταξινομηθεί ως Μηχανικό Δείγμα Λογισμικού. */
/* */
/**********************************************************************/
/* */
/* Οι υπηρεσίες που εκτελούνται από τη FREESCALE σε αυτό το θέμα εκτελούνται ΩΣ ΕΧΟΥΝ */
/* και χωρίς καμία εγγύηση. Ο ΠΕΛΑΤΗΣ διατηρεί την τελική απόφαση */
/* σε σχέση με τον συνολικό σχεδιασμό και τη λειτουργικότητα του τελικού προϊόντος. */
/* FREESCALE ούτε εγγυάται ούτε θα φέρει ευθύνη από τον ΠΕΛΑΤΗ */
/* για την επιτυχία αυτού του έργου. ΔΩΡΕΑΝ ΑΠΟΚΡΙΣΗ ΟΛΩΝ */
/* ΕΓΓΥΗΣΕΙΣ, ΡΗΤΕΣ, ΣΙΩΠΗΡΕΣ Ή ΝΟΜΙΚΕΣ ΠΕΡΙΛΑΜΒΑΝΟΝΤΑΣ, ΑΛΛΑ ΟΧΙ */
/* ΠΕΡΙΟΡΙΣΜΕΝΗ ΣΕ ΣΙΩΠΗΡΗ ΕΓΓΥΗΣΗ ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑΣ Ή ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ ΓΙΑ */
/* ΣΥΓΚΕΚΡΙΜΕΝΟΣ ΣΚΟΠΟΣ ΓΙΑ ΟΠΟΙΟΔΗΠΟΤΕ ΥΛΙΚΟ, ΛΟΓΙΣΜΙΚΟ Ή ΣΥΜΒΟΥΛΗ ΠΑΡΕΧΟΜΕΝΟ */
/* ΠΡΟΣ ΤΟ ΕΡΓΟ ΑΠΟ ΕΛΕΥΘΕΡΗ ΚΛΙΜΑΚΑ ΚΑΙ Ή ΟΧΙ ΠΡΟΪΟΝ ΠΟΥ ΠΡΟΚΥΠΤΕΙ ΑΠΟ */
/* ΔΩΡΕΑΝ ΥΠΗΡΕΣΙΕΣ . ΣΕ ΚΑΜΙΑ ΠΕΡΙΠΤΩΣΗ ΔΕΝ ΕΙΝΑΙ ΥΠΕΥΘΥΝΗ Η ΔΩΡΕΑΝ ΚΛΙΜΑΚΙΑ ΓΙΑ */
/* ΤΥΠΙΤΙΚΕΣ Ή ΣΥΝΕΠΕΙΕΣ ΖΗΜΙΕΣ ΠΟΥ ΠΡΟΚΥΠΤΟΥΝ ΑΠΟ ΤΗΝ ΠΑΡΟΥΣΑ ΣΥΜΦΩΝΙΑ. */
/* */
/* Ο ΠΕΛΑΤΗΣ συμφωνεί να κρατήσει το FREESCALE αβλαβές έναντι οποιουδήποτε και όλων */
/* αξιώνει απαιτήσεις ή ενέργειες από οποιονδήποτε λόγω οποιασδήποτε ζημίας, ή */
/* τραυματισμός, εμπορικός, συμβατικός ή στρεβλός, αυξανόμενος */
/* άμεσα ή έμμεσα ως αποτέλεσμα της συμβουλής ή της βοήθειας */
/* παρεχόμενος ΠΕΛΑΤΗΣ σε σχέση με προϊόν, υπηρεσίες ή αγαθά */
/* παρέχεται βάσει της παρούσας Συμφωνίας. */
/* */
/**********************************************************************/
/*
- αυτό το API αρχείου μεταξύ main.c και doonstack.asm
*/
#ifndef _doonstack
#define _doonstack
#ifdef __cplusplus
εξωτερικό "C" ( /* οι λειτουργίες συναρμολόγησης μας έχουν σύμβαση κλήσης C */
#τέλος εαν
void DoOnStack(void); /* πρωτότυπο για τη ρουτίνα DoOnStack */
void FlashErase(unsigned char *); /* πρωτότυπο για τη ρουτίνα FlashErase */
/* Εντολή Διαγραφή σελίδας */
void FlashProg(unsigned char *, unsigned char); /* πρωτότυπο για τη ρουτίνα FlashProg */
/* Εντολή προγράμματος Byte */
#ifdef __cplusplus
}
#τέλος εαν

#endif /* _doonstack */
/**********************************************************************/

Στο παράδειγμά μας, ένα μπλοκ 512 byte είναι δεσμευμένο για την εγγραφή μη ασταθών δεδομένων. Αυτό το μέγεθος μπλοκ επιλέχθηκε επειδή είναι το ελάχιστο μέγεθος κελιών μνήμης flash που επιτρέπεται για διαγραφή στον μικροελεγκτή MC9S08QG8. Το επιλεγμένο μπλοκ θα βρίσκεται στην αρχή του χώρου διευθύνσεων φλας του MCU: 0xE000 έως 0xE1FF. Ο κωδικός προγράμματος θα ξεκινά από τη διεύθυνση 0xE200 και μπορεί να καταλαμβάνει χώρο διευθύνσεων έως και 0xFFFF.

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

Στο τυπικό έργο υπήρχε μια καταχώρηση:


ROM = READ_ONLY 0xE000 TO 0xFFAD.

Θα πρέπει να αντικατασταθεί:

SEGMENTS /* Εδώ αναφέρονται όλες οι περιοχές RAM/ROM της συσκευής */
ROM = READ_ONLY 0xE200 TO 0xFFAD;

Στο παράδειγμά μας, χρησιμοποιείται επίσης η λειτουργία προστασίας εγγραφής της περιοχής κώδικα προγράμματος, π.χ. χώρος διευθύνσεων από 0xF200 έως 0xFFFF. Στο Σχ. 12. 4 δείχνει τη διαδικασία δημιουργίας ενός κωδικού για τον καταχωρητή FPROT, ο οποίος παρέχει προστασία για τον χώρο διευθύνσεων 0xF200 ... 0xFFFF από τυχαία διαγραφή / εγγραφή. Τα επτά πιο σημαντικά bit της τελευταίας διεύθυνσης 0xF1FF του μη προστατευμένου χώρου διευθύνσεων πρέπει να εγγραφούν στον καταχωρητή FPROT.

Διεύθυνση Α15 Α14 Α13 Α12 Α11 Α10 Α9 Α8 Α7 Α6 Α5 Α4 Α3 Α2 Α'1 Α0
0xE1FF 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1
FPROT FPS7 FPS6 FPS5 FPS4 FPS3 FPS2 FPS1 FPDIS
0xE0 1 1 1 0 0 0 0 0

Ρύζι. 12.4. Σχηματισμός καταχώρησης κωδικού ασφαλείας για τον καταχωρητή FPROT.

Παράδειγμα 12.1. Λειτουργίες με μη πτητικά δεδομένα στη μνήμη flash

// Πίνακας επίδειξης DEMO9S08QG8
// erase/write/read resident flash
#include /* για μακροεντολή EnableInterrupts */
#include "derivative.h" /* περιλαμβάνει περιφερειακές δηλώσεις */
#include "hcs08.h" /* Αυτό είναι το αρχείο δήλωσης! */
#include "doonstack.h"
#define BUSCLK 8000000
#define vFCDIV (BUSCLK/200000-1)
char fdata, λειτουργία;
ανυπόγραφη int faddress?
// Εκχώρηση εύρους διευθύνσεων με προστασία εγγραφής: 0xE200 έως 0xFFFF
const byte NVPROT_INIT@0x0000FFBD = 0xE0;
// Αρχικοποίηση MK
void mcu_init(void)
{
SOPT1=bBKGDPE; // Ενεργοποίηση της συνάρτησης γραμμής εντοπισμού σφαλμάτων BKGD
ICSSC=NV_FTRIM; // Γράψτε την τιμή περικοπής FTRIM
ICSTRM = NV_ICSTRM; // Γράψτε την τιμή περικοπής TRIM
ICSC2 = 0; // ICSOUT = DCOUT / 1
// BUSCLK = 8 MHz
FCDIV=vFCDIV; // Γράψτε την τιμή του κωδικού διαιρέτη για τη συχνότητα FCLK
// (FCLK = 200 kHz)
}
#pragma inline
// Λειτουργία για την ανάγνωση ενός byte από ένα κελί μνήμης με μια δεδομένη διεύθυνση
char flash_read (ανυπόγραφη διεύθυνση int)
{
ανυπόγραφο char *δείκτης;
δείκτης = (char*) διεύθυνση;
return(*pointer);
}
// Η συνάρτηση εγγραφής ενός byte σε ένα κελί μνήμης με μια δεδομένη διεύθυνση
char flash_write (ανυπόγραφη διεύθυνση int, ανυπόγραφα δεδομένα χαρακτήρων)
{
ανυπόγραφο char *δείκτης;
δείκτης = (char*) διεύθυνση;
FlashProg(δείκτης, δεδομένα); // Κλήση της συνάρτησης προγραμματισμού φλας
εάν (FSTAT_FACCERR) δεδομένα=1; elsedata=0;
εάν (FSTAT_FPVIOL) δεδομένα|=2;
επιστροφή(δεδομένα)·
}
// Λειτουργία για τη διαγραφή του καθορισμένου μπλοκ στην περιοχή της μνήμης flash
ανυπόγραφο char flash_sector_erase (ανυπόγραφη διεύθυνση int)
{
ανυπόγραφο char *pointer, res;
δείκτης = (char*) διεύθυνση;
FlashErase(δείκτης);
εάν (FSTAT_FACCERR) res=1; else res=0;
if (FSTAT_FPVIOL) res|=2;
επιστροφή(res);
}
κενό κύριο (κενό)
{
mcu_init();
fdata = 0;
faddress = 0xE000;
λειτουργία = 0;
ενώ (1)
{
διακόπτης (λειτουργία)
{
περίπτωση 1: // Διαγραφή μπλοκ
fdata = flash_sector_erase(faddress);
λειτουργία = 0;
Διακοπή;
περίπτωση 2: // Γράψτε ένα byte
fdata = flash_write(faddress,fdata);
λειτουργία = 0;
Διακοπή;
περίπτωση 3: // Διαβάστε ένα byte
fdata = flash_read(faddress);
λειτουργία = 0;
Διακοπή;
}
}
}

Εξετάστε τη μεθοδολογία για τη δοκιμή του κώδικα προγράμματος του Παραδείγματος 12.1. Για να το κάνετε αυτό, στο παράθυρο του προγράμματος εντοπισμού σφαλμάτων Δεδομέναπροσθέστε τρεις μεταβλητές: προσόψεως, fdata, λειτουργία. Θα ρυθμίσουμε επίσης το παράθυρο να ενημερώνεται περιοδικά, για παράδειγμα, μετά από 200 ms.

Πριν εκτελέσετε τον κώδικα του προγράμματος, γράψτε στη μεταβλητή προσόψεωςδιεύθυνση για εγγραφή, αλλά σε μια μεταβλητή fdata— byte δεδομένων προς εγγραφή. Δίπλα στη μεταβλητή λειτουργίαγράψτε τον κωδικό 0x02. Μετά την εκτέλεση του παραδείγματος κώδικα προγράμματος, το byte δεδομένων θα εγγραφεί στην επιλεγμένη θέση μνήμης flash. Λάβετε υπόψη ότι το επιλεγμένο κελί πρέπει να είναι σε κατάσταση διαγραφής, π.χ. θα πρέπει να περιέχει τον κωδικό 0xFF.

Για να διαγράψετε το μπλοκ μνήμης 0xE00...0xE1FF, γράψτε στο προσόψεωςοποιαδήποτε διεύθυνση από το καθορισμένο εύρος και ορίστε τη μεταβλητή λειτουργίαγ 1. Στη συνέχεια, εκτελέστε ξανά τον κώδικα για εκτέλεση.

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

Σημειώστε ότι οι λειτουργίες flash_write()Και flash_sector_erase()επιστρέφει μια μεταβλητή τύπου χρέωσημε κωδικό σφάλματος κατά την εκτέλεση της ενέργειας: 0 - δεν υπήρχε σφάλμα, 0x02 - υπήρχε σφάλμα πρόσβασης, 0x04 - έγινε προσπάθεια διαγραφής / εγγραφής του προστατευμένου χώρου διευθύνσεων. Και οι δύο αυτές λειτουργίες απαιτούν περίπου 35 byte μνήμης στοίβας για να εκτελεστούν. Εάν η πραγματική περιοχή της στοίβας είναι μικρότερη, τότε θα προκύψει μοιραίο σφάλμα. Θα είναι δυνατή η επαναφορά της απόδοσης του προγράμματος μόνο με επαναφορά του MK.

Για να δείτε τις αλλαγές flash στο πρόγραμμα εντοπισμού σφαλμάτων, πρέπει να κάνετε ορισμένες αλλαγές στη διαμόρφωση του προγράμματος εντοπισμού σφαλμάτων. Ακολουθώντας τις προεπιλεγμένες ρυθμίσεις, το πρόγραμμα εντοπισμού σφαλμάτων διαβάζει μια περιοχή της μνήμης flash του MCU μόνο μία φορά μετά την έναρξη μιας περιόδου λειτουργίας εντοπισμού σφαλμάτων. Για να αλλάξετε τη διαμόρφωση, επιλέξτε την επιλογή στο κύριο μενού του προγράμματος εντοπισμού σφαλμάτων MultilinkCyclonPro > Εντοπισμός σφαλμάτων χάρτη μνήμης. Το παράθυρο που φαίνεται στο Σχ. 12.5, α. Επιλέξτε σε αυτό το παράθυρο μπλοκ μνήμης 3και πατήστε το κουμπί Τροποποίηση/Λεπτομέρειες. Στο νέο παράθυρο που φαίνεται στο Σχ. 12.5, β, επιλέξτε την επιλογή που έχει επισημανθεί. Θα επιτρέψει στον εντοπισμό σφαλμάτων να ανανεώνει περιοδικά το παράθυρο μνήμης.

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

Κάθε μέρα υπάρχουν όλο και περισσότερες εφαρμογές για Android. Μπορείτε να βρείτε εκατομμύρια ενδιαφέροντα παιχνίδια και χρήσιμα προγράμματα Παίξτε αγορά. Όλοι τους έχουν φιλική προς το χρήστη διεπαφήκαι είναι στο ύψος της αποστολής. Είναι δύσκολο να φανταστεί κανείς τον σύγχρονο κόσμο χωρίς αυτά. Τεχνολογίες πληροφορικής. Αυτό το άρθρο απευθύνεται σε άτομα που όχι μόνο εκτιμούν τη λειτουργικότητα και εμφάνισηεφαρμογές, αλλά και ενδιαφέρονται για την εσωτερική τους δομή.

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

Γενικές πληροφορίες

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

Πώς να βρείτε τον πηγαίο κώδικα των εφαρμογών Android;

Για να ξεκινήσετε, κατεβάστε την εφαρμογή της οποίας ο πηγαίος κώδικας σας ενδιαφέρει. Στη συνέχεια, μεταβείτε στο Play Market και κατεβάστε ένα βοηθητικό πρόγραμμα που ονομάζεται Εμφάνιση Java. Είναι αυτή που θα ασχοληθεί με την αποσυμπίεση. Εγκατεστημένο; Τέλεια, τώρα ας προχωρήσουμε στο πιο ενδιαφέρον - εξάγοντας το πρωτότυπο κώδικας androidπρογράμματα. Ξεκινάμε το Show Java.

Επιλέγω επιθυμητή εφαρμογήεγκατεστημένο ή βρείτε το στην κάρτα SD. Τώρα πρέπει να επιλέξετε έναν απομεταγλωττιστή. Συνήθως επιλέγω CRF. Εάν έχετε προβλήματα, δοκιμάστε το JaDX.

Με την ολοκλήρωση της διαδικασίας, θα λάβετε μια λίστα πακέτων με τον πηγαίο κώδικα για την εφαρμογή Android. Φυσικά, αυτό δεν είναι 100% αντίγραφο του κώδικα που έγραψαν οι προγραμματιστές αυτής της εφαρμογής. Αλλά η βασική λογική διατηρείται, δεν είναι δύσκολο να αναλυθεί. Τι να κάνετε με τις πηγές; Οτιδήποτε. Κοιτάξτε, αποσυναρμολογήστε, ίσως θα σας ενδιαφέρουν ορισμένα από τα "χαρακτηριστικά" ή τα χαρακτηριστικά της υλοποίησης της λειτουργικότητας του προγράμματος.

Επικεφαλίδα:

Σκοπός

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

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

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

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

Πηγή - βασικό συστατικόγια τη διαδικασία μεταφοράς λογισμικού σε άλλες πλατφόρμες. Χωρίς τον πηγαίο κώδικα για οποιοδήποτε κομμάτι λογισμικού, η μεταφορά είναι είτε πολύ δύσκολη είτε δεν είναι καθόλου δυνατή.

Οργάνωση

Ο πηγαίος κώδικας κάποιου μέρους του λογισμικού (ενότητα, στοιχείο) μπορεί να αποτελείται από ένα ή περισσότερα . Ο κώδικας προγράμματος δεν είναι απαραίτητα γραμμένος σε μία μόνο γλώσσα προγραμματισμού. Για παράδειγμα, συχνά προγράμματα γραμμένα στη γλώσσα C, με σκοπό τη βελτιστοποίηση, περιέχουν ένθετα κώδικα σε γλώσσα assembly. Υπάρχουν επίσης περιπτώσεις όπου ορισμένα στοιχεία ή μέρη ενός προγράμματος είναι γραμμένα σε διαφορετικές γλώσσες και στη συνέχεια συγκεντρώνονται σε μια ενιαία εκτελέσιμη μονάδα χρησιμοποιώντας μια τεχνική γνωστή ως σύνδεση βιβλιοθήκης ( σύνδεση βιβλιοθήκης).

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

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

Ποιότητα

Σε αντίθεση με τους ανθρώπους, δεν υπάρχει «καλογραμμένος» ή «κακογραμμένος» κώδικας για έναν υπολογιστή. Αλλά το πώς γράφεται ο κώδικας μπορεί να έχει μεγάλο αντίκτυπο στη διαδικασία συντήρησης του λογισμικού. Η ποιότητα του πηγαίου κώδικα μπορεί να κριθεί από τις ακόλουθες παραμέτρους:

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

Μη εκτελέσιμος πηγαίος κώδικας

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

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

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

δείτε επίσης


Ίδρυμα Wikimedia. 2010 .

Δείτε τι είναι ο "Κωδικός πηγής" σε άλλα λεξικά:

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

    Ανθρωπογραφικό κείμενο προγράμματος υπολογιστή σε γλώσσα προγραμματισμού Γλωσσάρι επιχειρηματικών όρων. Akademik.ru. 2001... Γλωσσάρι επιχειρησιακών όρων

    πηγή- - Θέματα τηλεπικοινωνιών, βασικές έννοιες EN πηγαίος κώδικας ... Εγχειρίδιο Τεχνικού Μεταφραστή

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

    πηγή- η γλώσσα του αρχικού κειμένου... Επεξηγηματικό μεταφραστικό λεξικό

    Πηγαίος κώδικας: Ο πηγαίος κώδικας ενός ανθρώπινου κειμένου ενός προγράμματος υπολογιστή. Πηγαίος κώδικας για τεχνοθρίλερ σε σκηνοθεσία Duncan Jones ... Wikipedia

    Αυτός ο όρος έχει άλλες έννοιες, δείτε τον πηγαίο κώδικα. Πηγαίος κώδικας ... Wikipedia

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

    Λογότυπο Open Source Initiative (OSI) Το λογισμικό ανοιχτού κώδικα είναι λογισμικό ανοιχτού κώδικα. Ο πηγαίος κώδικας των δημιουργηθέντων προγραμμάτων είναι ανοιχτός, δηλαδή διαθέσιμος για προβολή και τροποποίηση. Αυτό είναι ... ... Wikipedia

    Πηγαίο πρόγραμμα (πηγαίος κώδικας)- 48) πηγαίο πρόγραμμα (πηγαίος κώδικας) - αντίστοιχη αναπαράσταση μιας ή περισσότερων διεργασιών που μπορούν να μετατραπούν από ένα σύστημα προγραμματισμού σε μια φόρμα εκτελέσιμη από εξοπλισμό (κώδικας αντικειμένου ή γλώσσα αντικειμένου) (κατηγορίες 6, 7 και 9). … Επίσημη ορολογία

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

Πηγαίος κώδικας γραμμένος σε HTML χρησιμοποιώντας JavaScript

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

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

Στόχοι

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

Αδειοδότηση

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

Ποιότητα

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

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

Τώρα που καταλαβαίνετε την έννοια του προγραμματισμού, θα εξετάσουμε τον πηγαίο κώδικα - τα κύρια συστατικά του και τον τρόπο εργασίας με αυτά.

Αυτό το άρθρο περιλαμβάνεται σε μια σειρά άρθρων σχετικά με την ανάπτυξη για αρχάριους, .

Μέρος 2 - Πηγαίος κώδικας

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

Ορισμένα αναγνωριστικά που συνδυάζονται με την επιλεγμένη γλώσσα δεν μπορούν να χρησιμοποιηθούν ως αναγνωριστικό χρήστη. Ένα παράδειγμα είναι η λέξη σειράσε java. Τέτοια αναγνωριστικά μαζί με λέξεις-κλειδιά καλούνται Επιφυλάξεις Λέξεις. Είναι επίσης ξεχωριστοί.

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

Βασικοί τύποι δεδομένων

Ο πηγαίος κώδικας είναι μια συγκέντρωση διαφορετικών τύπων δεδομένων: αριθμοί(3, 5.7, -100, 3.142) και σύμβολα(Μ, Α). Σε ορισμένες γλώσσες προγραμματισμού, οι αριθμοί αναλύονται σε υποτύπους, όπως π.χ ακέραιοι αριθμοί(ολόκληροι αριθμοί).

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

Υπάρχουν επίσης boolean τύπουςδεδομένα booleanαυτό το θέμα αληθήςή ψευδής.

Πολύπλοκοι τύποι δεδομένων

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

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

Ο συνδυασμός των χαρακτήρων είναι γραμμή. Για να χρησιμοποιήσετε μια αναλογία, μια γραμμή για έναν υπολογιστή σημαίνει ότι η λέξη ανήκει σε ένα άτομο. Η λέξη "θερμόμετρο" έχει μήκος 9 χαρακτήρες - απλώς την ονομάζουμε συμβολοσειρά χαρακτήρων. Ο χειρισμός συμβολοσειρών είναι ένα τεράστιο θέμα που πρέπει να μελετηθεί από κάθε αρχάριο προγραμματιστή.

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

Μεταβλητές

Οι μεταβλητές είναι απλώς ονόματα για περιοχές της μνήμης. Μερικές φορές χρειάζεται να αποθηκεύσετε δεδομένα σε πηγαίο κώδικα σε ένα μέρος όπου μπορείτε να τα καλέσετε για να τα χρησιμοποιήσετε. Αυτή είναι συνήθως μια θέση μνήμης που δεσμεύεται από τον μεταγλωττιστή/διερμηνέα. Πρέπει να δώσουμε ένα όνομα σε αυτά τα κελιά μνήμης για να τα θυμόμαστε αργότερα. Εξετάστε το απόσπασμα κώδικα Python παρακάτω:

pet_name = Εκτύπωση "Hippo" pet_name

pet_name = "Ιπποπόταμος"

εκτύπωση pet_name

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

Σταθερές

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

Υπάρχει δυνατές γλώσσες προγραμματισμού, στο οποίο πρέπει να βρίσκεται κάθε μεταβλητή ορισμένου τύπου. Αφού επιλέξετε έναν τύπο, δεν μπορείτε να τον αλλάξετε ξανά. Ιάβα- Καλό παράδειγμαένα τέτοιο ΥΑΠ.

Άλλοι δεν παρέχουν αυτές τις δυνατότητες. Αυτοί είναι χαλαρά δακτυλογραφημένοή δυναμικές γλώσσες προγραμματισμού. Ένα παράδειγμα είναι η Python.

Δείτε πώς μπορείτε να δηλώσετε μια σταθερή τιμή στο JavaScript:

JavaScript

const petName = "Ιπποπόταμος"

const petName = "Ιπποπόταμος"

Κυριολεκτικά

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

Στο παραπάνω απόσπασμα, η λέξη "Hippo" είναι κυριολεκτική συμβολοσειρά. Θα είναι πάντα "Hippo" μέχρι να επεξεργαστείτε τον πηγαίο κώδικα. Όταν μάθετε να κωδικοποιείτε, θα μάθετε πώς να διαχειρίζεστε τα κυριολεκτικά με τέτοιο τρόπο ώστε το μεγαλύτερο μέρος του κώδικα να παραμένει αμετάβλητο.

Σημεία στίξης/Σύμβολα

Στα περισσότερα γραπτά προγράμματα θα βρείτε διάφορα σημάδιασημεία στίξης ανάλογα με την επιλεγμένη γλώσσα προγραμματισμού. Για παράδειγμα, η Java χρησιμοποιεί περισσότερα σημεία στίξης από την Python.

Οι βασικοί χαρακτήρες περιλαμβάνουν κόμμα ( , ), ερωτηματικό ( ; ), άνω και κάτω τελεία ( : ), σιδερακια ΔΟΝΤΙΩΝ ({} ), κανονικές παρενθέσεις ( () ), αγκύλες (), εισαγωγικά ( «» ή » ), κάθετη μπάρα ( | ), κάθετο ( \ ), σημείο ( . ), ερωτηματικό ( ? ), καρέ ( ^ ) και ποσοστό ( % ).

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

χειριστές

Οι πιθανότητες να γράψετε τον πηγαίο κώδικα για να εκτελέσετε κάποια λειτουργία είναι εξαιρετικά μεγάλες. Οποιεσδήποτε γλώσσες προγραμματισμού που χρησιμοποιούμε περιλαμβάνουν πολλούς τελεστές. Μεταξύ αυτών που χρησιμοποιούνται, διακρίνεται η προσθήκη ( + ), διαίρεση ( / ) πολλαπλασιασμός ( * ), αφαίρεση ( ) και μεγαλύτερο από το σύμβολο ( > ).

Οι χειριστές ταξινομούνται συνήθως ως εξής:

  1. Χειριστές ανάθεσης. Μερικές φορές ερμηνεύονται ως ισοδυναμεί, τι συμβαίνει. Η ισότητα χρησιμοποιείται για τη σύγκριση δύο τιμών. Αλλά ο τελεστής εκχώρησης εκχωρεί μια τιμή σε μια μεταβλητή, για παράδειγμα pet_name = 'Ιπποπόταμος'
  2. Αριθμητικοί τελεστές. Αποτελείται από τελεστές για την εκτέλεση αριθμητικών εργασιών όπως πρόσθεση και αφαίρεση. Ορισμένες γλώσσες προγραμματισμού παρέχουν αριθμητικοί τελεστέςόταν άλλοι μπορεί να μην τα έχουν στο οπλοστάσιό τους. Για παράδειγμα, ο τελεστής modulus/remainder ( % ) επιστρέφει το υπόλοιπο στις πράξεις διαίρεσης.
  3. Σχεσιακούς τελεστές. Χρησιμοποιείται για σύγκριση τιμών. Περιλαμβάνουν μεγαλύτερο από, μικρότερο από, ίσο με, όχι ίσο με. Η αναπαράστασή τους εξαρτάται επίσης από τη γλώσσα προγραμματισμού που μαθαίνετε. Για ορισμένα PL δεν είναι ίσο - αυτό είναι <> , για άλλους - != ή !== .
  4. Λογικοί τελεστές. Χρησιμοποιούνται για την εκτέλεση λογικών πράξεων. Οι λογικοί τελεστές που χρησιμοποιούνται συνήθως είναι Και, ή, Οχι. Ορισμένες γλώσσες αντιπροσωπεύουν αυτούς τους τελεστές ως ειδικοί χαρακτήρες. Για παράδειγμα, && να αντιπροσωπεύει ένα λογικό Και, || - Για ή, Και ! - Για Οχι. Οι τιμές Boolean συνήθως αξιολογούνται χρησιμοποιώντας τιμές boolean αληθήςή ψευδής.

Σχόλια

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

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

Δήλωση διαφορετικών σχολίων για διαφορετικές γλώσσες. Για παράδειγμα, # χρησιμοποιείται για την εισαγωγή σχολίων στη γλώσσα Python.

Ακολουθεί ένα παράδειγμα σχολίου στην Python:

# τμήμα προγράμματος για τον υπολογισμό του fibonacci από N αριθμούς

Ιάβα

// αναδρομική υλοποίηση της παραγοντικής εισαγωγής java.util.Scanner; class RecursiveFactorial ( public static void main (String args) ( Scanner input=new Scanner(System.in); System.out.print("Find the Factorial of: "); int num=input.nextInt(); System.out .println(" Factorial of "+num+" = "+fact(num)); ) static long fact(int n) ( if(n< 2) return 1; return n * fact(n-1); } }