2B Mini Proje: Not Defteri
Mini proje: 2B int matrisi kullanarak küçük bir not defteri oluşturun. Hizalı tablolar yazdırın, öğrenci ve ödev başına ortalamaları hesaplayın, en başarılı öğrencileri bulun, notları ölçeklendirin ve özet raporu çıktı olarak verin.
2B Mini Proje: Not Defteri, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 6 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 6 dersten oluşur.
Proje Genel Bakışı
Proje amacı: Not defterini, her satırın bir öğrenciyi ve her sütunun bir ödevi/kısa sınavı/sınavı temsil ettiği 2B bir int matrisi olarak gösterin. Hizalı bir tablo yazdıracak, öğrenci ve ödev bazında ortalamaları hesaplayacak, en başarılı öğrenciyi ve ödevi bulacak, puanları eğriyle düzeltecek ve bir özet raporu oluşturacaksınız.
Sahneleri izleyin ve her kod örneğini sırayla çalıştırın. Girdi gerekmez.
Oluşturma ve Yazdırma
1. adım: Küçük bir not defteri matrisi oluşturun ve hizalı sütunlarla yazdırın. Sütun genişliklerini hesaplamak için bir yardımcı, her değeri boşluklarla doldurmak için de bir yazdırıcı kullanıyoruz.
public class Main {
// Join helper for one-dimensional arrays (space-separated)
static String join(int[] a) {
String s = "";
for (int i = 0; i < a.length; i = i + 1) {
s = s + a[i] + (i + 1 < a.length ? " " : "");
}
return s;
}
// Compute column widths for aligned printing (jagged-aware)
static int[] widths(int[][] m) {
int maxCols = 0;
for (int r = 0; r < m.length; r = r + 1) {
if (m[r].length > maxCols) maxCols = m[r].length;
}
int[] w = new int[maxCols];
for (int r = 0; r < m.length; r = r + 1) {
for (int c = 0; c < m[r].length; c = c + 1) {
int len = Integer.toString(m[r][c]).length();
if (len > w[c]) w[c] = len;
}
}
for (int c = 0; c < w.length; c = c + 1) if (w[c] < 1) w[c] = 1;
return w;
}
// Print matrix with aligned columns
static void printAligned(int[][] m) {
int[] w = widths(m);
for (int r = 0; r < m.length; r = r + 1) {
String line = "";
for (int c = 0; c < m[r].length; c = c + 1) {
String s = Integer.toString(m[r][c]);
while (s.length() < w[c]) s = " " + s;
line = line + s + (c + 1 < m[r].length ? " " : "");
}
System.out.println(line);
}
}
public static void main(String[] args) {
// Create a 4x5 gradebook (4 students, 5 assignments)
int[][] g = {
{78, 85, 90, 88, 92},
{95, 91, 89, 93, 87},
{60, 72, 70, 68, 75},
{88, 84, 79, 85, 90}
};
System.out.println("Gradebook (rows: students, cols: assignments):");
printAligned(g);
}
}
Satır/Sütun Ortalamaları
2. adım: Öğrenci (satır) ve ödev (sütun) bazında ortalamaları hesaplayın. Sütun ortalamaları, düzensiz dizilerle güvenli çalışmak için her satırın uzunluğunu denetlemelidir.
public class Main {
// Average of one row (student r)
static double rowAverage(int[][] g, int r) {
int sum = 0;
for (int c = 0; c < g[r].length; c = c + 1) sum = sum + g[r][c];
return (double) sum / g[r].length;
}
// Average of one column (assignment c)
static double colAverage(int[][] g, int c) {
int sum = 0;
int count = 0;
for (int r = 0; r < g.length; r = r + 1) {
if (c < g[r].length) { sum = sum + g[r][c]; count = count + 1; }
}
return (double) sum / count;
}
public static void main(String[] args) {
int[][] g = {
{78, 85, 90, 88, 92},
{95, 91, 89, 93, 87},
{60, 72, 70, 68, 75},
{88, 84, 79, 85, 90}
};
// Compute per-student averages
for (int r = 0; r < g.length; r = r + 1) {
double avg = rowAverage(g, r);
System.out.println("student " + r + " avg = " + String.format("%.2f", avg));
}
// Compute per-assignment averages
int assignments = g[0].length;
for (int c = 0; c < assignments; c = c + 1) {
double avg = colAverage(g, c);
System.out.println("assignment " + c + " avg = " + String.format("%.2f", avg));
}
}
}
En Başarılı Öğrenci/Ödev
3. adım: En başarılı öğrenciyi (en yüksek satır ortalaması) ve en başarılı ödevi (en yüksek sütun ortalaması) bulun.
public class Main {
static double rowAverage(int[][] g, int r) {
int sum = 0;
for (int c = 0; c < g[r].length; c = c + 1) sum = sum + g[r][c];
return (double) sum / g[r].length;
}
static double colAverage(int[][] g, int c) {
int sum = 0;
int count = 0;
for (int r = 0; r < g.length; r = r + 1) { if (c < g[r].length) { sum = sum + g[r][c]; count = count + 1; } }
return (double) sum / count;
}
public static void main(String[] args) {
int[][] g = {
{78, 85, 90, 88, 92},
{95, 91, 89, 93, 87},
{60, 72, 70, 68, 75},
{88, 84, 79, 85, 90}
};
// Find top student by average
int bestStudent = -1;
double bestAvg = -1.0;
for (int r = 0; r < g.length; r = r + 1) {
double avg = rowAverage(g, r);
if (avg > bestAvg) { bestAvg = avg; bestStudent = r; }
}
// Find top assignment by average
int assignments = g[0].length;
int bestAssign = -1;
double bestCol = -1.0;
for (int c = 0; c < assignments; c = c + 1) {
double avg = colAverage(g, c);
if (avg > bestCol) { bestCol = avg; bestAssign = c; }
}
System.out.println("top student = " + bestStudent + " (avg=" + String.format("%.2f", bestAvg) + ")");
System.out.println("top assignment = " + bestAssign + " (avg=" + String.format("%.2f", bestCol) + ")");
}
}
Puanları Eğriyle Düzeltme
4. adım: Sabit bir puan eğrisi uygulayın (örneğin her puana +5 ekleyin, 100 ile sınırlandırın) ve öncesi/sonrası matrislerini yazdırın.
public class Main {
// Add a flat curve of k points (capped at 100)
static void curve(int[][] g, int k) {
for (int r = 0; r < g.length; r = r + 1) {
for (int c = 0; c < g[r].length; c = c + 1) {
int v = g[r][c] + k;
if (v > 100) v = 100;
g[r][c] = v;
}
}
}
static void print(int[][] g) {
for (int r = 0; r < g.length; r = r + 1) {
for (int c = 0; c < g[r].length; c = c + 1) {
System.out.print(g[r][c] + (c + 1 < g[r].length ? " " : ""));
}
System.out.println();
}
}
public static void main(String[] args) {
int[][] g = {
{78, 85, 90, 88, 92},
{95, 91, 89, 93, 87},
{60, 72, 70, 68, 75},
{88, 84, 79, 85, 90}
};
System.out.println("before curve:");
print(g);
curve(g, 5); // +5 points each
System.out.println("after curve (+5, capped at 100):");
print(g);
}
}
Özet Raporu
5. adım: Basit bir rapor oluşturun: öğrenci bazında ortalamalar ve sınıfın genel ortalaması. (Bunu daha sonra harf notlarını içerecek şekilde genişletebilirsiniz.)
public class Main {
static double rowAverage(int[][] g, int r) {
int sum = 0;
for (int c = 0; c < g[r].length; c = c + 1) sum = sum + g[r][c];
return (double) sum / g[r].length;
}
static double overallAverage(int[][] g) {
int sum = 0;
int count = 0;
for (int r = 0; r < g.length; r = r + 1) {
for (int c = 0; c < g[r].length; c = c + 1) { sum = sum + g[r][c]; count = count + 1; }
}
return (double) sum / count;
}
public static void main(String[] args) {
int[][] g = {
{83, 90, 95, 93, 97}, // assume already curved values
{100, 96, 94, 98, 92},
{65, 77, 75, 73, 80},
{93, 89, 84, 90, 95}
};
// Print each student average
for (int r = 0; r < g.length; r = r + 1) {
double avg = rowAverage(g, r);
System.out.println("student " + r + " avg = " + String.format("%.2f", avg));
}
// Print overall average
System.out.println("overall avg = " + String.format("%.2f", overallAverage(g)));
}
}
Öğrenci Ortalaması Kontrolü
Hızlı kontrol: r öğrencisinin ortalamasını hangi formül hesaplar?
Özet ve Sonraki Adım
Özet: 2B diziyle bir not defteri modellediniz, hizalı tablolar yazdırdınız, satır ve sütun ortalamalarını hesapladınız, en başarılıları buldunuz, puanları ölçeklendirdiniz ve bir özet raporu oluşturdunuz. Sırada: bu yardımcı programları yeniden kullanılabilir bir yardımcı sınıf içinde toplamak var.
Sıkça Sorulan Sorular
“2B Mini Proje: Not Defteri” dersi ücretsiz mi?
Evet — “2B Mini Proje: Not Defteri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 6 dersten oluşur.
“2B Mini Proje: Not Defteri” dersinde ne öğreneceğim?
Mini proje: 2B int matrisi kullanarak küçük bir not defteri oluşturun. Hizalı tablolar yazdırın, öğrenci ve ödev başına ortalamaları hesaplayın, en başarılı öğrencileri bulun, notları ölçeklendirin v… Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Java Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 6 dersinin 4. dersidir.
“2B Mini Proje: Not Defteri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- 2B Dizilerin Temelleri ve İç İçe Dolaşma
- Düzensiz Diziler ve Tablo Biçimlendirme
- Satır/Sütun Maksimumları, Transpoz ve Biçimlendirme
- 2B Mini Proje: Not Defteri
- Yardımcı Sınıf Olarak 2B Araçlar (Yeniden Düzenleme)
- 2B Veri Temizleme ve Doğrulama