Mazkurishdaobyektgayo’naltirilgandasturlashtillariniqiyosiyo’qitishmasalalalriuchtadasturlashtilimisolidamatnfayllariyordamidatushuntiribberilgan.
В данной работе рассматриваются вопросы сравнительного обучения объектно-ориентированных языков программирования на примере обработки данных текстовых файлов.
C++ dasturlashtilihozirgikundazamonaviyob’yektgayo’naltirilgandasturlashgakirishuchunasosiykalitsifatidaqaraladi, hamdayuqoridarajalisamaradorlikkaegabo’lgandasturiyta’minotyaratishmaqsadidaishlabchiqilgan.
C++ tiliboshqazamonaviydasturlashtillariuchunasosiykonseptualpoydevorvazifasinibajaradivahozirgikundaasosiybazaviydasturlashtilisifatidaprofessionaldasturchilartomonidantanolinganvadunyodagiyetakchioliyta’limmuassasalaridao’qitiladi. ZamonaviydasturlashtillariqatorigakiruvchiJavahamdaC# tillariuchunasosvazifasinio’taganliginijudako’plabmanbalardakeltirilgan [2, 3]. Lekin bu ikkala dasturlash tilining bog’lanishi boshqacha tarzda talqin qilinadi.
C++ va Delphi dasturlash tillaridagi bog’lanishlar asosan ulardagi ob’yektlarga yo’naltirilganlik xususiyatlari bilan birgalikda funksiya generator – berilganlarning toifalarga ajratilgan tizim, hamda Win32 ilovalar yaratishdagi umumiy o’xshashliklardan iborat hamda ularni yaratishda bu ikkala til bitta VCL (Visual Component Library) platformasidan foydalanadi.
Dasturlashtillaridagibog’lanishlarniklassifikatsiyalashasosidaqiyosiytahlilqilishmumkin. Qiyosiybog’lanishlarningbittasinfisifatidamavzularbo’yichaqiyosiytahlilsinfiniqarabchiqishmumkin. Buninguchunoqimlarbilanbog’liqmatnlifayllarmavzusiasosidayuqoridakeltirilgan 3 tadasturlashtillariniqiyosiytahlilmasalalariniqarabchiqamiz.
Matnlifayllaruniversalfayllarturkumisifatidaqaraladivama’lumotlarniqaytaishlashdakattaqulayliklargaega. Fayllar bilan ishlash jarayonini odatda 2 qismga ajratish mumkin:
- fayllarni aktivlashtirish va kiritish – chiqarish bilan bog’liq amallar;
- fayllarni qayta ishlash bilan bog’liq jarayonlar;
Fayllarni aktivlashtirish jarayoni biz qarayotgan uchala tilda har xil formatlarda ishlatiladi lekin bajaradigan vazifalari jihatidan bir xil:
C++ tilida – open();
C# tilida – new Stream(Writer yoki Reader);
Delphi tilida – AssignFile();
Bu dasturlash tillarida matn fayllarida kiritish – chiqarish bilan bog’liq jarayonlardagi bog’lanishlarni o’zaro qiyosiy jihatdan quyidagicha izohlashimiz mumkin:
terminlar – (operatorlar, funksiyalarning formatlaridagi o’xshashliklar yoki farqlari jihatidan);
bajaradigan vazifalari boyicha o’xshashliklari yoki farqlari jihatidan;
C++ va C# dasturlash tillarida kiritish – chiqarish jarayoni oqimlar yordamida amalga oshiriladi va bu jarayon bilan bog’liq funksiyalar qo’llaniladi, shu sabab bu ikkala dasturlash tillaridagi bog’lanish darajasi ancha yuqoridir, ya’ni umumiylik parametrlari ko’p.
Ma’lumotlarni qayta ishlash jarayonlari bilan bog’liq qiyosiy tahlillar sinflar, va ob’yektlar, oqimlar va sistema buyruqlariga bog’liq. Qaralayotgan dasturlash tillaridagi umumiy va farqli jihatlarining ayrimlarining qiyosiy tahlillarini quyidagi jadvalda keltiramiz:
№ |
С++ tilida ifodalanishi va vazifasi |
C# tilida ifodalanishi va vazifasi |
Delphi tilida ifodalanishi va vazifasi |
C++/C# tillari aniqlanish sohasining farqlanishi |
C++/ Delphi tillari aniqlanish sohasining farqlanishi |
C#/ Delphi tillari aniqlanish sohasining farqlanishi |
1 |
is_open() – fayl ochishda xatolikn aniqlash funksiyasi. |
File.Exists() – fayl bor yoki yo’qligini tekshirish funksiyasi. |
FileExists() – fayl bor yoki yo’qligini tekshirish funksiyasi. |
Vazifasi,tipi bir xil,ammo nomi bilan farqlanadi. |
Vazifasi,tipi bir xil.ammo nomi bilan farqlanadi. |
Vazifasi, tipi bir xil,ammo, nomi bilan farqlanadi. |
2 |
CopyFile()-funksiyasi mavjud fayldan nusxa olish uchun ishlatilinadi.( #include <windows.h> kutubxonasidan foydalanamiz) |
File.Copy() – fayldan nusxa olish funksiyasi |
CopyFile() – fayldan nusxa oshish funksiyasi |
Vazifasi,tipi jihatidan bir xil,ammo nomi bilan farqlanadi.Bunda nusxalanayotgan F fayl ko’rsatilgan kotologda mavjud bo’lsa, yangi hosil qilingan Fn faylga nuxsalaydi. bo’lmasa ham yangi Fn fayl joriy kotalogda mavjud bo’lsa ham dastur ishlamaydi. |
Vazifasi va tipi jihatidan bir xil. Ammo, nomi bilan bir – biridan farqlanadi. Bunda nusxalanayot-gan F fayl ko’rsatilgan katalogda mavjud bo’lsa, yangi hosil qilingan Fn faylga nuxsalaydi. |
Vazifasi va tipi jihatidan bir xil. Ammo, nomi bilan bir biri-dan farqla-nadi.Bunda nusxalanayotgan F fayl ko’rsatilgan kotologda mavjud bo’l-sa, yangi hosil qilingan Fn faylga nuxsalaydi |
3 |
Remove () – funksiyasi mavjud faylni o’chirish uchun ishlatiladi. Agar o’chirilayotgan fayl mavjud bo’lsa 0, mavjud bo’lmasa -1 qiymat qaytaradi. Istisno holatlari: agarda o’chirilayotgan fayl mavjud bo’lmasa bu faylni o’chirib bo’lmaydi |
File.Delete () –metodi mavjud faylni o’chirish uchun ishlatilinadi Istisno holatlari: agarda o’chirilayotgan fayl mavjud bo’lmasa bu faylni o’chirib bo’lmaydi. |
Erase()- protsedurasi mavjud faylni o’chirish uchun ishlatilinadi. Istisno holatlari: agarda o’chirilayotgan fayl mavjud bo’lmasa EInOutError ga murojaat bo’ladi.. DeleteFile()- fayl nomini o’chiradi va manti-qiy tarzda ishlaydi |
Vazifasi jihatidan bir xil. Ammo, nomi bilan bir - biridan farqlanadi. C++ dasturlash tilida amalda foydalanayotgan faylni Remove() – funksiyasi yordamida shu dasturning o’zida o’chirib bo’ladi. C# dasturlash tilida esa File.Delete() – metodi yordamida amalda foydalanilayotgan faylni shu dasturning o’zida o’chirib bo’lmaydi, ya’ni dasturda xatolik sodir bo’ladi. |
Vazifasi bir xil. Ammo, nomi bilan bir - biridan farqlanadi. |
Vazifasi jihatidan bir xil. Ammo, nomi bilan bir - biridan farqlanadi. |
4 |
Close() – faylni yopish funksiyasi |
Close() – faylni yopish metodi |
CloseFile() – faylni yopish protsedurasi |
Vazifasi va nomi bir xil. C++ dasturlash tilida sinf, C# dasturlash tilida esa metod deb nomlanadi
|
Vazifasi va nomi bir xil. C++ dasturlash tilida sinf , Delphi dastur-lash tilida esa protsedura deb nomlanadi |
Vazifasi va nomi bir xil. C# tilida metod , Delphi tilida esa protsedura deyiladi |
Jadval yordamida qiyosiy tahlil qilingan tushunchalarni misollar yordamida uchala dasturlash tilida ifodalab o’tamiz, mos tushunchalar ajratilgan holda berilgan.
Masala Mavjud fayldagi ma’lumotlarni yangi faylga nusxalash hamda ekranga chiqarish dasturi.
Qiyosiy o’qitish jarayonida mazkur masalani uchala dasturlash tilida yechish va ularni o’zaro qiyosiy tahlil qilishni ko’rib chiqamiz.
C++ dasturlash tilida
#include <iostream>
#include <fstream>
#include <windows.h>
using namespace std;
int main(){
ifstream reading;
ifstream file_read;
string line;
file_read.open("d:\\cdata.txt");
if(file_read.is_open()){
CopyFile("d:\\cdata.txt","d:\\copyfile.txt",FALSE); //Faylni copy qiladi funksiyasi;
reading.open("d:\\copyfile.txt");
while(!reading.eof()){ // ekranga chiqarish uchun;
getline(reading,line);
cout << line << endl;
}reading.close();
}
else{
cout << "Nusxalanayotgan adressdagi fayl mavjud emas!!!" << endl;
}
return 0;
}
C# dasturlash tilida
using System;
using System.IO;
class Program
{
static void Main(string[] args)
{
string data_file = "d:\\cdatafile.txt";
string copy_file = "d:\\ccopyfile.txt";
if (File.Exists(data_file))
{
File.Copy(@data_file,copy_file,true);
Console.WriteLine(File.ReadAllText(copy_file));
}
else {
Console.WriteLine("Nusxalanayotgan adressdagi fayl mavjud emas!!!");
}
Console.ReadKey();
}
}
Delphi dasturlash tilida
programm Project1
{$APPTYPE CONSOLE}
uses
SysUtils;
var
srcFile: Text;
destFile: Text:
line: string;
begin
AssignFile(srcFile, 'c:\data.txt');
{$I-} Reset(srcFile);
{$I+}
if IOResult = 0 then
begin
AssignFile(destFile, 'c:\copy.txt');
{$I-}
Rewrite(destFile);
{$I+}
if IOResult = 0 then
begin
while not Eof(srcFile) do
begin
ReadLn(srcFile, line);
WriteLn(destFile, line);
WriteLn(line);
end;
CloseFile(destFile);
WriteLn;
end;
CloseFile(srcFile);
end;
ReadLn;
End.
Dasturlash tillarini qiyosiy tahlil qilish shu tillarni o’rganish jarayoniga bog’liq. Oliy o’quv yurti talabalari o’qish davrida bir necha tillarni o’rganadilar, bundan tashqari umumiy o’rta ta’lim maktablarida, akademik litsey va kasb – hunar kollejlarida ham ayrim dastirlash tillarini o’rganadilar.
Demak, shuni xulosa qilib aytish mumkinki, bitta dasturlash tilini bilish asosida ikkinchi dasturlash tilini o’rganish uchun qiyosiy o’qitish uslublaridan foydalanish yaxshi samara beradi, ya’ni vaqtni tejash hamda chuqur o’rganish uchun asos bo’la oladi.
Adabiyotlar:
- Г.Шилдт. С++. Базовый курс. Перевод с англ. 3-издание. Изд. Дом “Вилъямс” Москва Санкт – Петербург – Киев 2008 г.
- Шилдт Г. Полный справочник по С#. Издательский дом “Вилъямс” Москва Санкт – Петербург – Киев 2004 г.
- AripovM.M, BabadjanovK.U. “Ob’yektgayo’naltirilgandasturlashtillariniqiyoыiyo’qitishuslubiyati”. FIZIKA, MATEMATIKAvaINFORMATIKA. Ilmiy – uslubiyjurnal. –T.: 2009 y. 6 – son.