Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα

προσπάθησα να φτιαξω ενα προγραμμα με pascal αλλα κατι εχω κανει λαθος και δεν ξερω τι

μπορει καποιος να με βοηθησει ?

 

>
PROGRAM diktis_mazas_anthropou;
VAR ILIKIA,BAROS,YPSOS,DMS: REAL;

BEGIN
WRITE('TO YPSOS SAS:');
READLN(YPSOS);
WRITE('TO BAROS SAS:');
READLN(BAROS);
WRITE('H ILIKIA SAS:');
READLN(ILIKIA);
IF ILIKIA>18 THEN
 DMS:=BAROS/YPSOS^2;
 IF DMS<18.5 THEN
	 WRITE('EISAI ADYNATO ATOMO');
 ELSE IF DMS>=18.5 AND DMS<25 THEN
	 WRITE('EISAI KANONIKO ATOMO');
 ELSE IF DMS>=25 AND DMS<30 THEN
	 WRITE('EISAI BARY ATOMO');
 ELSE IF DMS>=30 THEN
	 WRITE('EISAI YPERBARO ATOMO');
 END;
ELSE
 WRITE('TA STOIXEIA POU DWSATE DEN EINAI EGKYRA');
END;
END.

Δημοσ.

Δοκίμασε

>
PROGRAM diktis_mazas_anthropou;
VAR ILIKIA,BAROS,YPSOS,DMS: REAL;

BEGIN
WRITE('TO YPSOS SAS:');
READLN(YPSOS);
WRITE('TO BAROS SAS:');
READLN(BAROS);
WRITE('H ILIKIA SAS:');
READLN(ILIKIA);
IF ILIKIA>18 THEN
BEGIN //<============================================
 DMS:=BAROS/YPSOS^2;
 IF DMS<18.5 THEN
	 WRITE('EISAI ADYNATO ATOMO')//; <==============================================
 ELSE IF DMS>=18.5 AND DMS<25 THEN
	 WRITE('EISAI KANONIKO ATOMO')//; <==============================================
 ELSE IF DMS>=25 AND DMS<30 THEN
	 WRITE('EISAI BARY ATOMO')//; <==============================================
 ELSE IF DMS>=30 THEN
	 WRITE('EISAI YPERBARO ATOMO');
 END //; <==============================================
ELSE
 WRITE('TA STOIXEIA POU DWSATE DEN EINAI EGKYRA');
END;
END.

Δημοσ.

Πέρα από τα συντακτικά λάθη με τα ; (πριν από else δεν θέλει ; ) και τα μη-ταιριασμένα begin-end, το σύμβολο ^ στην Pascal σημαίνει δείκτης και όχι δύναμη.

 

Επίσης όταν έχεις περισσότερες από μια συνθήκες μέσα σε ένα if statement, πρέπει να τις εμπερικλείεις σε παρενθέσεις, ξεχωριστά την κάθε μία.

 

Τέλος, θεωρείται καλή πρακτική να αρχικοποιείς πάντα τις μεταβλητές σου με default τιμές όταν τις πρωτο-ορίζεις, γιατί αλλιώς ξεκινάνε τη ζωή τους με ότι να 'ναι τιμές (στο συγκεκριμένο πρόγραμμα δεν έχεις πρόβλημα, αλλά καλό είναι να το συνηθίσεις από τώρα που είναι νωρίς).

 

>
program diktis_mazas_anthropou;

var    ilikia:    Real = 0.0;
   baros:     Real = 0.0;
   ypsos:     Real = 0.0;
   dms:     Real = 0.0;

begin
   write('TO YPSOS SAS: ');
   readln(ypsos);

   write('TO BAROS SAS: ');
   readln(baros);

   write('H ILIKIA SAS: ');
   readln(ilikia);

   if ilikia > 18 then
   begin
       dms := baros / (ypsos * ypsos);

       if dms < 18.5 then
           writeln('EISAI ADYNATO ATOMO')

       else if (dms >= 18.5) AND (dms < 25.0) then
           writeln('EISAI KANONIKO ATOMO')

       else if (dms >= 25.0) AND (dms < 30.0) then
           writeln('EISAI BARY ATOMO')

       else if dms >= 30.0 then
           writeln('EISAI YPERBARO ATOMO');
   end
   else
       writeln('TA STOIXEIA POU DWSATE DEN EINAI EGKYRA');
   readln();
