Page 1 of 1

Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Mon Oct 02, 2017 1:33 am
by leecher
Το παρόν thread προορίζεται για το μάθημα "Εισαγωγή στον Προγραμματισμό Υπολογιστών". Εδώ μπορείτε να συζητάτε για ό,τι σχετίζεται με το συγκεκριμένο μάθημα. Υπενθυμίζουμε ότι με βάση τους κανονισμούς λειτουργίας του forum απαγορεύονται τα greeklish, double posts και τα κεφαλαία. Για προηγούμενες συζητήσεις μπορείτε να ανατρέξετε εδώ.

Καλή αρχή! :D

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Tue Oct 03, 2017 11:43 pm
by km291
Hello,
Εχουν ξεκινησει τα εργαστηρια?

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Tue Oct 10, 2017 2:45 pm
by calmen
καλησπερα μια βοηθεια παρακαλω;)
η ασκηση θελει να βρεις τους 100 πρωτους αριθμους και απο αυτους θελει να βρει τον μεγαλυετερο.
εγω εχω κανει ενα προγραμμα με βαση ιντερνετ βιβλιο κλπ αλλα δεν ειναι αυτο που θελει..με αυτο που εχω γραψει εγω οταν βρει τον πρωτο αριθμο σταματαει,χωρις να μου τον εμφανισει.
οποιος μπορει να γραψει τον σωστο κωδικα ή και να μου πει πως να τον γραψω σωστα.ευχαριστω!!


import acm.program.*;
import acm.graphics.*;
public class finalexa5 extends ConsoleProgram {
public void run () {

int max = 100;
for ( int x = 100 ; x> 0 & x <= max ; x--) {
boolean protos = true ;
for ( int y = 2 ; y < x ; y++)
if ( x % y == 0 )
protos = false ;



if (protos)
break ;
println(x) ;

}
}
}

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Tue Oct 10, 2017 4:43 pm
by Iptamenos
calmen wrote:καλησπερα μια βοηθεια παρακαλω;)
η ασκηση θελει να βρεις τους 100 πρωτους αριθμους και απο αυτους θελει να βρει τον μεγαλυετερο.
εγω εχω κανει ενα προγραμμα με βαση ιντερνετ βιβλιο κλπ αλλα δεν ειναι αυτο που θελει..με αυτο που εχω γραψει εγω οταν βρει τον πρωτο αριθμο σταματαει,χωρις να μου τον εμφανισει.
οποιος μπορει να γραψει τον σωστο κωδικα ή και να μου πει πως να τον γραψω σωστα.ευχαριστω!!
Έκανα την εξής διόρθωση σημειωμένη με έντονο φόντο:

