C basic Commands Tutorial

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

C basic Commands Tutorial

Δημοσίευσηαπό pc_magas » 17 Νοέμ 2009, 20:52

Λοιπών ας κάνω και εγώ κανα tutorial για να συνεισφέρω και εγώ λιγουλάκι.
Η C είναι μια γλώσσα όπου συγράφικε το Unix πρόγονος των σημερινών Linux και όλων των κλώνων που βασίζονται σε αυτόν.
Η στάνταρ δομή ενός κώδικα προγράμματος σε C έχει ως εξής
Κώδικας: Επιλογή όλων

#include<stdio.h>
main()
{ εντολή1;
εντολή2;
.
.
.
εντολήν;
}

Πολλές φορές θα το δέιτε και ως εξής
Κώδικας: Επιλογή όλων

#include<stdio.h>
void main()
{ εντολή1;
εντολή2;
.
.
.
εντολήν;
}
#include<stdio.h>
main(int argv,char *argc[])
{ εντολή1;
εντολή2;
.
.
.
εντολήν;
}

#include<stdio.h>
int main(void)
{ εντολή1;
εντολή2;
.
.
.
εντολήν;
}
#include<stdio.h>
int main()
{εντολή1;
εντολή2;
.
.
.
return 0;
}
#include<stdio.h>
int main()
{εντολή1;
εντολή2;
.
.
.
}

Μην ψαρώσεται είναι ισοδύναμα
Καλό θα ήταν να σημειώσουμε κάποια πραγματάκια γι αυτήν:
1ον Η C είναι Case Sensitive δηλαδή a δεν είναι το ίδιο με Α (ομοίως και για κάθε χαρακτήρα)
2ον Η main είναι η βασική συνάρτηση για την C και είναι υποχρεωτική για κάθε πρόγραμμα. Δηλαδή είναι το βασικό σώμα εντολών.
3ον Η C δεν έχει αυστηρό ελεγχο στον τύπο των δεδομένων της.(Θα το δούμε παρακάτω)
4ον Κάθε εντολή πρέπει να τελειώνει με ; εκτός από μερικές πχ if

Βασικές Συναρτήσεις:

Εμφάνιση τιμών: Χρήση printf
Σύνταξη:
Κώδικας: Επιλογή όλων
printf("Κείμενο προς εμφάνιση+προσδιοριστες",μεταβήτές,εκφράσεις)

Προσδιοριστές
%d : Ακαίρεα τιμή
%f : Πραγματική τιμή
%lf : Πραγματική τιμή διπλής ακρίβειας
%c : Χαρακτήρας
%s : Συμβμολοσειρά
\n : Νέα Γραμμή
Για να δούμε καλύτερα την σύνταξη της printf ας δούμε τις μεταβλητές και σταθερές
Δήλωση μεταβλητών:
Κώδικας: Επιλογή όλων
τυπος ονομα;
ή
τύπος όνομα=τιμή;

Ο τύπος Μπορεί να έιναι:
int : ακαίρεα τιμή
float : Πραγματική
char : Χaρακτήρας Acii
double : Πραγματική διπλής Ακρίβειας
ΠΑΡΑΤΗΡΗΣΕΙΣ
1) Το όνομα δεν μπορεί να είναι δευσμεμενη λέξη της C
2) Μια μεταβλητή μπορει να χρησιμοποιηθεί όπως θέλεται και να αλλάξει τιμή όπου θέλεται στον κώδικα αλλά δεν μπορεί να δηλώσεται μεταβλητή με το ίδιο όνομα
3)Με το πρόθεμα const κατα τη δήλωση η μεταβλητή παίρνει μια σταθερή τιμή που δεν μπορεί να αλλάξει στον κώδικα.
4)To όνομα μιας μεταβλητής μπορεί να περιέχει πεζοκαιφαλαίους χαρακτήρες αριθμούς και τον χαρακτήρα _. Δεν επιτρέπονται τα !@#$~ και γενικότερα χαρακτήρες σαν και αυτούς.
5) Το ονομα μιας μεταβλητής δεν μπορεί να αρχίζει με αριθμό. Πρέπει να αρχίζει με χαρακτήρα ή την _.
Παράδειγμα με printf
Κώδικας: Επιλογή όλων

#include<stdio.h>
main()
{ int a=1;const int b=3;
printf("The %d+%d=%d\n",a,a,a+a);
printf("%d\n",b);
a=33;
printf("%c",a);
}

