مسئله نمایش حروف روی کنسول و استاندارد یونیکد
امروز به یک مسئله جالبی برخوردم. مسئله از ما میخواست حلقهای بنویسیم که حروف A تا Z را روی کنسول نمایش بدیم. این مسئله از آن نظر جالب بود که من قبلا مدل عددیاش را که میگفت اعداد 1 تا n را چاپ کنید حل کرده بودم اما اینکه مسئله از ما بخواهد حروف را چاپ کنیم تا حالا ندیده بودم.
مشکل اینجاست که زبان های برنامه نویسی هنوز به آن میزان از درک و شعور نرسیدهاند که به فرض ما بنویسیم A+1 و خودشان بفهمند باید بنویسند E، پس راه حل چیست؟ اینکه ما یکجورهایی حروف را تبدیل کنیم به اعداد و عملیات حل مسئله را با اعداد پیش ببریم.
همانطور که میدانید و آگاه هستید (و شاید هم آگاه نباشید) در دنیای رایانه استانداردی داریم به نام Unicode که هر حرف و علامتی که روی صفحه نمایش موبایل یا کامپیوترتان میبینید در این استاندارد برای خودش یک کد منحصر به فرد دارد. برای مثال همین جناب A در استاندارد یونیکد تبدیل میشود به U+0041، به زبان سادهتر هر جا رایانه U+0041 را ببیند حرف A را نمایش میدهد و برعکس هروقت ما حرف A را بنویسم رایانه U+0041 را در حافظه مینویسد (شاید هم ننویسد ? به لینک انتهای یادداشت مراجعه کنید).
حالا قبل از استاندارد یونیکد یک استاندارد دیگری داشتیم به اسم ASCII که در این استاندارد حرف A برابر با 65 بود و البته این استاندارد هنوز به شدت و قدرت در سیستمهای رایانهای پشتیبانی میشود. من برای راحتی کار از سیستم ASCII استفاده کردم. حالا میبینیم که مسئله چقدر آسان شد.
کافیست یک متغییری تعریف کنیم و مقدارش را مساوی با 65 قرار بدیم، بعد آن را داخل یک حلقه for بذاریم و یکی یکی بهش اضافه کنیم تا به عدد 92 که همان حرف Z باشد برسیم و تمام.
همانطور که دیدید این مسئله به لحاظ برنامهنویسی چالشی نداشت اما حُسنش این بود که من کمی راجع به استاندارد یونیکد تحقیق کردم و یک مقاله خوب و مفصل راجع به آن خواندم و کلی چیز یادگرفتم.
توصیه به برنامه نویسهای تازهکار مثل خودم:
علمتان راجع به کامپیوتر را بالا ببرید و یاد بگیرید چیزها چطور کار میکنند، این کمک میکنه تا مسئلهها را راحتتر حل کنید.