end.

Δημοσ.

ευχαριστώ παιδιά !!! μόνο αλγόριθμο ξέρω και είπα να δοκιμάσω να κάνω ένα πρόγραμμα σε pascal .

και δεν ξέρω καλά όλες τις εντολές .

 

migf1 αυτό που έκανας στις μεταβλητές (var) δεν το ξέρω ... ισχύει αν το κάνω σε πρόγραμμα με αλγοριθμο(μιλάω για το μάθημα 3 λυκείου που κάνουμε αλγοριθμους σε πρόγραμμα)

 

 

mvaggel αυτα δεν ξερω τι κανουν //<=== :)

Δημοσ.

Αυτά τα // νομίζω πως σημαίνουν ότι δε θα εκτελεστεί κάποιο κομμάτι του κώδικα (ή αλγορίθμου στην περίπτωση μας)

Δημοσ.

...

migf1 αυτό που έκανας στις μεταβλητές (var) δεν το ξέρω ... ισχύει αν το κάνω σε πρόγραμμα με αλγοριθμο(μιλάω για το μάθημα 3 λυκείου που κάνουμε αλγοριθμους σε πρόγραμμα)

 

Βάζει default τιμές στις μεταβλητές, δηλαδή τις αρχικοποιεί (variable initialization). Μπορεί ο compiler που χρησιμοποιείς να τις αρχικοποιεί από μόνος του σε 0 αν δεν το κάνεις εσύ, αλλά δεν μπορείς να βασιστείς σε αυτό, επειδή το πρότυπο της γλώσσας δεν εγγυάται αυτόματη αρχικοποίηση των μεταβλητών.

 

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

 

 

mvaggel αυτα δεν ξερω τι κανουν //<=== :)

 

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

 

Σημείωσε πως τα σχόλια στην στάνταρ Pascal περικλείονται σε { και } και μπορούν να περιέχουν πολλές γραμμές. Συνήθως για να είναι ευδιάκριτα, βάζουν και αστερίσκους, π.χ.

 

>
{* I am a Pascal comment *}
{*
So
am
I
*}

 

Νομίζω πως τα // δεν είναι στάνταρ Pascal (προέρχονται από την σύνταξη των C++ και C99). Οπότε και πάλι, αν θέλεις ο κώδικάς σου να γίνεται compile απροβλημάτιστα ακόμα κι αν αλλάξεις compiler, είναι καλή ιδέα να ακολουθείς όσο μπορείς τα στάνταρ πρότυπα, μιας και αυτά τα υποστηρίζουν οι περισσότεροι compilers (αν όχι όλοι).

 

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

 

Το πρόγραμμα που έγραψες, σε C είναι κάπως έτσι...

 

>
#include <stdio.h>
#include <stdlib.h>

int main( void )
{
float ilikia	= 0.0;
float baros	= 0.0;
float ypsos	= 0.0;
float dms	= 0.0;

printf( "TO YPSOS SAS: " );
scanf( "%f", &ypsos );

printf( "TO BAROS SAS: " );
scanf( "%f", &baros);

printf( "H ILIKIA SAS: " );
scanf( "%f", &ilikia );

if ( ilikia > 18 )
{
	dms = baros / (ypsos * ypsos);

	if ( dms < 18.5 )
		puts( "EISAI ADYNATO ATOMO" );

	else if ( dms >= 18.5 && dms < 25.0 )
		puts( "EISAI KANONIKO ATOMO" );

	else if ( dms >= 25.0 && dms < 30.0 )
		puts( "EISAI BARY ATOMO" )

	else if ( dms >= 30.0 )
		puts( "EISAI YPERBARO ATOMO" );
}
else
	puts( "TA STOIXEIA POU DWSATE DEN EINAI EGKYRA" );

system("pause");	// Windows only
return 0;
}

 

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

Δημοσ.

ναι με ενδιαφέρει γιατι θελω να περάσω σε σχολή πληροφορικής

τωρα ξερω στους αλγόριθμους μεχρι για-οσο αλλα οχι εμφολευμένες ... σιγα σιγα μαθαίνω

έχω αρχίσει να κανω τα προγράμματα αλγορίθμων σε pascal . τωρα για c θα ασχοληθώ άμα περάσω

  • 1 μήνα μετά...
Δημοσ.

@migf1

 