Σχόλια
(Σημειωση μπορείτα να εισάγεται σχόλια στον κώδικα με το /*σχόλιο*/
όπου σχόλιo το κέιμενο των σχολίων)
Στην αρχή θέτω μια ακαίρεα μεταβλητή και μια ακαίρεα σταθερά και τις δίνω παράλληλα και τιμές (μπορεί να γίνει κα χωριστά η ανάθεση από την δήλωση) και τυπώνω την πράξη τους (μπορέι να γίνει και χωρίς ανάθεση σε νέα μεταβλητή) μέτα τυπώνω την στασθερά και αλλάζω τιμή στην a. Και μπορώ με τον ακαίρεο όπου ανέθεσα να τυπώσω τον χαρακηρα ASCII που αντιστοιχεί στον αριθμό αυτό. Στο παράδειγμα αντιστοιχεί στον χαρακτήρα "!".
(Σ.τ.α Είδατε ευελιξία η C!)
Προσοχή για αναθεση χαρακτηρα σε μεταβλητή πρέπει ο χαρακτήρας να είναι σε single quotes.(' ')
Παράδειγμα:
Κώδικας: Επιλογή όλων

#include<stdio.h>
main()
{char a='a';
printf("%c\n",a);
}

Κατά την εκιτέλεση θά εμφανιστει στην οθόνη:
Κώδικας: Επιλογή όλων

a
Τελευταία επεξεργασία από pc_magas και 09 Ιαν 2010, 01:17, έχει επεξεργασθεί 1 φορά/ες συνολικά
My blog|Κυπριακή Κοινότητα Ελευθέρου Λογισμικού Λογισμικού ανοικτού Κώδικα
Γνώσεις Linux:Ποτέ αρκετές|Προγραμματισμός: Php, javascript, nodejs, python, bash |Aγγλικά:Καλά
Οι υπολογιστές μου:
Spoiler: show
Ubuntu 16.04 64 bit σεIntel(R) Pentium(R) CPU G4400 @ 3.30GHz, 16Gib Ram, 500Gib Hard Disk, και κάρτα γραφικών Nvidia Geforce GT610
Lubuntu 14.04 σε Dell Inspiron mini 10(1010) intel Atom Z500 1Gb ram και gma500 (εδώθη σε άλλον)
Kubuntu 16.04 Lenovo G70 Intel i5 Nvidia Grapgics Card, Intel Graphics card (έχει 2) με Nouveau, 16Gb RAM, 126GB SSD Σκληρό Δίσκο
Άβαταρ μέλους
pc_magas
powerTUX
powerTUX
 
Δημοσιεύσεις: 2599
Εγγραφή: 12 Απρ 2009, 18:55
Τοποθεσία: Αχαρναί Αττικής
Launchpad: pc_magas
IRC: pc_magas
Εκτύπωση

Re: C basic Commands Tutorial

Δημοσίευσηαπό pc_magas » 18 Νοέμ 2009, 22:39

Είσοδος τιμών από τον χρήστη στο πρόγραμμα:
Χρήση της scanf
Σύνταξη:
Κώδικας: Επιλογή όλων
scanf("προσδιοριστές ιδιοι με την printf",&μεταβλητή);

Με την scanf εισάγουμε δεδομένα από το πληκτρολόγιο στο πρόγραμμά μας.
καλύτερα ας δούμε ένα παράδειγμα:
Κώδικας: Επιλογή όλων

#include<stdio.h>
main()
{char a;
printf("Please enter a character\n");
scanf("%c",&a);/*Με την εντολή αυτή ο χρήστης μπορεί να εισάγει έναν χαρακτήρα. Οι προσδιοριστές είναι ίδιοι με την prinf*/
printf("H τιμή του χαρακτήτα %c στον κώδικα Ascii είναι %d\n",a,a);
}

Mε την printf μπορούμε να τυπόσουμε κάι τον χαρακηρα με τον προσδιοριστή %c αλλά και την ακαίρεα τιμή που αντιστοιχει στον κώδικα ASCII με %c. Όμοιως μπορούμε να τυπώσουμε μια τιμή όπως θέλουμε πχ doule να τυπωθεί ως float ή float ως int ή int ως double ή float
απλά βάζοντας τον κατάλληλο προσδιοριστή στην printf.
Να και ένα screenshot εκτέλεσης:
Τελευταία επεξεργασία από pc_magas και 24 Νοέμ 2009, 22:28, έχει επεξεργασθεί 2 φορά/ες συνολικά
My blog|Κυπριακή Κοινότητα Ελευθέρου Λογισμικού Λογισμικού ανοικτού Κώδικα
Γνώσεις Linux:Ποτέ αρκετές|Προγραμματισμός: Php, javascript, nodejs, python, bash |Aγγλικά:Καλά
Οι υπολογιστές μου:
Spoiler: show
Ubuntu 16.04 64 bit σεIntel(R) Pentium(R) CPU G4400 @ 3.30GHz, 16Gib Ram, 500Gib Hard Disk, και κάρτα γραφικών Nvidia Geforce GT610
Lubuntu 14.04 σε Dell Inspiron mini 10(1010) intel Atom Z500 1Gb ram και gma500 (εδώθη σε άλλον)
Kubuntu 16.04 Lenovo G70 Intel i5 Nvidia Grapgics Card, Intel Graphics card (έχει 2) με Nouveau, 16Gb RAM, 126GB SSD Σκληρό Δίσκο
Άβαταρ μέλους
pc_magas
powerTUX
powerTUX
 
