Mission Carthage

الرئيسية › الدروس › المصفوفات (Matrices)

المصفوفات بـ Algo وPython: المرور والأقطار والمنقول

الفصل 17 · 3 علوم الإعلامية, باك علوم الإعلامية

tableau بزوز أبعاد: أسطر وأعمدة، المرور، المجاميع، الأكبر، الأقطار والمنقول.

دروس هذا الفصل

  1. صنع مصفوفة وكتابتها
  2. الحساب على مصفوفة
  3. البحث والمنقول

الدرس 17.1 : صنع مصفوفة وكتابتها

10 دقيقة

الـ matrice هي tableau بـ زوز أبعاد: أسطر وأعمدة، كيما شبكة كلمات متقاطعة ولا جدول نقاط (سطر لكل تلميذ، عمود لكل مادّة). كل خانة عندها زوز indices: M[i, j] هي خانة السطر i والعمود j.

انتبه : ما تصنعش matrice بـ [[0] * 4] * 3: الثلاثة أسطر يوليو نفس الـ liste، وتبديل خانة يبدّل العمود الكل. استعمل for … in range كيما الفوق.

نصيحة : في الباك تلقى زادة from numpy import array وبعد M = array([[int()] * 4] * 3): مع numpy الكتيبة هذي آمنة ونكتبو M[i, j].

بـ Python

نعمرو matrice 2 × 3 بالقيم اللي قريناها، وبعد نكتبوها سطر بسطر.

L = 2
C = 3
M = [[0] * C for i in range(L)]
for i in range(L):
    for j in range(C):
        M[i][j] = int(input())
for i in range(L):
    ligne = ""
    for j in range(C):
        ligne = ligne + str(M[i][j]) + " "
    print(ligne)

بـ algorithme

الأسطر من 1 لـ L والأعمدة من 1 لـ C.

Algorithme AfficherMatrice
Début
  L ← 2
  C ← 3
  Pour i de 1 à L Faire
    Pour j de 1 à C Faire
      Lire(M[i, j])
    FinPour
  FinPour
  Pour i de 1 à L Faire
    ligne ← ""
    Pour j de 1 à C Faire
      ligne ← ligne + convch(M[i, j]) + " "
    FinPour
    Ecrire(ligne)
  FinPour
Fin

TDO
Objet | Type/Nature
M | Matrice de 2 lignes et 3 colonnes d'entiers
L, C, i, j | Entier
ligne | Chaîne

الدرس 17.2 : الحساب على مصفوفة

11 دقيقة

الحسابات على matrice هي نفسها متاع الـ tableaux، بزوز boucles. نجمو نمرّو على الخانات الكل، ولا سطر واحد (i ثابت و j يتبدّل)، ولا عمود واحد (j ثابت و i يتبدّل).

لـ matrice مربّعة n × n، القطر الرئيسي فيه الخانات اللي فيها i = j، والقطر الثاني اللي فيها i + j = n + 1 (في الـ algorithme، الـ indices من 1) ولا i + j = n - 1 (في Python، من 0).

نصيحة : للقطر، boucle وحدة تكفي: M[i, i] للرئيسي، و M[i, n + 1 - i] للآخر.

بـ Python

مجموع الخانات الكل والأكبر في matrice معطاة.

M = [[12, 7, 30], [5, 41, 9], [18, 3, 26]]
n = 3
s = 0
grand = M[0][0]
for i in range(n):
    for j in range(n):
        s = s + M[i][j]
        if M[i][j] > grand:
            grand = M[i][j]
print("Somme :", s)
print("Maximum :", grand)

بـ algorithme

الـ maximum يبدا بأول خانة M[1, 1]، موش بـ 0.

Algorithme SommeMax
Début
  M[1, 1] ← 12
  M[1, 2] ← 7
  M[1, 3] ← 30
  M[2, 1] ← 5
  M[2, 2] ← 41
  M[2, 3] ← 9
  M[3, 1] ← 18
  M[3, 2] ← 3
  M[3, 3] ← 26
  n ← 3
  s ← 0
  grand ← M[1, 1]
  Pour i de 1 à n Faire
    Pour j de 1 à n Faire
      s ← s + M[i, j]
      Si M[i, j] > grand Alors
        grand ← M[i, j]
      FinSi
    FinPour
  FinPour
  Ecrire("Somme : ", s)
  Ecrire("Maximum : ", grand)
Fin

TDO
Objet | Type/Nature
M | Matrice de 3 lignes et 3 colonnes d'entiers
n, s, grand, i, j | Entier

الدرس 17.3 : البحث والمنقول

10 دقيقة

البحث على قيمة في matrice كيما في tableau، أما يلزم زوز indices. باش نوقفو كيف نلقاو، نستعملو boucles Tant que و booléen.

الـ transposée متاع matrice L × C هي matrice C × L: السطر i يولّي العمود i. يعني TR[j, i] ← M[i, j].

نصيحة : بزوز Tant que، نرجّعو j للبداية في كل سطر جديد، ونتعدّاو للسطر اللي بعدو كان ما لقيناش برك.

بـ Python

نلوّجو على قيمة ونكتبو بلاصتها (سطر، عمود)، محسوبين من 1.

M = [[3, 8, 1], [9, 4, 7]]
x = int(input())
trouve = False
i = 0
while i < 2 and not trouve:
    j = 0
    while j < 3 and not trouve:
        if M[i][j] == x:
            trouve = True
        else:
            j = j + 1
    if not trouve:
        i = i + 1
if trouve:
    print("Ligne", i + 1, "colonne", j + 1)
else:
    print("Absent")

بـ algorithme

نفس الـ boucles بـ indices من 1 لـ 2 ومن 1 لـ 3.

Algorithme ChercherMatrice
Début
  M[1, 1] ← 3
  M[1, 2] ← 8
  M[1, 3] ← 1
  M[2, 1] ← 9
  M[2, 2] ← 4
  M[2, 3] ← 7
  Lire(x)
  trouve ← Faux
  i ← 1
  Tant que (i ≤ 2) et (Non trouve) Faire
    j ← 1
    Tant que (j ≤ 3) et (Non trouve) Faire
      Si M[i, j] = x Alors
        trouve ← Vrai
      Sinon
        j ← j + 1
      FinSi
    FinTantQue
    Si Non trouve Alors
      i ← i + 1
    FinSi
  FinTantQue
  Si trouve Alors
    Ecrire("Ligne ", i, " colonne ", j)
  Sinon
    Ecrire("Absent")
  FinSi
Fin

TDO
Objet | Type/Nature
M | Matrice de 2 lignes et 3 colonnes d'entiers
x, i, j | Entier
trouve | Booléen

تدرّب مجانًا

كل درس فيه 3 تمارين مجانية مع تلميحات باش تطبّق الفصل هذا مع هنّيبوت.

افتح الفصل في Mission Carthage جرّب في الكومبيلاتور أونلاين

← الفصل اللي قبل : الحساب (Arithmétique) · الفصل اللي بعد : التسجيلات (Enregistrements) →

كل الفصول · شوف فروض 2 تكنولوجيا المصلّحة

الدروس كتبناها لـ Mission Carthage على أساس البرنامج الرسمي. الأستاذ متاعك يبقى المرجع.