κατέβασα το προγραμμα NetBeans για να κανω τον κωδικα c που μου έδωσες προγραμμα αλλα οταν βαζω τον κωδικα μου βγαζει θαυμαστικα

548623be36b24d06bf8c82c.png

 

μπορεις να με βοηθήσεις ?

Δημοσ. (επεξεργασμένο)

Καλημέρα και χρόνια πολλά.

 

Το NetBeans δεν συμπεριλαμβάνει C compiler, και από ότι είδα προτείνει είτε το mingw toolchain είτε το cygwin. Και τα 2 είναι μάλλον ταλαιπωρία να τα εγκαταστήσεις εφόσον είσαι ακόμα στην αρχή.

 

Δοκίμασε είτε το Code:Blocks (μόλις είδα πως βγηκε νέα έκδοση) που έχει ξεχωριστό download που συμπεριλαμβάνει το mingw toolchain, είτε το Orwell Dev-C++ (επίσης περιλαμβάνει το mingw) είτε την Pelles C που είναι ολοκληρωμένο πακέτο ειδικά για C.

 

Από τα 3 η πιο εύκολη και γρήγορη λύση είναι η Pelles C. Οι άλλες 2 υποστηρίζουν όμως και C++, με το Code::Blocks να είναι σαφώς ανώτερο σαν IDE (και πιο πολυπλοκο).

 

Αν θες να "παιδευτείς" μπορείς να διαβάσεις εδώ πως μπορείς να στήσεις χειροκίνητα το mingw toolchain στα Windows, κι από εκεί και πέρα τα περισσότερα IDE τα κατεβάζεις σκέτα, χωρίς δλδ C/C++ compiler και θα στο βρίσκουν αυτόματα από το σύστημά σου κατά την εγκατάστασή τους (π.χ. το Code:Blocks και το NetBeans που έχω δοκιμάσει το κάνουν... το Orwell όχι, πρέπει να το ορίσεις μόνος σου στα Settings του).

 

Στο παραπάνω link βασικά εξηγώ πως μπορούμε να στήσουμε το Notepad++ σαν IDE για όποια γλώσσα θέλουμε, αλλά 2-3 ποστς κάτω από το αρχικό εξηγώ πως μπορούμε να στήσουμε χειροκίνητα το mingw toolchain στα Windows.

 

 

ΥΓ. Το Code::Blocks έχει leader έναν Έλληνα και υοστηρίζει και Ελληνικά. Στα Orwell DevC++ και Pelles C υπάρχουν ενσωματωμένες στις διανομές τους οι Ελληνικές μεταφράσεις που τους έχω κάνει ;)

 

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

 

EDIT:

 

Χμ, τώρα που βλέπω και την εικόνα, ελπίζω να μην έγραψα όλο εκείνο το κατεβατό κι εσύ λέγοντας "θαυμαστικά" να εννοούσες τις κόκκινες υπογραμμίσεις :lol:

 

Αν ναι, τότε δεν έχουν σχέση αυτά που σου έγραψα παραπάνω, απλώς απενεργοποίησε το SpellChecker του NetBeans.

Επεξ/σία από migf1
Δημοσ.

χρόνια πολλά

θέλω να ασχοληθώ με τον προγραμματισμό αλλα όχι απο τώρα ...όταν περάσω με το καλό σε μια σχολή πληροφορικής :)

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

έψαξα λίγο στο νετ και βρήκα αυτο το πρόγραμμα στην photo αλλα δεν είναι αυτο που θέλω.

ήθελα ενα προγραμμα που να του βαζω τον κώδικα και να μου το κανει προγραμμα για να δω πώς δουλεύει ... κατι σαν το  Link.png Site: http://spinet.gr/glossomatheia/">γλωσσομάθεια που φτιάχνεις εναν αλγόριθμο σε προγραμμα και το τρέχει σαν πρόγραμμα σε μια μαυρη οθόνη .

ευχαριστώ πάντως για την βοήθεια :)

Δημοσ.

Άνοίξεις ένα καινούριο θέμα όπου θα περιγράφεις λίγο πιο αναλυτικά τι θες να βρεις. Εδώ είσαι εκτός θέματος.

 

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

Δημοσ.

Αν είσαι 3η λυκείου πάσο (αν και μάλλον προλαβαίνεις να ξεκλέψεις 2 απογεύματα για να δεις λίγη Python πχ). Αν όχι, τότε αυτά είναι απλά δικαιολογίες.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...