Δημοσιεύσεις: 2599
Εγγραφή: 12 Απρ 2009, 18:55
Τοποθεσία: Αχαρναί Αττικής
Launchpad: pc_magas
IRC: pc_magas
Εκτύπωση

Re: C basic Commands Tutorial

Δημοσίευσηαπό pc_magas » 18 Νοέμ 2009, 22:40

Kαλά τα πήγα στο πρώτο tutorial μου?
My blog|Κυπριακή Κοινότητα Ελευθέρου Λογισμικού Λογισμικού ανοικτού Κώδικα
Γνώσεις Linux:Ποτέ αρκετές|Προγραμματισμός: Php, javascript, nodejs, python, bash |Aγγλικά:Καλά
Οι υπολογιστές μου:
Spoiler: show
Ubuntu 16.04 64 bit σεIntel(R) Pentium(R) CPU G4400 @ 3.30GHz, 16Gib Ram, 500Gib Hard Disk, και κάρτα γραφικών Nvidia Geforce GT610
Lubuntu 14.04 σε Dell Inspiron mini 10(1010) intel Atom Z500 1Gb ram και gma500 (εδώθη σε άλλον)
Kubuntu 16.04 Lenovo G70 Intel i5 Nvidia Grapgics Card, Intel Graphics card (έχει 2) με Nouveau, 16Gb RAM, 126GB SSD Σκληρό Δίσκο
Άβαταρ μέλους
pc_magas
powerTUX
powerTUX
 
Δημοσιεύσεις: 2599
Εγγραφή: 12 Απρ 2009, 18:55
Τοποθεσία: Αχαρναί Αττικής
Launchpad: pc_magas
IRC: pc_magas
Εκτύπωση

Re: C basic Commands Tutorial

Δημοσίευσηαπό pc_magas » 21 Νοέμ 2009, 18:53

Αφού μάθαμε για τις μεταβλητές ας δούμε πόσο χώρο ποιάνουν στην μνήμη:





ΤύποςΜέγεθος που καταλαμβάνει στην μνήμη
int2 ή 4 bytes*
char1byte
float4bytes
double8 bytes

*Ανάλωγα με την αρχιτεκτονική του υπολογιστή

Μπορούμε να προσδιορίσουμε καλύτερα το μέγεθος και το πεδίο τιμών που καλύπτει μια με ταβλητή με τους παρακάτω προσδιοριστές:
short,long,signed,unsigned



typetype/definitionsize(bytes)
shortμικρό int1*
longμεγάλο int4 ή 16*

*Ανάλωγα από την αρχιτεκτονική του επεξεργαστή


όνοματύποιπεδίο τιμών
unsigmedχωρίς πρόσημο[0...2^Ν-1]
signedμε πρόσημο[-2^(Ν-1)...2^(Ν-1)-1]

Να ένας πίνακας με το πεδίο τιμών για κάθε τύπο μεταβλητής:
Τελευταία επεξεργασία από pc_magas και 24 Νοέμ 2009, 22:34, έχει επεξεργασθεί 1 φορά/ες συνολικά
My blog|Κυπριακή Κοινότητα Ελευθέρου Λογισμικού Λογισμικού ανοικτού Κώδικα
Γνώσεις Linux:Ποτέ αρκετές|Προγραμματισμός: Php, javascript, nodejs, python, bash |Aγγλικά:Καλά
Οι υπολογιστές μου:
Spoiler: show
Ubuntu 16.04 64 bit σεIntel(R) Pentium(R) CPU G4400 @ 3.30GHz, 16Gib Ram, 500Gib Hard Disk, και κάρτα γραφικών Nvidia Geforce GT610
Lubuntu 14.04 σε Dell Inspiron mini 10(1010) intel Atom Z500 1Gb ram και gma500 (εδώθη σε άλλον)
Kubuntu 16.04 Lenovo G70 Intel i5 Nvidia Grapgics Card, Intel Graphics card (έχει 2) με Nouveau, 16Gb RAM, 126GB SSD Σκληρό Δίσκο
Άβαταρ μέλους
pc_magas
powerTUX
powerTUX
 
