{ "cells": [ { "cell_type": "raw", "metadata": { "vscode": { "languageId": "raw" } }, "source": [ "---\n", "title: \"مسائل في توالي الأوامر\"\n", "og:title: control_flow_problems\n", "toc: true\n", "format:\n", " html: default\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[تحميل الدفتر](https://raw.githubusercontent.com/HassanAlgoz/python/main/book/chapters/ch2-control-flow/exercise_2.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## المحاذاة\n", "\n", "ما هي المشكلة في هذه القطعة البرمجية؟ وكيف تحلها؟" ] }, { "cell_type": "code", "metadata": {}, "source": [ "#| error: true\n", "\n", "if True:\n", "print('Inside')\n", "print('Outside')" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## تركيب الشروط\n", "\n", "اعكس هذه العبارة الشرطة المرسومة بكتابة القطعة البرمجية التي تمثلها:\n", "\n", "
\n", "\n", "```{mermaid}\n", "graph BT\n", " RESULT((if))\n", " ROOT{and} -- True --> RESULT\n", " middle_left{\">\"} -- True --> ROOT\n", " middle_right{\">\"} -- True --> ROOT\n", " left_left[age] -- \"20\" --> middle_left\n", " left_right[18] -- \"18\" --> middle_left\n", " right_left[weight] -- \"50\" --> middle_right\n", " right_right[45] -- \"45\" --> middle_right\n", "\n", "```\n", "\n", "
\n", "\n", "## ارسم الشجرة الثائية\n", "\n", "ارسم الشجرة الثنائية للعبارة الشرطية في القطعة البرمجية التالية:" ] }, { "cell_type": "code", "metadata": {}, "source": [ "age = 16\n", "temperature = 15\n", "is_wearing_coat = True\n", "\n", "if age < 16 or (temperature < 20 and not is_wearing_coat):\n", " print(\"I suggest you don't go outside\")" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## الجملة الشرطية المتكاملة\n", "\n", "ما هو حاصل تنفيذ هذه القطعة (فقط بالنظر إليها يجب أن تعرف):" ] }, { "cell_type": "code", "metadata": {}, "source": [ "x = 1\n", "\n", "if x < 0:\n", " x = 0\n", " print('Set to zero')\n", "elif x == 0:\n", " print('Zero')\n", "elif x == 1:\n", " print('Single')\n", "else:\n", " print('More')\n", "\n", "print(\"Always:\", x)" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## جملة التعيين المشروط\n", "\n", "كيف تكتب هذه الجملة بطريقة مختصرة؟" ] }, { "cell_type": "code", "metadata": {}, "source": [ "speed = 45\n", "\n", "if speed > 50:\n", " message = 'Too fast!'\n", "else:\n", " message = 'Okay'\n", "\n", "print(message)" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## جملة التعيين المشروط\n", "\n", "وماذا عن هذه الجملة، كيف تكتبها مختصرة؟" ] }, { "cell_type": "code", "metadata": {}, "source": [ "temperature = 25\n", "\n", "if temperature > 30:\n", " comfort = 'Hot'\n", "elif temperature > 15:\n", " comfort = 'Comfortable'\n", "else:\n", " comfort = 'Cold'\n", "\n", "print(comfort)" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## الوزن الطبيعي\n", "\n", "هذا هو وزن الجسم الموصى به من قبل منظمة الصحة العالمية (WHO) استنادًا إلى قيم مؤشر كتلة الجسم للبالغين. ويستخدم لكل من الرجال والنساء الذين تبلغ أعمارهم 20 عامًا أو أكثر.\n", "\n", "| **التصنيف** | **مدى BMI - kg/m2** |\n", "| --- | --- |\n", "| نحف شديد | < 16 |\n", "| نحف متوسط | 16 - 17 |\n", "| نحف خفيف | 17 - 18.5 |\n", "| طبيعي | 18.5 - 25 |\n", "| زيادة في الوزن | 25 - 30 |\n", "| سمنة خفيفة | 30 - 35 |\n", "| سمنة ثانية | 35 - 40 |\n", "| سمنة ثالثة | > 40 |\n", "\n", "[المصدر](https://www.calculator.net/bmi-calculator.html)\n", "\n", "لحساب مؤشر كتلة الجسم (BMI)، نستعمل المعادلة التالية:\n", "\n", "$$\n", "BMI = \\frac{weight}{height^2}\n", "$$\n", "\n", "حيث:\n", "\n", "- الوزن بالكيلوغرام: $weight$\n", "- الطول بالمتر: $height$\n", "\n", "المطلوب:\n", "\n", "1. احسب بالمعادلة السابقة مؤشر كتلة الجسم لوزنك\n", "2. اكتب جملاً شرطية مضمنة تستعمل الجدول لتصنيف الوزن\n", "3. اطبع النتيجة\n", "\n", "ملاحظة: يجب أن تكون الجمل الشرطية تستعمل التضمين على النحو التالي:\n", "\n", "```python\n", "if :\n", " if :\n", " \n", " else:\n", " \n", "else:\n", " \n", "```\n", "\n", "## مجموع الأرقام إلى س\n", "\n", "ما نريد صياغته هو هذه المعادلة: مجموع الأرقام من 1 إلى `n`:\n", "\n", "$$\n", "\\sum_{i=1}^{n} i\n", "$$\n", "\n", "تعليمات التطبيق:\n", "\n", "- استخدم الإجراء `input()` لطلب إدخال العدد من المستخدم\n", "- القيمة المدخلة ستكون من النوع النصي وليس العددي؛ لذا:\n", " - حول القيمة المدخلة إلى عدد باستخدام `int()` أو `float()`\n", "- استعمل حلقة `while` لجمع الأرقام من `1` إلى العدد الذي أدخله المستخدم\n", "- اطبع النتيجة\n", "\n", "## اكتب القطعة بحلقة تكرار\n", "\n", "اكتب القطعة البرمجية التالية بحلقة تكرار:" ] }, { "cell_type": "code", "metadata": {}, "source": [ "increase = 5\n", "\n", "w1 = 15\n", "w2 = w1 + increase\n", "w3 = w2 + increase\n", "w4 = w3 + increase\n", "w5 = w4 + increase\n", "w6 = w5 + increase\n", "w7 = w6 + increase\n", "w8 = w7 + increase\n", "w9 = w8 + increase\n", "w10 = w9 + increase\n", "\n", "print(w1, w2, w3, w4, w5, w6, w7, w8, w9, w10)" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## اكتب القطعة بحلقة تكرار\n", "\n", "وكذلك اكتب القطعة التالية بحلقة تكرار:" ] }, { "cell_type": "code", "metadata": {}, "source": [ "import math\n", "\n", "growth_rate = 0.117\n", "\n", "day1 = 100\n", "day2 = day1 * (1 + growth_rate)\n", "day3 = day2 * (1 + growth_rate)\n", "day4 = day3 * (1 + growth_rate)\n", "day5 = day4 * (1 + growth_rate)\n", "day6 = day5 * (1 + growth_rate)\n", "day7 = day6 * (1 + growth_rate)\n", "\n", "print(math.floor(day1))\n", "print(math.floor(day2))\n", "print(math.floor(day3))\n", "print(math.floor(day4))\n", "print(math.floor(day5))\n", "print(math.floor(day6))\n", "print(math.floor(day7))" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## التغير النسبي\n", "\n", "إذا كنت تمارس الرياضة وتزيد في وزن الحمل 10% أسبوعيًّا .. فإذا بدأت بوزن 20 كيلو، فإلى كم كيلوا ستصل في الأسبوع الثاني عشر؟ (بعد ثلاثة أشهر)\n", "\n", "\n", "## حجرة ورقة مقص\n", "\n", "اكتب برنامج يلعب لعبة حجرة ورقة مقص.\n", "\n", "إليك هذه القصاصة في استعمال مكتبة العشوائية ([`random`](https://docs.python.org/3/library/random.html)) لاختيار عنصر من قائمة بشكل عشوائي:" ] }, { "cell_type": "code", "metadata": {}, "source": [ "import random\n", "\n", "x = random.choice([\"rock\", \"paper\", \"scissors\"])\n", "print(x)" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## متحدث آلي\n", "\n", "اكتب برنامج يجمع البيانات التالية من المستخدم (الزبون):\n", "\n", "- اسم الزبون: الرسالة \"أتشرف باسمك، مثلا: محمد أحمد\"\n", "- رقم الهاتف: الرسالة \"زودنا برقم جوالك، يبدأ بمفتاح الدولة، مثلاً بـ966\"\n", "- المدينة: الرسالة \"ممكن تحدد مدينتك؟\"\n", "- اسم الحي: الرسالة \"الرجاء قم بكتابة اسم الحي\"\n", "\n", "بعد ذلك يؤكد الآلي على المستخدم أن المعلومات صحيحة، ويطلب منه التأكيد أو التعديل أو إلغاء الطلب.\n", "\n", "- في حال التأكيد: الرسالة \"تم تأكيد الطلب برقم 12345 سيتواصل معك ممثل خدمة العملاء في غضون 15 دقيقة علمًا أن ساعات العمل من 9 صباحًا إلى 5 مساءً\"\n", "- في حال التعديل، يطلب الآلي من المستخدم تحديد الشيء الذي يريد تعديله ليتم تعديله\n", "- في حال إلغاء الطلب: الرسالة \"تم إلغاء طلب التبرع\"\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 4 }