اذهب إلى المحتوى

Wael Aljamal

الأعضاء
  • المساهمات

    6975
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    218

كل منشورات العضو Wael Aljamal

  1. أرجو إرفاق المشروع مع لقطة شاشة للخطأ لديك، من الصعب معرفة السبب. val button = findViewById<Button>(R.id.play) button.setOnClickListener { _ -> //do what you want after click inside here } هذا مثال لاستعمال الزر مع الواجهة التالية (عليك جلب Reference للعنصر) من خلال استخدام محدد وصول الموارد R <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" tools:context=".FragmentMain"> <LinearLayout android:id="@+id/container_frag" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_marginLeft="50dp" android:layout_marginRight="50dp" > <Button android:id="@+id/play" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Play" /> <Button android:id="@+id/about" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="About" /> </LinearLayout> وهذا مع استخدام الدالة findViewById أو يمكنك الوصول للعناصر مباشرة لكن عليك تضمين المكتبة التالية: import kotlinx.android.synthetic.main.activity_main.* يصبح الاستدعاء هكذا: override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) welcomeMessage.text = "Hello Kotlin!" } ونضيف في Gradle الخارجية: apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' يمكنك البحث عن الموضوع التالي: Kotlin Android Extensions: Say goodbye to findViewById
  2. لاستقبال الدخل من المستخدم نعتمد على الصنف Scanner والذي يحوي آلية للقراءة من لوحة المفاتيح تجميع الأعداد الزوجية و الفردية كل منها في متغير خاص (عليك إكمال جزء الطرح) لمعرفة موقع أصغر قيمة، علينا أولا معرفة ما هي أصغر قيمة و عندما نجدها نحتفظ بموقعها أرجو محاولة كتابة البرنامج بنفسك أولا import java.util.Scanner; class bigest { public static void main (String[] args) { Scanner input = new Scanner(System.in); // قراءة دخل المستخدم من لوحة المفاتيخ System.out.println ("Enter 10 Numbers"); // طلب إدخال 10 قميم int numbers[] = new int[10]; // تعريف مصفوفة ل 10 عناصر for (int i = 0; i < 10 i++) { System.out.println ("Enter number " + i + ":"); numbers[i] = input.nextInt(); // قراءة القيم المدخلة بالترتيب } for (int temp : numbers){ System.out.print(temp + "\t"); // طباعة القيم مع فواصل فراغات } int EvenSum = 0; int OddSum = 0; for (int temp : numbers){ if (temp % 2 == 0) { // عدد زوجي لأن باقِ قسمتعه على 2 هو 0 EvenSum += temp; }else { // فردي OddSum += temp; } } System.out.println("Even= " + EvenSum); System.out.println("Odd= " + OddSum); int MinValue = numbers[0]; // نفترض أصغر عدد هو الأول int MinValueIndex = 0; for (int i = 1; i < 10 i++) { if (numbers[i] < MinValue ){ MinValue = numbers[i]; MinValueIndex = i; } } System.out.println("Min Value index is:" + MinValueIndex); } }
  3. السؤال ليس صعبا، هل بدأت كتابة البرنامج لنساعدك بشكل أفضل؟
  4. لمعرفة فيما إذا كان الموقع يستخدم word press theme يمكنك استخدام الخدمة WordPress Theme Detector يتوجب عليك فقط وضع رابط الموقع و الانتظار بضع ثواني حالما يتم فحصه. موقع موسوعة يستخدم وورد بريس و اسم الثيمة هو Fast Theme تكلفة إنشاء الموقع متغيرة حسب قوة الاستضافة و مساحة التخزين، يمكنك عرض المشروع في مستقل، وبعد تلقِ العروض سيكون لك فكرة عن التكلفة.
  5. الدالة addslashes التي تضيف escape letter قبل " الدالة substr لقص آخر محرفين من السلسلة والناتجين من الحلقة الفراغ و , أي " ," <!DOCTYPE html> <html> <body> <?php $arr1 = ["https://google.com", "https://facebook.com", "https://twitter.com"]; $arr2 = "\"["; foreach ($arr1 as $str) { $arr2 .= addslashes('"'. $str . '"' . ', '); } $arr2 = substr($arr2, 0, -2); $arr2 .= "]\""; echo $arr2; ?> </body> </html>
  6. يجب تفعيل نظام ويندوز عن طريق الترخيص، كشراء رخصة من شركة مايكروسوفت ثم تثبيتها في النظام لديك
  7. أحيانا تحدث المشكلة بسبب الذاكرة cache الذاكرة المؤقتة، الحل : عمل re-build للمشروع و clean وفي حال لم تعمل من قائمة file نختار -> invalidate cache and restart في حال لم تُحل المكشلة، بأي لغة برمجة تكتب التطبيق؟ هل يمكنك تضمين لقطة للشاشة لواجهة المشروع.
  8. أهلا، هل يمكنك تقديم مثال كملف إكسل؟ هل كل رقم في خلية منفصلة أم ماذا؟
  9. ماهي لغة البرمجة أو التقنية التي تعمل بها؟
  10. يوجد مشكلة في الصورة أرجو إعادة التعليق
  11. أولا ما هي الأعداد الأولية؟ هي أي عدد أكبر من 1 وتقبل القسمة على عددين هما 1 و العدد نفسه. كيفية التأكد من باقِ القسمة في ++C؟ (يقبل العدد X القسمة على Y إذا كان باقِ قسمته مساوياً للصفر) mod => % x % y = z 4 % 2 = 0 5 % 2 = 1 .. لاختبار العدد فيما إذا كان أولي أم لا علينا التأكد من أنه لا يقبل القسمة على أي عدد ضمن المجال من 2 إلى العدد نفسه - 1 bool isPrime(int x) { for (int i=2; i < x ;i++){ if (x % i == 0){ // يقبل القسمة return false; // غير أولي } } return true; // عدد أولي لأنه لا يوجد عدد يقبل القسمة عليه } يمكنك استدعاء هذه الدالة في البرنامج الرئيسي الدالة Main وتمرير القيمة X بعد إدخالها من المستخدم بتعليمة cin أو استخدام نفس المنطق ضمن الدالة main مباشرة
  12. أهلا، عليك بالتدرب أكثر و مراجعة الشروحات وكتابة المزيد من الأكواد, وقم بتقسيم البرنامج لعدة خطوات وثم نفذ كل منهم على حدى.
  13. quantization: وتعني التكميم - جعل قيم مستمرة لدالة ما تأخذ قيم متقطعة، جعل البيانات تبدو مثل كميات. مثل درجة الحرارة والتي من الممكن أن تأخذ أي رقم عشري غير منتهِ بين مثلا إذا كان لدينا مسألة فيها درجة الحرارة بين -100 إلى 100 فالقيم الممكنة هي جميع القيم العشرية ضمن المجال المذكرة ومنها 1.5566 و 88 و 12.1547- و 33.33333 .. لنفرض أننا نريد القيام بتكميم قيم درجات الحرارة حيث نقوم بالتقسيم إلى فئات, مثلا جميع القيم يتم تقريبها إلى أقرب درجة صحيحة فتصبح القيم السابقة على الترتيب : 2 و 88 و -12 و 33. في حال أردنا التقريب لأقرب عدد زوجي مثلا ستكون النتيجة : 2 و 88 و 12 و 34 في حال أردنا التقريب لأقرب عدد فردي مثلا ستكون النتيجة : 1 و 87 و 11 و 33 يمكننا أيضا تقسيم المجال الكبير لمجالات طولها 5 مثلا ..(سيكون التقريب لأقرب مضاعف للعدد5) وغيرها.. كما يمكن الاعتماد على (قيمة ضمن مجال - تكرارها) مثلا 1و2و2و2و2و3و3و3و5و8و8و 9 سيكون لدينا القيم التي في المجال 1-4 هي 8 ونعتبرها أول مجموعة أو مجموعة مكممة 1 -> 8 المجموعة 2 -> 3 (مجالها 5 - 8), المجموعة 3 -> 1 ______________________ decoding: فك الترميز - أحيانا نكتب البيانات بصيغة مختلفة عن ترميزها الحقيقي بهدف تشفيرها أو ضغطها (تقليص حجمها) أو نعطي لنفس الرمز القدرة على التعبير لأكثر من قيمة أو العكس (نعرف القصد من متحولات عامة) مثلا في لوحة المفاتيح سيعامل الحاوسب الرقم 2 و ٢ وهما رمزان مختلفان ولهما نفس القيمة والتي هي اثنان. برمجيا، يكون فك الترميز باستبدال مجموعة بيانات بمجموعة بيانات أخرى باستخدام شيئ يشبه قاموس اللغات أي عندما ترى 0010 استبدلها ب 1101 مثلا .. باختصار: فك الترميز هو عملية تحويل البيانات من شكل لآخر. _______________________ في حال وجود أمثلة محددة تتطلب الشرح أرجو نشرها، ليكون الشرح أدق و أفضل.
  14. إن هذا البرنامج سهل وعليك البداية بالاعتماد على نفسك و التدرب ومن غير المنطقي طلب حل الوظائف لك. سأشرح بعض الخطوات المفيدة و عليك إكمال البرنامج بنفسك. المطلوب برنامج يجمع 10 أعداد. المتطلبات: متغير مؤقت يحمل القيمة التي أدخلها المستخدم متغير دائم يحمل قيمة المجموع متغير يحمل عدد الأعداد التي يجب إدخالها من المستخدم الخطوات: طباعة رسالة تفيد المستخدم بتنبيهه ليدخل 10 أعداد ادخال الأعداد ضمن حلقة while حيث يكون عداد الحلقة هو متغير قيمته الافتراضية 10 و تنقص مع كل تكرار ضمن حلقة while ندخل القيمة اللحظية التي أدخلها المستخدم و نضيفها لمتير المجموع انتهاء الحلقة - طباعة النتيجة تهيئة المتحولات int counter = 10; int temp = 0; int sum = 0; طلب ادخال الأرقام cout << "enter 10 number s "; ادخال الارقام و حساب المجموع whiel counter > 0 cin temp sum = sum + temp counter = counter -1 طباعة النتيجة cout << sum
  15. طبيعة الامتحان: بعد اتمامك للدورة، سيكون عليك التواصل معنا من خلال مركز مساعدة حسوب لتحديد موعد امتحان وسيكون على الشكل التالي: اجراء محادثة صوتيّة لمدة 30 دقيقة يطرح المدرّب عليك أسئلة متعلّقة بالدورة والأمور التي نفّذتها خلالها. يحدد لك المدرّب مشروعًا مرتبطًا بما قمت به أثناء الدورة لتنفيذه خلال فترة محددة تتراوح بين أسبوع الى أسبوعين. اجراء محادثة صوتيّة أخرى لمدّة 30 دقيقة يناقش بها مشروعك وما نفذته وتطرح أسئلة خلالها. ان سارت على جميع الخطوات السابقة بشكل صحيح، تحصل على الشهادة أو يرشدك المدرّب لأماكن القصور ويطلب منك تداركها ثم التواصل معنا من جديد. بعد الانتهاء من الدورة، يمكنك البدء بتقديم عروض العمل على منصات العمل الحر مثل مستقل للفترة الأولى لتكتسب بعض الخبرة، ثم بعد فترة تقوم بالتقديم على الشركات في حال أحببت ذلك مع تقديم جميع الأعمال التي قمت بها خلال الدورة و المشاريع الخاصة. بعد اجتيازك الامتحان ستتم المتابعة معك خطوة بخطوة وتوضيح جميع الطرق التي ستسلكها للحصول على عمل. حيث أحد البنود التي توفرها لك الأكاديمية عند شرائك دورة هو: إرشاد وتوجيه أثناء فترة بحثك عن عمل: هذا هو الهدف الأساسي لجميع دورات أكاديميّة حسوب. بعد إتمامك للدورة سيتم الإطّلاع على سيرتك الذاتية من قبل المختصّين لدينا وتقديم ارشادات مخصّصة لك لتحسينها وكذلك على ملفّك الشخصي في مواقع العمل الحر. يوجد بعض الاستفسارات عن الدورة يمكنك مراجعتها من قسم الشهادات المتخصصة بالتوفيق
  16. يمكنك طرح مشروع على مستقل، او تصفح مشاريع مشابهة و النظر لمتوسط سعر العروضو المجال الذي قام صاحب المشروع بتحديده.من بعد طرح المشروع واستقبال العروض و النقاش مع المستقلين بالكلفة، يمكنك عندها تحديد مجال للسعر.. تسعير خرائط غوغل: بالنسبة لخرائط غوغل، تعتمد على الخواص التي تقوم بتفعيلها في api key.. بعض تكون مجانية لعدد محدد من الطلبيات Queries و من ثم كل X طلبية تكلف Y$. يمكنك تصفح الاسعار من صفحة غوغل ماب prices. إضافة غوغل مابس لمشروع ما، و الكلفة التي يجب وضعها من قبل المستقل يمكن معرفتها كما سبقت و طرحت. التسعير يختلف من شخص لآخر و حسب تكلفة المعيشة في بلده.
  17. هذه التعليمة تعرض المكتبات و الحزم البرمجية التي تم تثبيتها لديك وبعد التأكد من وجود المكتبة المطلوبة يمكنك استدعائها و تنقيذها. أرجو عرض لقطة شاشة لما يظهر لديك بعد تنفيذ كل تعليمة. شكرا لك
  18. حتى تحفظ بيانات مستخدم ليعاود تسجيل الدخول مرة ثانية و تتأكد من أنه نفسه، يمكنك حفظ بياناته في cookies في المتصفح، حيث تتعرف عليه. و على كل حال يمكنك أن تطلب منه بيانات ضرورية عند التسجيل الأول له مثل اسم مستخدم في الموقع أو رقم هاتف لتتعرف عليه. عند فتحه للموقع مرة أخرى، تقوم بعمل استعلام لقاعدة البيانات، تتتفحص القيم الفارغة و التي لم يدخلها، ثم تظهر له إشعار بأنه - كما ذكرت - يفضل تعبئة باقِ البيانات.. تعرض له إشعار مع رابط تحويل لصفحة إدخال البيانات. بعد دخوله لهذه الصفحة، يمكنك تعبئة القيم التي سبق وأدخلها فيها، ومن ثم يتابع هو تعبئة باقِ البيانات وأنت ترسل استعلام للقاعدة عندها بعمل تحديث و ترسل البيانات الإضافية.
  19. في الجزء التالي: // To Erase The Elemets void Erase() { if (CheckIsEmpety()) { cout << "Stack Is Empety"; } else { // Create Temporary Pointer Points To *Top Node* Temp = Top;_____________________________________________ هنا // To Move Top A Step Down Top = Top->Next; // Make The Temporary Pointer NULL Temp = Temp->Next = NULL; // Then Delete Temp delete Temp; } } يجب أن نشير للعقدة من عنوانها في الذاكرة وليس نسخ قيمتها كما هو الحال في الشيفرة لديك. كما أن حذف العقدة Temp (لديك في نف الشيفرة) هو غير ضروري لأنه متغير مؤقت ضمن الجزء else أي سوف يتم التخلص منه تلقائيا. - يجب أخذ عنوان Top& عندتعريف temp و من ثم حذف temp سيعمل بشكل صحيح.
  20. أهلا عبد الواحد، أعتقد أن حل المشكلة كما تفضل الزملاء، لم يتم التعرف على توابع وورد بريس، في حال لم تنفع الحلول أرجو إعادة التعليق. شكرا لك
  21. نمرر بداية السلسلة للدالة، ونختبر في كل مرة وجود عقدة فارغة أو لا، ثم نختبر قيمة العقدة و نطبق المنطق المطلوب ومن ثم نمرر العقدة التالية للدالية كاستدعاء عودي/تراجعي. Public static void PositiveNegative(Node<int> p) { if (p == null) return; if (p.value > 0) p.value = 1; else if (p.value < 0) p.value = -1; PositiveNegative(p.GetNext()); } لمعرفة أكبر قيمة: نريد تمرير قيمة تحمل أكبر قيمة و لتكن Max_Value، نعيدها عند نهاية السلسلة لأننا عندها سيكون لدينا أكبر قيمة بعد تطبيق منطق الخوارزيمة. في كل خطوة نقارن بين القيمة التي لدينا و القيمة الحالية للعقدة ونسند القيمة الحالية ل Max_Value في حال كانت أكبر.. نستدعي الدالة عوديا و نمرر لها الوسطاء، العقدة التالية و أكبر قيمة حققناها للآن. Public static int PositiveNegative(Node<int> p, int Max_Value) { if (p == null) return Max_Value; if (p.value > Max_Value) Max_Value = p.value; return PositiveNegative(p.GetNext() , Max_Value); } أرجو الاعتماد على نفسك في حل المشكلات البرمجية وعدم الاعتماد على الآخرين.
  22. كيف نتفحص الموقع بحثا عن نوعه و الملفات المستخدمة؟ نضغط F12 في لوحة المفاتتيح و تظهر لوحة المطورين، نختار منها التبويب Application ثم نذهب للجزء الأيسر و نستعرض بنية المشروع لا نرى أي دلالات لوجود قوالب وورد بري، فقط مكتبات جافاسكربت و CSS، يمكنك تفحص وجود وورد بريس من الخدمة wpthemedetector والتي تخبرك في حال وجود ثيمة، ربما هذا الموقع مبرمج بثيمة خاصة لن تجدها في المتاجر. بالنسبة للتكلفة تختلف بين مطور و آخر، وحسب بلد المعيشة و ماذا تريد إضافات، يمكنك طرح مشروع على مستقل و تلقِ العروض وعندها ستعرف الكلفة التقريبية وأيها الأرخص
  23. طالما ذكرتِ "لأصبح شخص مختص بتصميم الواجهات" فهنا علينا تعلم جميع التقنيات و المهارات اللازمة لعمل التصميم، بشكل عام يمكننا التفريق بين: التصميم بنفسه: أي عمل الواجهة وما تحويه من عناصر و تحديد الألوان و أشكال الأزرار .. (لا تحتاج لبرمجة) برمجة الواجهات والتي تكون في مواقع الويب أو تطبيقات الهاتف المحمول. (تحتاج لتعلم التقنية الموافقة لبيئة العمل المستهدفة) إن استخدام البرامج الجاهزة التي تقدم Blocks جاهزة ليس طريقة عملية بشكل كبير (أحيانا تكون صعبة التعديل)، بل يجب أيضا تعلم أساسيات مناسبة لطبيعة الملفات التي تنتجها هذه البرامج، كما قُلت في حال كان خرج البرنامج ملفات CSS واحتاجت لتعديل، فيجب عندها معرفة CSS. يوجد برامج خاصة بالتصميم مثل adobeXD وغيره تعطي دعم كبير للمصمم وتجعله يتحكم بالتفاصيل. أما في حال كنت تريدين العمل بطريقة أسهل في البرمجة (تصميم المواقع) يمكن تعلم إضافة لأساسيات CSS إطار عمل Bootstrap والذي يحوي تنسيقات مبرمجة مسبقا تسهل و توحد طريقة بناء الواجهات.
  24. إن list هي مصفوفة أعداد من النوع int أي يجب أن تكتب الأعداد بدون " اقتباس ويفصل بينها فواصل. int[] list ={1,2,5,7,9,15}; ويوجد أخطا في طريقة كتابة تابع البحث الثنائي حيث يجب أن تكون بالطريقة التالية: import java.util.*; import java.lang.*; import java.io.*; class Main { public static int executions = 0, comparisons = 0; public static void main(String[] args) throws java.lang.Exception { int[] list = {1,2,5,7,9,15}; int target = 5; boolean result = binarySearch(list, target, 0, list.length - 1); if (!result) { System.out.println("Target not found -- bad search."); } else { System.out.println("Target found -- sucessful search!"); System.out.println("executions: " + executions); System.out.println("comparisons: " + comparisons); } } public static boolean binarySearch(int[] list, int target, int low, int high) { executions++; int mid = (low + high) / 2; if (list[mid] == target) { return true; } else { if (low > high) { return false; } else { comparisons++; if (list[mid] < target) { return binarySearch(list, target, mid + 1, high); } else { return binarySearch(list, target, low, mid - 1); } } } } } وسيكون الخرج: Target found -- sucessful search! executions: 1 comparisons: 0 أي سيجد القيمة 5 من أول محاولة
×
×
  • أضف...