Δημοσιεύσεις: 2599
Εγγραφή: 12 Απρ 2009, 18:55
Τοποθεσία: Αχαρναί Αττικής
Launchpad: pc_magas
IRC: pc_magas
Εκτύπωση

Re: C basic Commands Tutorial

Δημοσίευσηαπό pc_magas » 24 Νοέμ 2009, 21:10

Αν παρατηρίσατε στην αρχή ενός προγράμματος της C αρχίζει με:
Κώδικας: Επιλογή όλων
#include<stdio.h>

Αυτό που κανουμε με αυτό στην ουσία λέμε στον προεπεξεργαστή της C να συμπεριλάβει ένα αρχείο header (δηλ. μια βιβλιοθήκη)
Η stdio.h είναι μια βασική βιβλιοθήκη διότι συμπεριλαμβάνει όλες τις βασικές συναρτήσεις-εντολές για είσοδο και εκτύπωση δεδομένων.
Με την εντολή-οδηγία #include μπορούμε να εισάγουμε περισότερες βιβλιοθήκες.
πχ άμa uελουμε να εισάγουμε την math.h γράφουμε πριν η μετά την #include<stdio.h>:
Κώδικας: Επιλογή όλων
#include<math.h>

Παράδειγμα:Υπολόγισμός δύναμης μορφής a^a
Κώδικας: Επιλογή όλων
#include<stdio.h>
#include<math.h>
main()
{int number;
printf("please enter a number:")
scanf(" %d",&number);
printf("a^a=%d\n",pow(a,a));/* Η συνάρτηση pow συμπεριλαμβάνεται στο header math.h*/
/*Info: http://www.thinkage.ca/english/gcos/expl/c/lib/pow.html*/
}


Προσοχή!!!! Ενας πρακτικός κανόνας:
Η stdio.h πρέπει πάντα να χρησιμοπιοίται!!!!!!!!



Περισότερες πληροφορίες για τις βιβλιοθήκες της C:
http://en.wikipedia.org/wiki/Category:C ... ry_headers
Τελευταία επεξεργασία από pc_magas και 24 Νοέμ 2009, 22:32, έχει επεξεργασθεί 4 φορά/ες συνολικά
My blog|Κυπριακή Κοινότητα Ελευθέρου Λογισμικού Λογισμικού ανοικτού Κώδικα
Γνώσεις Linux:Ποτέ αρκετές|Προγραμματισμός: Php, javascript, nodejs, python, bash |Aγγλικά:Καλά
Οι υπολογιστές μου:
Spoiler: show
Ubuntu 16.04 64 bit σεIntel(R) Pentium(R) CPU G4400 @ 3.30GHz, 16Gib Ram, 500Gib Hard Disk, και κάρτα γραφικών Nvidia Geforce GT610
Lubuntu 14.04 σε Dell Inspiron mini 10(1010) intel Atom Z500 1Gb ram και gma500 (εδώθη σε άλλον)
Kubuntu 16.04 Lenovo G70 Intel i5 Nvidia Grapgics Card, Intel Graphics card (έχει 2) με Nouveau, 16Gb RAM, 126GB SSD Σκληρό Δίσκο
Άβαταρ μέλους
pc_magas
powerTUX
powerTUX
 
Δημοσιεύσεις: 2599
Εγγραφή: 12 Απρ 2009, 18:55
Τοποθεσία: Αχαρναί Αττικής
Launchpad: pc_magas
IRC: pc_magas
Εκτύπωση

Re: C basic Commands Tutorial

Δημοσίευσηαπό Dimitris » 24 Νοέμ 2009, 21:34

Μπράβο, συνέχισε έτσι!!! Μερικές μικροδιορθώσεις μόνο.

pc_magas έγραψε:Αυτό που κανουμε με αυτό στην ουσία λέμε στον προεπεξεργαστή της C να συμπεριλάβει ένα αρχείο header (δηλ. μια βιβλιοθήκη)

