در دنیای برنامهنویسی، کد برنامه نویسی جدول ضرب یکی از ابتداییترین و مفیدترین تمرینها برای درک اصول الگوریتمها و ساختارهای داده است. در این مقاله، ما به بررسی دو روش متفاوت برای چاپ جدول ضرب میپردازیم: روش تکراری و روش بازگشتی. در ابتدا، با استفاده از حلقهها (روش تکراری)، میتوانیم کد برنامه نویسی جدول ضرب را به راحتی پیادهسازی کنیم. سپس، در بخش دوم، روش بازگشتی را بررسی خواهیم کرد که با استفاده از فراخوانیهای خودکار تابع، جدول ضرب را به شکلی متفاوت و بهینهتر ایجاد میکند. هدف از این مقاله آشنایی با این دو روش و انتخاب مناسبترین آنها برای حل مسائل مختلف در برنامهنویسی است.
در این مقاله، نحوه پیادهسازی جدول ضرب را در شش زبان برنامهنویسی پرکاربرد شامل سی «C»، سی پلاس پلاس «++C» سی شارپ «#C»، جاوا «Java»، پایتون «Python» و جاوا اسکریپت «JavaScript» بررسی خواهیم کرد. همچنین، کدهای مربوطه ارائه شده و هر یک از آنها توضیح داده میشود.
برای چاپ جدول ضرب یک عدد n، میتوان از یک حلقه استفاده کرد.
روش تکراری برای کد برنامه نویسی جدول ضرب
روش تکراری «Iterative Approach» یکی از سادهترین و پرکاربردترین روشها برای حل مسائل در برنامهنویسی است که در آن از حلقهها برای تکرار یک عمل یا مجموعهای از عملیاتها استفاده میشود. در این روش، معمولاً حلقهها برای انجام کاری خاص (مانند محاسبه حاصلضرب یک عدد در ۱۰) بارها تکرار میشوند تا نتیجه نهایی به دست آید.
در زمینه چاپ جدول ضرب، روش تکراری به این صورت عمل میکند که از یک حلقه برای ضرب عدد مورد نظر با مقادیر مختلف استفاده میشود. به عنوان مثال، در جدول ضرب یک عدد n، از حلقهای برای ضرب n با اعداد از ۱ تا ۱۰ استفاده میشود. هر بار که حلقه اجرا میشود، حاصلضرب عدد با i (که از ۱ شروع میشود و تا ۱۰ ادامه مییابد) محاسبه شده و نتیجه چاپ میشود.
برنامه C برای چاپ جدول ضرب
کد زیر یک برنامه به زبان C است که جدول ضرب یک عدد مشخص (در اینجا ۵) را تا مقدار ۱۰ محاسبه و چاپ میکند. تابع printTable(int n) با استفاده از یک حلقه for مقدار n * i را برای مقادیر i از ۱ تا ۱۰ محاسبه کرده و نتیجه را با استفاده از printf نمایش میدهد. در تابع main مقدار ۵ به عنوان ورودی به تابع printTable ارسال شده و جدول ضرب آن چاپ میشود.
#include <stdio.h> void printTable(int n) { for (int i = 1; i <= 10; ++i) printf("%d * %d = %d\n", n, i, n * i); } int main() { int n = 5; printTable(n); return 0; }
برنامه ++C برای چاپ جدول ضرب
کد زیر یک برنامه به زبان ++C است که جدول ضرب عدد ۵ را از ۱ تا ۱۰ محاسبه و نمایش میدهد. تابع printTable(int n) از یک حلقه for برای محاسبه و چاپ مقدار n * i برای مقادیر i از ۱ تا ۱۰ استفاده میکند. در تابع main مقدار ۵ به عنوان ورودی به تابع printTable ارسال شده و جدول ضرب آن با استفاده از cout در خروجی نمایش داده میشود.
// CPP program to print table of a number #include <iostream> using namespace std; void printTable(int n) { for (int i = 1; i <= 10; ++i) cout << n << " * " << i << " = " << n * i << endl; } int main() { int n = 5; printTable(n); return 0; }
برنامه سی شارپ برای چاپ جدول ضرب
کد زیر یک برنامه به زبان #C است که جدول ضرب عدد ۵ را از ۱ تا ۱۰ محاسبه و نمایش میدهد. تابع printTable(int n) با استفاده از یک حلقه for مقدار n * i را برای مقادیر i از ۱ تا ۱۰ محاسبه کرده و نتیجه را با Console.Write نمایش میدهد. در تابع Main مقدار ۵ به عنوان ورودی به تابع printTable ارسال شده و جدول ضرب آن چاپ میشود.
// C# program to print table of a number using System; class PStore { public static void printTable(int n) { for (int i = 1; i <= 10; ++i) Console.Write(n + " * " + i + " = " + n * i + "\n"); } public static void Main() { int n = 5; printTable(n); } }
برنامه جاوا برای چاپ جدول ضرب
کد زیر یک برنامه به زبان Java است که جدول ضرب عدد ۵ را از ۱ تا ۱۰ محاسبه و نمایش میدهد. تابع printTable(int n) با استفاده از یک حلقه for مقدار n * i را برای مقادیر i از ۱ تا ۱۰ محاسبه کرده و نتیجه را با System.out.println نمایش میدهد. در تابع main مقدار ۵ به عنوان ورودی به تابع printTable ارسال شده و جدول ضرب آن چاپ میشود.
// Java program to print table of a number import java.io.*; class PStore { public static void printTable(int n) { for (int i = 1; i <= 10; ++i) System.out.println(n + " * " + i + " = " + n * i); } public static void main(String arg[]){ int n = 5; printTable(n); } }
برنامه پایتون برای چاپ جدول ضرب
کد زیر یک برنامه به زبان Python است که جدول ضرب عدد ۵ را از ۱ تا ۱۰ محاسبه و نمایش میدهد. تابع printTable(n) با استفاده از یک حلقه for مقدار n * i را برای مقادیر i از ۱ تا ۱۰ محاسبه کرده و نتیجه را با print نمایش میدهد. در بخش if __name__ == “__main__”: مقدار ۵ به عنوان ورودی به تابع printTable ارسال شده و جدول ضرب آن چاپ میشود.
# Python Program to print table of a number def printTable(n): for i in range (1, 11): # multiples from 1 to 10 print ("%d * %d = %d" % (n, i, n * i)) if __name__ == "__main__": n = 5 printTable(n)
برنامه جاوا اسکریپت برای چاپ جدول اسکریپت
کد زیر یک برنامه به زبان JavaScript است که جدول ضرب عدد ۵ را از ۱ تا ۱۰ محاسبه و نمایش میدهد. تابع printTable(n) با استفاده از یک حلقه for مقدار n * i را برای مقادیر i از ۱ تا ۱۰ محاسبه کرده و نتیجه را با console.log در خروجی چاپ میکند. در قسمت Driver Code مقدار ۵ به تابع printTable ارسال شده و جدول ضرب آن نمایش داده میشود.
// Javascript program to print // table of a number function printTable(n) { for (let i = 1; i <= 10; ++i) console.log( n + " * " +i + " = " + n * i); } // Driver Code let n = 5; printTable(n);
خروجی
۵ * ۱ = 5 ۵ * ۲ = 10 ۵ * ۳ = 15 ۵ * ۴ = 20 ۵ * ۵ = 25 ۵ * ۶ = 30 ۵ * ۷ = 35 ۵ * ۸ = 40 ۵ * ۹ = 45 ۵ * ۱۰ = 50
تصویرسازی
اجرای گامبهگام حلقه برای جدول ضرب عدد n=5.
عدد n=5 است و حلقه از i=1 تا i=10 تکرار خواهد شد.
اولین تکرار: (i=1)
- حلقه عد n=5 را در i=1 ضرب میکند.
- نتیجه: ۵=۵×۱.
- خروجی: ۵=۵×۱.
دومین تکرار: (i=2)
- حلقه عدد n=5 را در i=2 ضرب میکند.
- نتیجه: ۱۰=۵×۲.
- خروجی: ۱۰=۵×۲.
سومین تکرار: (i=3)
- حلقه عدد n=5 را در i=3 ضرب میکند.
- نتیجه: ۱۵=۵×۳.
- خروجی: ۱۵=۵×۳.
…
…
دهمین تکرار (i=10):
- حلقه عدد n=5 را در i=10 ضرب میکند.
- نتیجه: ۵۰=۵×۱۰.
- خروجی: ۵۰=۵×۱۰.
روش بازگشتی برای کد برنامه نویسی جدول ضرب
روش بازگشتی «Recursive Approach» یکی از قدرتمندترین تکنیکها در برنامهنویسی است که در آن یک تابع به طور مستقیم یا غیرمستقیم خود را فراخوانی میکند. این روش به ویژه در مسائلی که نیاز به تقسیم یک مسئله به زیرمسائل مشابه دارند، کاربرد دارد. در زمینه کدنویسی جدول ضرب، روش بازگشتی میتواند برای محاسبه و چاپ جدول ضرب یک عدد با فراخوانیهای خودکار تابع استفاده شود.
در این روش، به جای استفاده از حلقهها، تابع خود را با پارامترهای مختلف فراخوانی میکند. به طور معمول، تابع ابتدا نتیجه ضرب n و i را چاپ کرده و سپس خودش را با مقدار i+1 فراخوانی میکند. این فراخوانی تا زمانی ادامه مییابد که i به ۱۱ برسد، زیرا ما فقط نیاز به چاپ جدول ضرب تا ۱۰ داریم. در واقع، با استفاده از بازگشت، وظیفه انجام ضرب و چاپ نتیجه به تدریج در هر مرحله بر عهده تابع قرار میگیرد.
برنامه C برای چاپ جدول ضرب
کد زیر یک برنامه به زبان C است که جدول ضرب عدد ۵ را با استفاده از بازگشت «recursion» محاسبه و نمایش میدهد.
#include <stdio.h> // printTable() prints table of number and takes // ۱ required value that is number of whose table // to be printed and an optional input i whose default value is 1 void printTable(int n, int i) { if (i == 11) return; printf("%d * %d = %d\n", n, i, n * i); i++; printTable(n, i); } int main() { int n = 5; printTable(n, 1); return 0; }
توضیح عملکرد کد:
- تابع printTable(int n, int i) مقدار n * i را محاسبه و نمایش میدهد.
- مقدار i از ۱ شروع شده و در هر فراخوانی مقدار آن یک واحد افزایش مییابد.
- شرط بازگشتی if (i == 11) return باعث توقف فراخوانی بازگشتی پس از رسیدن به مقدار ۱۱ میشود.
- در تابع main مقدار ۵ به عنوان ورودی به printTable(n, 1) ارسال شده و جدول ضرب عدد ۵ تا ۱۰ چاپ میشود.
برنامه ++C برای چاپ جدول ضرب
کد بالا یک برنامه به زبان ++C است که جدول ضرب عدد ۵ را با استفاده از بازگشت (recursion) محاسبه و نمایش میدهد.
#include <iostream> using namespace std; // printTable() prints table of number and takes // ۱ required value that is number of whose teble // to be printed and an optional input i whose d // efault value is 1 void printTable(int n, int i = 1) { if (i == 11) return; cout << n << " * " << i << " = " << n * i << endl; i++; printTable(n, i); } int main() { int n = 5; printTable(n); }
توضیح عملکرد کد:
- تابع printTable(int n, int i = 1) مقدار n * i را محاسبه و نمایش میدهد.
- مقدار i به طور پیشفرض ۱ است و در هر فراخوانی بازگشتی یک واحد افزایش مییابد.
- شرط if (i == 11) return باعث توقف بازگشت پس از رسیدن مقدار i به ۱۱ میشود.
- در تابع main مقدار ۵ به تابع printTable(n) ارسال شده و جدول ضرب آن چاپ میشود.
برنامه سی شارپ برای چاپ جدول ضرب
کد بالا یک برنامه به زبان C# است که جدول ضرب عدد ۵ را با استفاده از بازگشت (recursion) محاسبه و نمایش میدهد.
using System; using System.Collections.Generic; class PStore { // print_table() prints table of number and takes // ۱ required value that is number of whose teble to be // printed and an optional input i whose default value is 1 static void printTable(int n, int i = 1) { if (i == 11) // base case return; Console.WriteLine(n + " * " + i + " = " + n * i); i++; printTable(n, i); } public static void Main(string[] args) { int n = 5; printTable(n); } }
توضیح عملکرد کد:
- تابع printTable(int n, int i = 1) مقدار n * i را محاسبه و نمایش میدهد.
- مقدار i به طور پیشفرض ۱ است و در هر فراخوانی بازگشتی یک واحد افزایش مییابد.
- شرط if (i == 11) به عنوان شرط پایه عمل میکند و بازگشت را پس از رسیدن مقدار i به ۱۱ متوقف میکند.
- در تابع Main مقدار ۵ به تابع printTable(n) ارسال شده و جدول ضرب آن چاپ میشود.
برنامه جاوا برای چاپ جدول ضرب
کد زیر یک برنامه به زبان Java است که جدول ضرب عدد ۵ را با استفاده از بازگشت «recursion» محاسبه و نمایش میدهد.
import java.util.*; class PStore { // printTable() prints table of number and takes // ۱ required value that is number of whose teble to be // printed and an optional input i whose default value is 1 static void printTable(int n, Integer... val) { int i = 1; if (val.length != 0) i = val[0]; if (i == 11) // base case return; System.out.println(n + " * " + i + " = " + n * i); i++; printTable(n, i); } public static void main(String[] args) { int n = 5; printTable(n); } }
توضیح عملکرد کد:
- تابع printTable(int n, Integer… val) از ویژگی Varargs استفاده میکند تا ورودی اختیاری i را دریافت کند. در صورتی که مقدار i داده نشده باشد، به طور پیشفرض برابر با ۱ قرار میگیرد.
- در صورتی که طول آرایه val صفر نباشد، مقدار i از آن آرایه گرفته میشود.
- شرط if (i == 11) به عنوان شرط پایه عمل میکند و بازگشت را پس از رسیدن مقدار i به ۱۱ متوقف میکند.
- در تابع main مقدار ۵ به تابع printTable(n) ارسال شده و جدول ضرب آن چاپ میشود.
برنامه پایتون برای چاپ جدول ضرب
کد زیر یک برنامه به زبان Python است که جدول ضرب عدد ۵ را با استفاده از بازگشت «recursion» محاسبه و نمایش میدهد.
# printTable() prints table of number and takes # ۱ required value that is number of whose teble to be printed # and an optional input i whose default value is 1 def printTable(n, i=1): if (i == 11): # base case return print(n, "*", i, "=", n * i) i += 1 printTable(n, i) if __name__ == "__main__": n = 5 printTable(n)
توضیح عملکرد کد:
- تابع printTable(n, i=1) مقدار n * i را محاسبه و نمایش میدهد.
- مقدار i به طور پیشفرض ۱ است و در هر فراخوانی بازگشتی یک واحد افزایش مییابد.
- شرط if (i == 11) به عنوان شرط پایه عمل میکند و بازگشت را پس از رسیدن مقدار i به ۱۱ متوقف میکند.
- در بخش “__if __name__ == “__main مقدار ۵ به تابع printTable(n) ارسال شده و جدول ضرب آن چاپ میشود.
برنامه جاوا اسکریپت برای چاپ جدول ضرب
کد زیر یک برنامه به زبان JavaScript است که جدول ضرب عدد ۵ را با استفاده از بازگشت (recursion) محاسبه و نمایش میدهد.
// printTable() prints table of number and takes //۱ required value that is number of whose teble to be printed //and an optional input i whose default value is 1 function printTable(n, i = 1) { if (i == 11)// base case return; console.log(n + " * " + i + " = " + n * i); i++; printTable(n,i); } // Driver Code let n = 5; printTable(n);
توضیح عملکرد کد:
- تابع printTable(n, i = 1) مقدار n * i را محاسبه و نمایش میدهد.
- مقدار i به طور پیشفرض ۱ است و در هر فراخوانی بازگشتی یک واحد افزایش مییابد.
- شرط if (i == 11) به عنوان شرط پایه عمل میکند و بازگشت را پس از رسیدن مقدار i به ۱۱ متوقف میکند.
- در بخش Driver Code مقدار ۵ به تابع printTable(n) ارسال شده و جدول ضرب آن چاپ میشود.
خروجی
۵ * ۱ = 5 ۵ * ۲ = 10 ۵ * ۳ = 15 ۵ * ۴ = 20 ۵ * ۵ = 25 ۵ * ۶ = 30 ۵ * ۷ = 35 ۵ * ۸ = 40 ۵ * ۹ = 45 ۵ * ۱۰ = 50
نتیجهگیری
برنامهنویسی جدول ضرب یک تمرین ساده اما کاربردی برای یادگیری اصول اولیه حلقهها و نمایش خروجی است. همانطور که مشاهده کردیم، پیادهسازی جدول ضرب در زبانهای مختلف تفاوت زیادی ندارد و همهی آنها از ساختار مشابهی بهره میبرند. انتخاب زبان برنامهنویسی مناسب به نیازها و کاربردهای برنامه بستگی دارد. سی پلاس پلاس و جاوا برای پروژههای بزرگتر، پایتون برای سادگی و خوانایی بالا و سی شارپ برای برنامههای مبتنی بر ویندوز مناسب هستند. امیدواریم این مقاله درک بهتری از پیادهسازی جدول ضرب در زبانهای مختلف به شما ارائه داده باشد.
در نهایت، روشهای تکراری و بازگشتی هر کدام مزایا و کاربردهای خاص خود را در کدنویسی دارند. در حالی که استفاده از حلقهها در روش تکراری برای چاپ جدول ضرب به دلیل سادگی و کارایی آن بسیار محبوب است، روش بازگشتی میتواند به عنوان یک روش قدرتمند و انعطافپذیر برای حل مسائل مشابه به کار رود. بسته به نیاز و شرایط پروژه، میتوانیم از این دو روش برای نوشتن کد برنامه نویسی جدول ضرب بهره ببریم. آشنایی با این دو رویکرد به ما کمک میکند تا انتخابهای بهتری در طراحی الگوریتمها و کدهای خود داشته باشیم.