import acm.program.*;
import acm.graphics.*;
public class finalexa5 extends ConsoleProgram {
public void run () {

int max = 100;
for ( int x = 100 ; x> 0 & x <= max ; x--) {
boolean protos = true ;
for ( int y = 2 ; y < x ; y++) {
if ( x % y == 0 ) {
protos = false ;
break;
}
}
if (protos) {
println(x) ;
break ;

}
}


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

Αν θέλεις μπορείς να κάνεις την εξής βελτιστοποίηση για επιτάχυνση. Έλεγχος διαιρετότητας έως το μισό του x:
for ( int y = 2 ; y < x/2 ; y++)

Ή ακόμα καλύτερα όπως έχει αποδειχθεί, έλεγχος διαιρετότητας έως τη ρίζα του x:
for ( int y = 2 ; y < Math.sqrt(x) ; y++)

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Tue Oct 10, 2017 5:47 pm
by calmen
Σε ευχαριστώ πάρα πάρα πολύ!!! γιατί έχω σταματήσει εκεί εδώ και 2 μέρες!!

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Wed Oct 11, 2017 7:40 pm
by Georgilakis Antonios
kwnstantinos.nikoloutsos wrote:Μια ερώτηση και απο εμένα:
Η java εχει build-in libraries η Math ειναι μια απο αυτες?? Γνωριζω μονο Python και η java μου φαίνεται πολυ πιο ασχημη στο συντακτικο της :(
Προφανώς και έχει, δες το online API reference. Για το Math είναι στο java.lang.Math.

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Thu Oct 12, 2017 1:10 am
by nickgian
Λοιπόν ξέρω ότι είναι πολύ νωρίς ακόμα αλλά όλο το εξάμηνο θα κάνουμε compile μέσω του command line; Γιατί θέλω να ασχοληθώ μόνος μου και δεν ξέρω αν έχει νόημα να μάθω αυτόν τον τρόπο ή αν θα ξεκινήσω κατευθείαν με ένα IDE. Επίσης ψάχνοντας στο stackoverflow είδα που ένας πρότεινε αν είσαι αρχάριος να δουλεύεις με τη μέθοδο του cmd και με έβαλε σε σκέψεις. Ποια είναι η γνώμη σας;

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Thu Oct 12, 2017 2:03 am
by leecher
Στην εισαγωγή στον προγραμματισμό, νομίζω μόνο μέσω command line θα κάνετε compile, αλλά μπορείς να αυτοματοποιήσεις κάπως την διαδικασία βάζοντας τις εντολές για το compile μέσα σε ένα .bat αρχείο (που έφτιαξες με κάποιον απλό επεξεργαστή κειμένου).

πχ (test.bat):

Code: Select all

javac Test.java && java Test
pause
Κάθε φορά που θα εκτελείς το .bat αρχείο που δημιούργησες θα γίνεται compile το αρχείο Test.java και στη συνέχεια θα εκτελείται. Αλλιώς μπορείς να χρησιμοποιήσεις κάποιο IDE, που η διαδικασία γίνεται συνήθως με το πάτημα ενός κουμπιού. Για εξάσκηση αν είσαι αρχάριος θα σου έλεγα να μην χρησιμοποιήσεις IDE σε αυτό το μάθημα.

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Thu Oct 12, 2017 2:47 am
by pgetsos
Καλο ειναι να μαθεις και τον βασικο τροπο, γιατι μελλοντικα μπορει να σου χρειαστει

Απο το επομενο εξαμηνο κατεβασε το JetBrains IDEA Ultimate με χρηση του πανεπιστημιακου σου email

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Thu Oct 12, 2017 3:39 pm
by calmen
καλησπερα,
στο προγραμμα που βαζει τυχαιους αριθμους και πρεπει να βρεις το αθροισμα ,μ.ο , για θετικους και αρνητικους ξεχωριστα,
σου λεει να βρεις και το μαξ,μιν απο αυτους..
στο πρωτο μερος το καταφερα στο δευτερο ειχα θεμα.
στο ιντερνετ εαν καταλαβα καλα(?) τους βρισκουν με πακετο
φανταζομαι οτι εμεις σε αυτο το μαθημα πρεπει να γραψουμε εντολες..
μια βοηθεια πως θα βαλω και το μαξ και μιν σε αυτο που εγραψα??
ευχαριστω.
συγνωμη για το μεγαλο ποστ..
εαν καποιος θελει να με βοηθησει με υλικο για να προλαβω να εχω τελειωσει το μαθημα μεχρι 1/12/2017 θα τον ευχαριστουσα τρελα!
(τοτε θα δωσουμε οσοι θελουν να μπουν στο τμημα με κατατακτηριες)

Code: Select all

import acm.program .*;
import acm.graphics .*;
public class frouros extends ConsoleProgram {
 public void run () {
	 int totala = 0 ;
	 int totalt = 0 ;
	 int countt = 0 ;
	 int counta = 0 ;
	 int x = 0 ;
	 
	 boolean thetikos = true ;
		 while (thetikos = true )  {
		 int value = readInt ("dwse aritmo : ") ;
		   
		  if (value < x )  {
		  
		  counta++ ;
		  totala += value ;
		  println( "to athroisma  ton arnitikon einai " + totala) ;
		   
		   
		   thetikos = false ;
		  }
		  if (value == 0 ) break ;
		  
		  if (thetikos) {
		  countt++;
		  totalt += value ;
		  println( " to athroisma ton thetikon einai " + totalt) ;
		    
		  }
		 }
		println( " to athroisma ton thetikon einai " + totalt) ;  
	  println( "to athroisma  ton arnitikon einai " + totala) ;
	  double averagea = (double) totala / counta ;
	  println(" to average ton arnitikon einai " +averagea) ;
	  double averaget = (double) totalt / countt ;
	  println( "to average ton thetikon einai " + averaget) ;
}
}

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Thu Oct 12, 2017 6:14 pm
by leecher
Μπορείς να θέσεις 2 νέες μεταβλητές, μία για το min και μία για το max, και κάθε φορά να συγκρίνεις τον αριθμό αν είναι μικρότερος από το min ή μεγαλύτερος από το max. Αν ισχύει μία από τις 2 περιπτώσεις τότε αντικαθιστάς τη μεταβλητή min ή max με τον νέο αριθμό.

Παράδειγμα:

Code: Select all

import java.util.Random;

public class Test {

	public static void main(String[] args) {

		int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;

		for (int i = 0 ; i < 10 ; i++) {
			
			int randomNumber = (new Random()).nextInt(100);
			System.out.println(randomNumber);
			
			if (randomNumber < min) {
				min = randomNumber;
			}
			
			if (randomNumber > max) {
				max = randomNumber;
			}
			
		}
		
		System.out.println("min: " + min);
		System.out.println("max: " + max);
		
	}

}
Αρχικά κάνουμε αυτό int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE; ώστε να δώσουμε στις μεταβλητές τη μεγαλύτερη και μικρότερη τιμή που μπορούν να πάρουν. Ύστερα το πρόγραμμα παράγει 10 τυχαίους αριθμούς από τους οποίους βρίσκει τον μεγαλύτερο και τον μικρότερο.

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Thu Oct 12, 2017 6:36 pm
by calmen
Ωραία σε ευχαριστώ πολύ για την βοήθεια.θα το μελετήσω .

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Tue Oct 17, 2017 12:23 pm
by calmen
καλημερα,
μια ερωτηση προς τα παιδια που εχουν δωσει το μαθημα ή ξερουν,
σε ασκησεις-εξετασεις αν μας ζητηθει να βρουμε μαθηματικες πραξεις πχ δυναμη του 2,μιν,μαξ..
μπορω να τα παρω απο Μαth ( πχ απο την Math.pow) ή θα πρεπει να τα γραφω βημα βημα?
ευχαριστω

Re: RE: Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Tue Oct 17, 2017 1:21 pm
by teotsi21
calmen wrote:καλημερα,
μια ερωτηση προς τα παιδια που εχουν δωσει το μαθημα ή ξερουν,
σε ασκησεις-εξετασεις αν μας ζητηθει να βρουμε μαθηματικες πραξεις πχ δυναμη του 2,μιν,μαξ..
μπορω να τα παρω απο Μαth ( πχ απο την Math.pow) ή θα πρεπει να τα γραφω βημα βημα?
ευχαριστω
Συνήθως ξεκαθαριζεται στην εκφώνηση. Συνήθως δεν έχουν πρόβλημα με τις βασικές βιβλιοθήκες της Java πάντως.

Sent from my ONEPLUS A3010 using Tapatalk

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Tue Oct 17, 2017 1:49 pm
by calmen
οκ ευχαριστω

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Sun Oct 29, 2017 3:24 pm
by stratisper99
Ρε παίδες μήπως γνωρίζει κανείς γιατί ενώ έχω κατεβάσει την java όταν κάνω compile στο cmd μου εμφανίζει errors ενώ ο κώδικας είναι σωστός???Μήπως παίζει κάτι με την βιβλιοθήκη program?

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Sun Oct 29, 2017 8:59 pm
by Georgilakis Antonios
stratisper99 wrote:Ρε παίδες μήπως γνωρίζει κανείς γιατί ενώ έχω κατεβάσει την java όταν κάνω compile στο cmd μου εμφανίζει errors ενώ ο κώδικας είναι σωστός???Μήπως παίζει κάτι με την βιβλιοθήκη program?
Το να υπάρχει bug στην ACM βιβλιοθήκη είναι τόσο σπάνιο που πρακτικά αποκλείεται. Αν πράγματι ο κώδικάς σου είναι σωστός, τότε τι είδους errors εμφανίζονται στην γραμμή εντολών? Μήπως να έκανες ακόμα ένα revision?

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Tue Oct 31, 2017 6:36 pm
by nickgian
Ποιο σύγγραμα προτείνετε ανάμεσα στου Rogers (Μπλε εξώφυλλο) και του Roberts (αυτό με το λιοντάρι);

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Tue Oct 31, 2017 10:06 pm
by Eldebryn
nickgian wrote:Ποιο σύγγραμα προτείνετε ανάμεσα στου Rogers (Μπλε εξώφυλλο) και του Roberts (αυτό με το λιοντάρι);
Roberts το βρήκα πολύ πιο ευανάγνωστο και εξίσου χρήσιμο με το άλλο. Plus, LOTR references ma dude :metal2:

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Fri Nov 10, 2017 5:04 pm
by Everett Lake
Παιδιά καλησπέρα,

για την πρώτη εργασία της Java για τις ασκήσεις 1 και 2 χρειαζόμαστε γραφικά. Πέρα από την άσκηση του lab 3 και την άσκηση 4, δε βρήκα κάτι άλλο πάνω σε αυτό. Επειδή γενικά δεν προλαβαίνω να παρακολουθώ τα μαθήματα, τι οδηγίες έχουν δώσει γι αυτές τις ασκήσεις; Απλά να δούμε τι παίζει στο βιβλίο του Roberts? ή υπάρχουν τίποτα σημειώσεις που δεν έχω δει;

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Mon Nov 13, 2017 12:43 am
by Julio
Μπορώ να χρησιμοποιήσω στη δήλωση μιας σταθεράς πράξεις με άλλες σταθερές;
π.χ: private static final double POS=(HWIDTH-DWIDTH)/2; όπου HWIDTH και DWIDTH σταθερές

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Mon Nov 13, 2017 11:37 am
by Georgilakis Antonios
Julio wrote:Μπορώ να χρησιμοποιήσω στη δήλωση μιας σταθεράς πράξεις με άλλες σταθερές;
π.χ: private static final double POS=(HWIDTH-DWIDTH)/2; όπου HWIDTH και DWIDTH σταθερές
Ναι.