مادة CS 110، جافا 1 برمجة 1 (Programming I) هي اول مادة برمجة حقيقية تاخذينها في كلية علوم الحاسب والمعلومات بجامعة الاميرة نورة بنت عبدالرحمن. هذي المادة هي البوابة اللي تدخلك عالم البرمجة من اوسع ابوابه، وكل مادة بعدها مبنية على اللي تتعلمينه هنا: البرمجة كائنية التوجه، هياكل البيانات، هندسة البرمجيات، وحتى مشروع التخرج. لو بنيتي اساسك صح في CS 110، باقي المشوار يصير اسهل بكثير.
المادة تستخدم لغة جافا (Java) كلغة تدريس. ما تحتاجين اي خبرة برمجية سابقة لانها تبدا معك من الصفر. بس لازم تكونين مستعدة تتمرنين كثير لان البرمجة مهارة عملية قبل ما تكون نظرية.
📋 ملخص سريع
- رمز المادة: CS 110 / عال 110، برمجة 1 (Programming I)
- الساعات المعتمدة: 3 ساعات
- المتطلب السابق: لا يوجد — هذي اول مادة برمجة في الخطة
- اللغة المستخدمة: Java
- المستوى: المستوى الثاني في خطة علوم الحاسب
- يقود الى: CS 111 (برمجة 2، البرمجة كائنية التوجه)
- المواضيع الاساسية: المتغيرات، الشروط، الحلقات، الدوال، المصفوفات، النصوص
ليش مادة CS 110 جافا 1 مهمة لمسارك؟
قبل ما ندخل في شرح المواضيع، خلينا نفهم ليش هذي المادة اساسية في مسارك الاكاديمي بجامعة الاميرة نورة:
- البوابة لكل مواد البرمجة: ما تقدرين تاخذين CS 111 او اي مادة برمجية ثانية بدون ما تعدين هذي المادة
- تبني طريقة تفكيرك البرمجي: مو بس تتعلمين syntax، تتعلمين كيف تحللين مشكلة وتحولينها لكود يشتغل
- اساسيات تنفعك في اي لغة: المفاهيم اللي تتعلمينها — متغيرات، شروط، حلقات، دوال — موجودة في كل لغات البرمجة بدون استثناء
- اساس مشروع التخرج: كل شيء تبنينه لاحقا يعتمد على اللي تفهمينه هنا
- الدرجة تفرق: كثير من الشركات تسال عن معدلك في مواد البرمجة الاساسية
1. المتغيرات وانواع البيانات (Variables & Data Types)
اول شيء تتعلمينه بعد ما تجهزين بيئة التطوير (Eclipse او IntelliJ) هو التعامل مع المتغيرات. المتغيرات هي “صناديق” تخزنين فيها بيانات مختلفة.
اول برنامج لك بجافا
// اول برنامج - يطبع رسالة ترحيب
public class HelloWorld {
public static void main(String[] args) {
System.out.println("مرحبا بالعالم!");
System.out.println("انا اتعلم جافا في CS 110");
}
}
انواع البيانات الاساسية
// انواع البيانات الاساسية (Primitive Types)
int age = 20; // عدد صحيح
double gpa = 4.75; // عدد عشري
char grade = 'A'; // حرف واحد
boolean passed = true; // قيمة منطقية (true او false)
String name = "نورة"; // نص (سلسلة محارف)
العمليات الحسابية
int x = 10, y = 3;
System.out.println(x + y); // 13 - جمع
System.out.println(x - y); // 7 - طرح
System.out.println(x * y); // 30 - ضرب
System.out.println(x / y); // 3 - قسمة صحيحة (مو 3.33!)
System.out.println(x % y); // 1 - باقي القسمة
قراءة مدخلات من المستخدم
import java.util.Scanner;
public class InputExample {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("ادخلي اسمك: ");
String name = input.nextLine();
System.out.print("ادخلي عمرك: ");
int age = input.nextInt();
System.out.println("مرحبا " + name + "! عمرك " + age);
}
}
⚠️ خطا شائع: القسمة الصحيحة
لما تقسمين int / int النتيجة تكون int، يعني 10 / 3 = 3 مو 3.33. لو تبين النتيجة عشرية، لازم واحد من الارقام يكون double:
10.0 / 3 او (double) 10 / 3
هذا من اكثر الاخطاء اللي تخسرين فيها درجات في الاختبار.
💡 نصيحة للمبتدئات
لا تحاولين تفهمين كل شيء في السطر الاول (public static void main). في هذي المرحلة، احفظيه كقالب وركزي على ما يكون داخل الـ main. راح تفهمين كل كلمة فيه لما توصلين CS 111.
2. الشروط في CS 110، Selection Statements
تبين برنامجك ياخذ قرارات؟ جمل الشرط (if/else/switch) تخلي البرنامج يتصرف بشكل مختلف حسب الموقف.
جملة if / else
// حساب التقدير بناء على المعدل
double gpa = 3.8;
if (gpa >= 4.5) {
System.out.println("ممتاز");
} else if (gpa >= 3.75) {
System.out.println("جيد جدا");
} else if (gpa >= 2.75) {
System.out.println("جيد");
} else if (gpa >= 2.0) {
System.out.println("مقبول");
} else {
System.out.println("راسبة");
}
جملة switch
// تحديد اسم اليوم من رقمه
int day = 1;
switch (day) {
case 1: System.out.println("الاحد"); break;
case 2: System.out.println("الاثنين"); break;
case 3: System.out.println("الثلاثاء"); break;
case 4: System.out.println("الاربعاء"); break;
case 5: System.out.println("الخميس"); break;
default: System.out.println("عطلة نهاية الاسبوع");
}
الشروط المتداخلة (Nested if)
// التحقق من اهلية التسجيل
int credits = 15;
double gpa = 3.0;
if (credits >= 12) {
if (gpa >= 2.0) {
System.out.println("مؤهلة للتسجيل الكامل");
} else {
System.out.println("مؤهلة للتسجيل المحدود");
}
} else {
System.out.println("غير مؤهلة - اكملي الساعات");
}
⚠️ خطا شائع: = مقابل ==
المقارنة تستخدم == (يساوي) وليس = (اسناد). لو كتبتي if (x = 5) بدل if (x == 5) جافا راح تعطيك خطا. هذا خطا يتكرر كثير في اول اختبار.
واجب الشروط صعب عليك؟
كثير من طالبات CS 110 يطلبون مساعدتنا في واجبات الشروط والشروط المتداخلة. ارسلي الواجب على واتساب ونرد عليك بعرض سعر خلال ساعة.
ارسلي واجبك على واتساب3. الحلقات في جافا 1، Loops
تبين تكررين عملية 100 مرة بدون ما تكتبين 100 سطر؟ الحلقات هي الحل.
حلقة for
// طباعة الارقام من 1 الى 10
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
حلقة while
// جمع ارقام من المستخدم حتى تدخل 0
Scanner input = new Scanner(System.in);
int sum = 0;
int number;
System.out.print("ادخلي رقم (0 للانهاء): ");
number = input.nextInt();
while (number != 0) {
sum += number;
System.out.print("ادخلي رقم (0 للانهاء): ");
number = input.nextInt();
}
System.out.println("المجموع = " + sum);
حلقة do-while
// قائمة خيارات تتكرر حتى تختار الخروج
Scanner input = new Scanner(System.in);
int choice;
do {
System.out.println("1. عرض الدرجات");
System.out.println("2. حساب المعدل");
System.out.println("3. خروج");
System.out.print("اختيارك: ");
choice = input.nextInt();
} while (choice != 3);
الحلقات المتداخلة (Nested Loops)
الحلقات المتداخلة من اصعب الاجزاء في CS 110 عند كثير من الطالبات. الحيلة انك تفهمين ان الحلقة الداخلية تنفذ بالكامل مع كل دورة من الحلقة الخارجية.
// طباعة مثلث من النجوم
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("* ");
}
System.out.println();
}
// النتيجة:
// *
// * *
// * * *
// * * * *
// * * * * *
ℹ️ متى تستخدمين كل حلقة؟
- for: لما تعرفين عدد التكرارات مسبقا (مثلا: كرري 10 مرات)
- while: لما ما تعرفين عدد التكرارات وتعتمدين على شرط (مثلا: كرري حتى المستخدم يدخل 0)
- do-while: مثل while بس تضمنين التنفيذ مرة واحدة على الاقل (مثلا: القوائم)
4. الدوال في جافا 1، Methods
كل ما تحاولين تنظمين كودك وتلاقينه فوضى؟ الدوال هي الحل. بدل ما تكتبين كل شيء في main، تقسمين البرنامج لاجزاء صغيرة، كل جزء يسوي مهمة واحدة.
تعريف واستدعاء الدوال
// دالة تحسب مربع رقم
public static int square(int n) {
return n * n;
}
// دالة تحسب الحد الاقصى بين رقمين
public static int max(int a, int b) {
if (a > b) {
return a;
} else {
return b;
}
}
نستدعي هذي الدوال من داخل main:
public static void main(String[] args) {
int result = square(5); // result = 25
int bigger = max(10, 20); // bigger = 20
System.out.println("مربع 5 = " + result);
System.out.println("الاكبر = " + bigger);
}
دوال بدون قيمة راجعة (void)
// دالة تطبع خط فاصل
public static void printLine() {
System.out.println("========================");
}
// دالة ترحب بالمستخدمة
public static void greet(String name) {
System.out.println("مرحبا يا " + name + "!");
}
Method Overloading (تعدد الدوال بنفس الاسم)
جافا تسمح لك تعرفين اكثر من دالة بنفس الاسم بشرط ان البارامترات تكون مختلفة:
public static int add(int a, int b) {
return a + b;
}
public static double add(double a, double b) {
return a + b;
}
public static int add(int a, int b, int c) {
return a + b + c;
}
ℹ️ الفرق بين Parameter و Argument
- Parameter (معامل): المتغير في تعريف الدالة، مثلا
int nفيsquare(int n) - Argument (وسيط): القيمة الفعلية لما تستدعين الدالة، مثلا
5فيsquare(5)
هذا الفرق يجي في الاختبارات النظرية كثير!
واجب الدوال او الحلقات محيرك؟
واجبات الدوال والحلقات المتداخلة من اكثر الواجبات اللي تطلب فيها طالبات CS 110 مساعدة. ارسلي لنا تفاصيل الواجب ونحله لك مع شرح كامل.
تواصلي معنا عبر واتساب5. المصفوفات (Arrays)
المصفوفات تخليك تخزنين مجموعة بيانات من نفس النوع في متغير واحد. بدل ما تعرفين 30 متغير لدرجات 30 طالبة، تعرفين مصفوفة وحدة.
المصفوفات احادية البعد (1D Arrays)
// انشاء مصفوفة وتعبئتها
int[] grades = {85, 92, 78, 95, 88};
// انشاء مصفوفة فارغة
double[] scores = new double[5]; // 5 عناصر كلها 0.0
// الوصول للعناصر (الفهرس يبدا من 0)
System.out.println(grades[0]); // 85 - اول عنصر
System.out.println(grades[4]); // 88 - اخر عنصر
// المرور على كل العناصر
for (int i = 0; i < grades.length; i++) {
System.out.println("الطالبة " + (i+1) + ": " + grades[i]);
}
خوارزميات شائعة على المصفوفات
int[] numbers = {45, 12, 78, 34, 90, 23};
// ايجاد المجموع والمتوسط
int sum = 0;
for (int i = 0; i < numbers.length; i++) {
sum += numbers[i];
}
double average = (double) sum / numbers.length;
// ايجاد اكبر قيمة
int max = numbers[0];
for (int i = 1; i < numbers.length; i++) {
if (numbers[i] > max) {
max = numbers[i];
}
}
المصفوفات ثنائية البعد (2D Arrays)
// جدول درجات: 3 طالبات × 4 مواد
int[][] grades = {
{85, 90, 78, 92}, // الطالبة الاولى
{88, 76, 95, 80}, // الطالبة الثانية
{70, 85, 88, 91} // الطالبة الثالثة
};
// حساب معدل كل طالبة
for (int i = 0; i < grades.length; i++) {
int studentSum = 0;
for (int j = 0; j < grades[i].length; j++) {
studentSum += grades[i][j];
}
double avg = (double) studentSum / grades[i].length;
System.out.println("الطالبة " + (i+1) + ": " + avg);
}
⚠️ خطا شائع: ArrayIndexOutOfBoundsException
لو عندك مصفوفة بحجم 5، اخر فهرس هو 4 (مو 5). كثير من الطالبات يكتبون i <= array.length بدل i < array.length ويطيح البرنامج. تذكري: الفهرس يبدا من 0 وينتهي عند length - 1.
6. التعامل مع النصوص (String)
النصوص في جافا مو مثل الانواع الاساسية (int, double)، النص كائن (Object) وعنده مجموعة دوال جاهزة تقدرين تستخدمينها.
دوال String الاساسية
String name = "Princess Nourah University";
// طول النص
System.out.println(name.length()); // 26
// تحويل لحروف كبيرة وصغيرة
System.out.println(name.toUpperCase()); // PRINCESS NOURAH UNIVERSITY
System.out.println(name.toLowerCase()); // princess nourah university
// استخراج جزء من النص
System.out.println(name.substring(0, 8)); // Princess
// البحث عن نص
System.out.println(name.contains("Nourah")); // true
System.out.println(name.indexOf("Nourah")); // 9
مقارنة النصوص
String s1 = "Java";
String s2 = "java";
// الطريقة الصح لمقارنة النصوص
System.out.println(s1.equals(s2)); // false
System.out.println(s1.equalsIgnoreCase(s2)); // true
// لا تستخدمين == لمقارنة النصوص!
دمج وتقسيم النصوص
// دمج النصوص
String first = "علوم";
String second = "الحاسب";
String full = first + " " + second; // "علوم الحاسب"
// تحويل رقم لنص
int num = 42;
String text = String.valueOf(num); // "42"
// تحويل نص لرقم
String str = "100";
int value = Integer.parseInt(str); // 100
🔴 مقارنة النصوص بـ equals مو ==
هذا من اكثر الاخطاء اللي تجي في اختبارات CS 110. لما تقارنين نصوص لازم تستخدمين .equals() او .equalsIgnoreCase() وما تستخدمين ==. السبب ان == تقارن المرجع (reference) مو المحتوى.
اخطاء شائعة في CS 110
هذي اكثر الاخطاء اللي تخسر فيها الطالبات درجات في الاختبارات والواجبات:
الاخطاء الاكثر تكرارا في CS 110
- نسيان الفاصلة المنقوطة
;، جافا ما تسامح في هذا ابدا - = بدل == في الشروط،
if (x = 5)غلط، الصحif (x == 5) - القسمة الصحيحة،
10 / 3يعطي3مو3.33، حولي واحد منهم لـ double - فهرس المصفوفة يبدا من 0 مو من 1، واخر فهرس هو
length - 1 - عدم اغلاق الاقواس
{}، خصوصا في الحلقات والشروط المتداخلة - == لمقارنة النصوص، الصح
.equals()مثل:name.equals("نورة") - نسيان
breakفي switch، بدون break الكود يكمل لكل الحالات اللي بعده - Infinite loop، حلقة ما تنتهي لانك نسيتي تحدثين المتغير داخل الحلقة
- نسيان
returnفي الدالة، لو الدالة نوعها مو void لازم ترجعين قيمة nextInt()قبلnextLine()، Scanner ما تقرا السطر الجديد بعد nextInt وتسبب مشاكل
خطة مذاكرة فعالة لمادة CS 110
خطوات المذاكرة الفعالة
- راجعي سلايدات المحاضرة اول باول، لا تراكمين. كل محاضرة مبنية على اللي قبلها
- طبقي كل مثال بنفسك، افتحي Eclipse او IntelliJ واكتبي الكود وشغليه. لا تكتفين بالقراءة
- حلي تمارين اضافية، لو تبين تمارين اكثر اطلعي على دليلنا الشامل لتعلم جافا
- اعيدي حل تمارين اللاب بدون ما تشوفين الحل، هذي من افضل الطرق تثبتين المعلومة
- حلي اختبارات سابقة، اذا لقيتي اختبارات سنوات سابقة، هذي افضل طريقة تجهزين نفسك
- تمرني تكتبين كود على ورق، في الاختبار ما فيه compiler يصحح لك. اقرئي المزيد عن استراتيجيات التحضير للاختبارات
- سوي مجموعة دراسة، اشرحي لزميلتك واطلبي منها تشرح لك. الشرح يثبت الفهم
- لا تتركين السؤال يتراكم، اذا ما فهمتي نقطة، اسالي الدكتورة او الـ TA فورا
💡 نصيحة ذهبية للاختبار
في سؤال تتبع الكود (Trace)، ارسمي جدول للمتغيرات وحدثي القيم مع كل سطر. هذي الطريقة تقلل الاخطاء بشكل كبير وتوفر وقت. الدكتورة تحب تشوف شغلك مرتب.
ربط المادة بمسارك الاكاديمي
بعد ما تنهين CS 110 بنجاح، المادة التالية هي CS 111 (برمجة 2) اللي تتعلمين فيها البرمجة كائنية التوجه (OOP): الكلاسات والكائنات والوراثة وتعدد الاشكال. كل شيء تعلمتيه في CS 110 راح تستخدمينه هناك بشكل مباشر.
بعد CS 111 تدخلين عالم هياكل البيانات (Data Structures) وين تتعلمين تنظمين البيانات بطرق ذكية مثل القوائم المتصلة والاشجار والرسوم البيانية.
كمان مادة CS 110 تفيدك في مواد ثانية ممكن ما تتوقعينها: قواعد البيانات، الشبكات، الذكاء الاصطناعي — كلها تحتاج اساس برمجي قوي.
لو تبين شرح اعمق لاساسيات جافا ومفاهيم اضافية، اطلعي على دليلنا الشامل لتعلم جافا. ولو تحسين انك تحتاجين مساعدة شخصية في البرمجة، تعرفي على خدمة الدروس الخصوصية في البرمجة اللي نقدمها.
خلاصة
مادة CS 110 مو مادة صعبة، بس تحتاج ممارسة مستمرة. البرمجة مثل اي مهارة عملية: كل ما تمرنتي اكثر، كل ما صرتي احسن. لا تكتفين بمشاهدة الشرح او قراءة السلايدات — افتحي بيئة التطوير واكتبي كود كل يوم حتى لو 20 دقيقة.
تذكري:
- المتغيرات هي صناديق تخزنين فيها بيانات
- الشروط تخلي برنامجك ياخذ قرارات
- الحلقات تكرر عمليات بدون تكرار في الكود
- الدوال تنظم كودك وتخليه قابل لاعادة الاستخدام
- المصفوفات تخزن مجموعات بيانات بكفاءة
- النصوص تتعاملين معاها بدوال جاهزة مثل
equalsوsubstring
لو فهمتي هذي المفاهيم الستة وتمرنتي عليها كويس، CS 110 ما راح تكون عقبة، بل راح تكون البداية الصحيحة لمشوارك في علوم الحاسب بجامعة الاميرة نورة.
واجب CS 110 ضاغطك والديدلاين قريب؟
فريقنا متخصص في مساعدة طالبات علوم الحاسب بجامعة الاميرة نورة. ارسلي لنا الواجب على واتساب وراح نرد عليك بعرض سعر خلال ساعة — شرح وحل كامل.
ارسلي واجبك الان