Συμπεριλαμβάνει μόνο το header αρχείο, όχι τη βιβλιοθήκη. O linker είναι αυτός που συμπεριλαμβάνει τις βιβλιοθήκες. Αυτό που βλέπεις σαν χρήστη είναι ο gcc να κάνει το linking. Στην πραγματικότητα θέτει τα κατάλληλα paths και περνάει τις επιλογές στο ld, που έιναι ο προεπιλεγμένος linker.

pc_magas έγραψε:Προσοχή!!!!
Η stdio.h πρέπει πάντα να χρησιμοπιοίτε!!!!!!!!
Όχι απαραίτητα (τουλάχιστον θεωρητικά) αν γράψεις ένα πρόγραμμα που δε χρησιμοποιεί το standard input/output. Ή αν γράψεις μια δική σου βιβλιοθήκη που κάνει αυτή τη δουλειά.

ΥΓ. Και χρησιμοποιείται. Παθητική φωνή με αι όχι με ε. χρησιμο + ποιώ (δηλαδή φτιάχνω)
Λοιπόν και όχι λοιπών, και άλλα ορθογραφικά λάθη. Βάλε το plugin για ορθογραφικό έλεγχο, αν θέλεις, για firefox.
Άβαταρ μέλους
Dimitris
saintTUX
saintTUX
 
Δημοσιεύσεις: 1357
Εγγραφή: 13 Μάιος 2008, 13:57
Τοποθεσία: Θεσσαλονίκη
Εκτύπωση

Re: C basic Commands Tutorial

Δημοσίευσηαπό pc_magas » 09 Ιαν 2010, 01:15

Τώρα λίγα πραγματάκια για τους αριθμιτικούς συντελεστές:






ΣύλοβοΙδιότητα
+πρόσθεση
-αφαίρεση
/ακαίρεο πιλίκο
%ακαίρεο υπόλοιπο
*Πολ/σμος

Προτεραιότητα συντελεστών:
  1. /,%
  2. *
  3. +,-

Προσοχή:
Οι συντελεστές: /,% δίνουν ακαίρεο πιλίκο ή υπόλοιπο για ακαίραιες εκφράσεις και μεταβλητές για πραγματικό η double πιλίκο οι εκφράσεις-μεταβλητές πρέπει να είναι πραγματικές


Παράδειγμα:
Κώδικας: Επιλογή όλων

#include<stdio.h>
int main(){
int a=2,b=3;
float c,z;
a=a+b;//a=2+3==5
printf("%d",a);/*Ti 8α ετυπωθεί? Η απάντηση είναι: 5*/
printf("\n");
b=4;//ekhwroume sthn metavliti bthn timi 4
printf("%d",b/a);//Apotelesma 2
a=5;
c=a/b;
d=a%b;
printf("c=%f d=%f",c,d);/* (1) */
c=(float)a/b/*Me to legomeno type kasting allazoume prosorina ton typo thn metavlitis a etsi wste na einai float*/
printf("c=%f",c);
/*H prohgoumeni entoli 8a ektypwsei diaforetiki timi apo thn entoli pou eihe dipla se sholia to (1) */
}

Προσοχή προσοχή!!
Σε αριθμιτικεσ παραστασεισ που λαμβανουν χώρο interger (int) με (float) και εκχωρούνται σε float καλό είναι να γίνεται type casting για να αποφεύγονται πρόβληματα στον κώδικα ειδικά σε διαίρεση και σε εκχώριση αποτελέσματος σε float η double

My blog|Κυπριακή Κοινότητα Ελευθέρου Λογισμικού Λογισμικού ανοικτού Κώδικα
Γνώσεις Linux:Ποτέ αρκετές|Προγραμματισμός: Php, javascript, nodejs, python, bash |Aγγλικά:Καλά
Οι υπολογιστές μου:
Spoiler: show
Ubuntu 16.04 64 bit σεIntel(R) Pentium(R) CPU G4400 @ 3.30GHz, 16Gib Ram, 500Gib Hard Disk, και κάρτα γραφικών Nvidia Geforce GT610
Lubuntu 14.04 σε Dell Inspiron mini 10(1010) intel Atom Z500 1Gb ram και gma500 (εδώθη σε άλλον)
Kubuntu 16.04 Lenovo G70 Intel i5 Nvidia Grapgics Card, Intel Graphics card (έχει 2) με Nouveau, 16Gb RAM, 126GB SSD Σκληρό Δίσκο
Άβαταρ μέλους
pc_magas
powerTUX
powerTUX
 
Δημοσιεύσεις: 2599
Εγγραφή: 12 Απρ 2009, 18:55
Τοποθεσία: Αχαρναί Αττικής
Launchpad: pc_magas
IRC: pc_magas
Εκτύπωση


Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι