Jump to content

evo10

Learning
  • Content Count

    23
  • Joined

  • Last visited

Posts posted by evo10


  1. Terpulang kepada:

    1) negara tu sendiri

    2) kerja yg ditawarkan

    3) syarikat dimana kita berkerja

    Apa yang dapat? Terpulang kepada apa yg dicari.

    Pengalaman berkerja dengan orang dari "bangsa" dan culture yg berlainan.

    Pengalaman hidup dengan masyarakat yg berlainan.

    Pengalaman berjalan/travel ketempat-tempat yg menarik.

    Kalau cari duit..kena pastikan bayaran/gaji - kos of living - tax (kalau ada) berbaloi.

    Macam yg saya kata, terpulang kepada apa yg dicari.


  2. Scrum....salah satu dari methodology yg tergolong dalam Agile ecosystem.

    Kalau rajin baca skit-skit tentang Agile. Bezanya Agile ni memberi tumpuan kpd "human factor"...communication, instead of paper work. Lagi satu common concept yg banyak mempengaruhi method seperti Scrum ialah "iterative + incremental development".

    Contoh lebih kurang macam ni...kata utk satu delivery tu software tu kena ada 20 features.

    Kalau ikut cara tradisional waterfall biasa...20 feature ni akan dibangunkan dalam masa 3 bulan.

    Fasa pulak dibahagikan seperti biasa...requirement, design, coding test. Test cuma dibuat dibahagian akhir apabila semua features dah disiapkan.

    Kalau ikut method macam Scrum (iterative + incremental) mula-mula 20 features mungkin akan dibahagikan kepada 4 kumpulan (3 atau 4 features dalam satu kumpulan). Pembangunan dijalankan berkumpulan. Mula dgn feature dalam kumpulan 1 - ianya akan go through stage macam biasa...requirement, design,code,test. Tapi disinilah bezanya dlm Scrum test tester tak tunggu sampai semua feature siap utk mulat test. Bila feature dalam grp 1 siap, testers dah mula test feature dalam group 1, sementara development team mula next iteration utk features dlm group 2 pulak. Feature dlm group dua pun go through process yg sama. Dan bila siap feature dlm group 2 testers akan mula test features utk group 2 pulak...Ingat "group" atau "kumpulan" cumalah grouping utk features, bukan group utk orang yg terlibat. Org yg terlibat masih orang yg sama.

    Itulah skit-skit tentang Scrum. Adalah detail lain macam daily Scrum meeting, macam mana nak group feature, track project - product back log dan lain-lain.

    QA/QC dalam manufaturing dah matured - started from Deming masa 40's. QA/QC dlam software pun menuju kearah yg sama - cuma konsep tu kena ubah. Macam you refer to AQL table - tu sebab SPC guna konsep sampling. Iaitu dimana berdasarkan "standard deviation" sesuatu process dan produk, QA/QC boleh determine good sampling plan yg statistically boleh jamin certain percentage of product tak ada defect...macam Six-Sigma punya konsep. Dalam software pun ada measurement seperti number of defects per 1000 line of codes, atau measure cyclomatic number, measure saiz class/method, dependencies tapi yg paling common ialah utk tengok test coverage...ni macam sampling. Tapi tak ada statistical proof yg kata certain number line of code vs. test coverage % macam mana dapat relate to defect rate yg macam mana. So ianya terpulang kpd applikasi - kalau utk defense atau space program, atau embedded yg run kapalterbang ke mesti reach almost 100% coverage. Tak kan kita hendak dapat "blue screen" dalam pilot cockpit masa kapalterbang at 30,000 kaki diudara...

    Overall peranan QA/QC masih penting walaupun didalam industri perisian.


  3. Dalam setahun kalau campur semua jenis interview (phone screen, on campus, on site) saya dalam average interview 200 orang setahun, 95% adalah new college grads, selebihnya yg ada experience (working experience lebih dari 2 tahun..ada sampai 10 tahun). Setakat ini success rate - yg mula dari phone interview end up dapat offer adalah kurang dari 5%. (ada tahunnya lebih teruk less than 2%).

    Jadi apakah yg interviewer macam saya cuba "korek":

    1) Attitude - confident, over confident, arrogant, humble, ... sudah tentu kita hendakkan perkerja yg humble willing to learn with a can-do attitude. Setengah tu arrogant ( 70% yg candidate yg kami interview adalah yg mempunyai CGPA 3.6/4 keatas..ramai yg ada CGPA 3.8 to 3.95) - so sebagus mana pun anda punya CGPA, be humble. Apa yg anda belajar mungkin merupakan cuma 20% dari apa yg diperlukan semasa berkerja.

    2) Komunikasi - bermula dengan percakapan. Kebanyakkan syarikat menggunakan English, ada juga yg menggunakan bahasa melayu. Tanya sebelum interview bermula sekiranya anda tidak pasti. Tapi paling mudah gunakan bahasa yg digunakan oleh orang yg menemuduga anda. Susah macam mana pun, jangan minta utk tukar bahasa, teruskan mencuba walaupun mungkin "broken". Ini banyak terjadi bila saya interview calon-calon Melayu menggunakan English. Apabila anda sudah berkerja, skill komunikasi anda akan contribute 30-40% kepada career path anda. Komunikasi termasuk - written (report, patent filing, email, proposal etc.) dan verbal (presentation, meeting contribution, leading group...etc.)

    3) Buat research - cuba cari apakah jenis soalan yg biasa ditanya. Biasanya sekiranya anda tanya secara direct dengan sesiapa yg arrange interview tersebut, mereka akan memberitahu samada ianya lebih kepada teknikal atau attitude, IQ test etc. Sekiranya teknikal - cuba dapatkan maklumat lebih lanjut tentang skop nya.

    4) Preparation - anda mesti tau dengan mendalam tentang final projek anda, kalau anda buat internship, anda juga mesti tau apa yg anda buat semasa internship. Saya boleh kata hampir 40% graduates "kantoi" in this area. Bila ditanya mengapa buat sesuatu projek menggunakan cara yg tertentu, atau menggunakan alatan atau software yg tertentu, programming language yg tertentu ramai yg jawab sebab advisor/pensyarah suruh. Even sekiranya anda dipaksa menggunukan sesuatu tool atau method oleh advisor anda , cuba tanya dia mengapa - apa advantage dibanding kan dgn cara / tool lain. Utk high value job - macam designer ini adalah penting. Setiap keputusan yg dibuat apabila anda berkerja mesti ada penerangan disebaliknya.

    Saya rasa kalau anda dapat tangani 4 perkara diatas ini..insyaallah boleh berjaya.


  4. Apa yg diterangkan oleh nivan, bagaimana sekiranya sesuatu test gagal, kena ulang dari mula utk menentukan fixes/kod baru tidak menyebabkan fungsi yg sudah OK sebelum ni gagal dipanggil "regression test".

    Regression test adalah penting - berdasarkan pengalaman saya sendiri, lebih-lebih lagi utk GUI, berbanding dengan batch/command line punya software. Ini kerana GUI mempunyai banyak starting entries, dan data flow akan huru-hara sekiranya design/architecture tak "clean".

    Utk test GUI ada banyak cara:

    1) Manual..tapi problemnya ialah macam regression test. Kalau satu-satu GUI ada berpuluh-puluh (malah beribu) kombinasi operasi memang tak ada masa nak test.

    2) Semi automated - boleh bubuh embedded framework utk control "messages" dari komponen seperti button. Menggunakan framework ni kita boleh imitate komponents/buttons operation menggunakan scripting language (bergantung kepada framework yg dibuat) - kat tempat saya guna TCL. Tapi cara ni limited kpd "messages". GUI operation yg bergantung kpd information lain - seperti drag-n-drop (kena tau nak drag dari lokasi mana ke mana) tidak boleh di simulate.

    3) Automated - guna tools. Ni guna software lain utk test GUI. Ada banyak in the market - ada yg specialize utk technology macam Java based components (atau Eclipse based), ..tapi yg paling banyak adalah utk MS Window based. Utk Linux/Un*x tak banyak. Kat tempat saya berkerja kami dah tried & research lebih dari 20 jenis tools ini. Dan last 2 jenis telah digunakan - TestComplete dan EggPlant. EggPlant powerful sebab ianya boleh digunakan utk test apa-apa GUI yg boleh di view melalui VNC viewer (test server running dlm Mac). Jadi boleh guna utk Linux & Un*x based OS. Tapi capability utk detect component limited sebab dia guna bitmap recognition. TestComplete powerful dan murah...tapi off the shelf cuma support MS Windows...tetapi ada workaround ([coklat ubat batuk]) yg tak dipublishkan kat mana-mana yg my engineer dah jumpa yg membolehkan TestComplete utk applikasi on Linux juga.

    Saja je nak share sikit-sikit yg saya tau tentang testing especially GUI testing.

    Wallahualam.


  5. Yg kena jaga machine tu..bukan software tester. Tu tester biasa - kat dlm manufacturing.

    Kalau software tester yg ikut biasanya orang-orang yg ditugaskan menguji perisian-perisian tertentu - samada sebagai "end user" atau pun sebahagian dari development/verification team.

    Kalau sebagai end user ni boleh dikira sebagai "black box" testing.

    You just ada manual, atau user guide seperti user yg beli software tu.

    So you cuba semua process biasa seperti - install software, dan gunakan features yg dinyatakan didalam user guide.

    Biasanya company suka hire software tester ni utk test GUI sebab GUI test susah nak di automated.

    GUI - graphical interface - samada macam Windows application atau pun web based.

    Utk jadi tester yg berjaya kena biasa "thinking out of box" sikit kalau nak bagi software tu "crash".

    Contoh kalau GUI tu ada text box - cuba guna input string yg panjang (eg. lebih dari 256 character - sebab banyak software string ada limit sampai 256 character), cuba guna keystroke yg pelik - kombinasi F1..F12 + alt keys.

    Cuba feature macam drag-drop tapi buat cara pelik sikit...macam drag satu component drop on desktop..tengok apa jadi.

    Kalau software tester yg datang dari bahagian development, biasanya utk buat "white box testing".

    Tester ni tau macam mana software to behave internally sebab dia ada access kpd dokumen design dan juga kod.

    Jadi tester macam ni boleh cuba macam-macam test cases utk exercise flow-flow yg berlainan.

    Targetnya ialah untuk mendapatkan "test coverage" yg mencukupi - biasanya 85% keatas. Ada juga company yg letak syarat sampai 95% keatas.

    Tulah serba sedikit yg saya tau...wallahualam.

    Wassalam.


  6. Info product adalah antara product yg laris dijual online - laris, + banyak profit + senang nak maintain (semua boleh diautomated).

    Apa jenis info produk - ebook, videos - bukan cetak rompak - tapi video yg boleh dibuat sendiri macam instructional videos yg tunjuk macam mana nak guna sesuatu software menggunakan tool spt CamStudio. Ebook paling senang (guna PDF format).

    Apa pulak title yg mendapat sambutan - ebook tentang macam mana nak cari duit lah yg paling laku (internet biz, MLM, macam mana nak mula business, forex, trading etc.). Selain dari tu, subjek motivasi - self improvement produk.

    Business model - terpulang nak jadi affiliate (tak payah nak create produk sendiri), jadi reseller (beli right/license dari orang lain punya produk), buat produk sendiri, atau setakat nak cari duit dari "adsense". Setiap satu memerlukan perancangan sebelum mula - yg paling penting ialah "marketing strategy".

    Wassalam.


  7. Virtual function ni utk support konsep polymorphism didalam object oriented.

    Kegunaannya ialah supaya kita boleh buat apa yg dipanggil "generic programming".

    Katakan saya nak buat satu program yg tugasnya adalah untuk execute fungsi utk melukis berbagai bentuk.

    Kalau ikut cara biasa, kita boleh guna case statement lebih kurang macam ni:

    //Fail A.cpp

    switch(bentuk)

    {

    case BULAT: fungsi_lukis_bulatan();

    case SEGITIGA: fungsi_lukis_segitiga();

    case SEGIEMPAT:fungsi_lukis_segiempat();

    }

    //Fail B.cpp

    fungsi_lukis_bulatan() { //}

    fungsi_lukis_segitiga() { //}

    fungsi_lukis_segiempat() { // }

    Kod ini biasanya berada didalam source kod yg berlainan dari fail yg mengandungi kod untuk fungsi_lukis.... yg digunakan.

    Sekarang sekiranya saya ingin menambah fungsi baru - melukis polygon saya kena ubah kedua-dua fail A.cpp dan B.cpp. Spt dibawah ini:

    //Fail A.cpp

    switch(bentuk)

    {

    case BULAT: fungsi_lukis_bulatan();

    case SEGITIGA: fungsi_lukis_segitiga();

    case SEGIEMPAT:fungsi_lukis_segiempat();

    case POLYGON: fungsi_lukis_polygon();

    }

    //Fail B.cpp

    fungsi_lukis_bulatan() { //}

    fungsi_lukis_segitiga() { //}

    fungsi_lukis_segiempat() { // }

    fungsi_lukis_polygon(){ // }

    Kita tengok pula kalau kita guna konsep generic programming - ini kerana didalam design seboleh-bolehnya designer akan cuba delay menentukan sesuatu informasi tersebut selambat yg boleh - paling cepat ialah sekiranya semuanya perlu ditentukan semasa kompilasi (seperti contoh diatas). Apa-apa pernambahan memerlukan source kod dikompil semula. Paling bagus ialah dilewatkan sehingga "run time". Tak perlu re-kompil apa-apa - contoh macam konsep "plug -ins". Kalau kita guna macam Firefox plugin - kita boleh install run time - download, restart Firefox dan feature baru sudah boleh digunakan. User tak perlu nak reinstall applikasi. Developer yg buat plugin tak perlu nak suruh Firefox org punya orang utk re-compile firefox source code.

    Kalau kod diatas menggunakan konsep generic programming/polymorphism:

    //Fail A.cpp

    fungsi_execute_lukis(Bentuk* instance_bentuk)

    {

    instance_bentuk->lukis();

    }

    //Fail B.h

    class Bentuk

    {

    //Salah satu virtual function

    virtual lukis() = 0; //default tak buat apa-apa

    }

    Sekarang katakan fail A.cpp dan B.cpp adalah base yg dijaga oleh orang lain.

    Sekarang anda nak tambah melukis bentuk BINTANG. Anda tidak perlu utk menyentuh samada fail A atau B.

    Cuma buat fail baru C.cpp

    //C.cpp

    //Include B.h supaya anda boleh inherit dari class BENTUK

    #include "B.h"

    class BENTUK-BINTANG: public BENTUK

    {

    lukis() { //lukis bintang;} //override virtual funtion dgn kita punya own kod utk lukis bintang.

    }

    //Main.cpp

    //Utk menyuruh fungsi_execute_lukis utk melukis bentuk bintang atau lain-lain bentuk

    //Lukis bintang

    BENTUK* instance_bintang = new(BENTUK-BINTANG);

    fungsi_execute_lukis(instance_bintang);

    Perhatikan kita cuma mengujudkan kod dan data utk objek bintang sekiranya perlu.

    Didalam contoh "switch-case" kod-kod utk semua jenis objek/drawing perlu di ujudkan walaupun kita mungkin hanya akan cuma menggunakan salah satu dari bentuk tersebut. Dalam banyak applikasi sesuatu objek boleh merupakan objek yg besar atau objek yg mempunyai dependency yg besar. Kebolehan utk mengujudkan hanya objek yg diperlukan berdasarkan "flow" atau pilihan pengguna (kata dlm contoh kita ada button "lukis bintang"...maka hanya kod yg mengujudkan bentuk bintang akan dipanggil) akan mengurangkan penggunaan memori (dan juga CPU) dengan banyak.

    Itulah serba-sedikit tentang penggunaan virtual/polymorphism.

    Lagi satu area yg banyak guna ni..."pattern". Check kat google.

    Wallhualam...


  8. Satu hal je kalau baca buku-buku motivasi dari barat ni.

    Utk orang Islam berhati-hati kerana kadang-kadang ada "benda-benda kecil" yg kita mungkin overlook yg bercanggah dgn aqidah kita. Contohnya macam dlm buku Think & Grow Rich ada banyak reference to apa yg dipanggil "infinite intelligence"...dan reference ke bible. So kena-kena pandai-pandai lah filter out apa yg salah tu. Kalau korang juga follow theory "Law of attraction"...macam dlam documentary movie "The Secret"..pun kena pandai filter.

    Sebagai contoh...

    Dulu masa aku pergi attend seminar Stephen Covey - 7 Habit... dia ada cakap utk dia punya 7 Habit tu salah satu cara utk tau apa yg kita inginkan ialah bayangkan apa yg orang lain katakan tentang kita pada hari kita mati...are you a good father,husband, boss, employer, neighbour..etc. Sekali pandang...mula-mulanya aku pun setuju jugak. Tapi ada kawan aku peringatkan aku sebagai org islam kita punya final reference bukanlah apa yg orang katakan pada hari mati kita...tapi apakah yg akan jadi setelah kita mati ? Kematian itu bukanlah penamatnya. Akhirat tu yg kekal.

    So sentiasa kena peringatkan diri kita...mereka punya reference lain. Kita punya reference adalah lain.

    Tapi utk perkara yg baik, tidak bercanggah, kita boleh belajar dan practiskan.

    ....I'm still learning.

    Wassalam.


  9. Setau saya sih stack itu suatu Tumpukan. Jdi kita musti masukin 1 demi 1. Gitu tapi untuk programnya gwe belum ngerti. Tolong donk dijelasin.

    Thank's b4

    Aturcaranya sudah pun ditunjukkan oleh CFoo++.

    Apa yg saya ingin tahu samada anda faham konsep STACK ini.

    Stack adalah "container" yg menggunakan konsep LIFO - Last In First Out utk manage datanya.

    Data dimasukkan kedalam stack menggunakan operasi "Push"...menolak data kedalam stack.

    Data dibaca menggunakan operasi "Pop"...mengeluarkan data yg terakhir sekali di "push" kedalam stack.

    Stack yg anda guna disini menggunakan fixed array untuk menyimpan data-nya...sesuai sebagai pengenalan utk belajar.

    Tetapi ianya tidak practical utk "real world" kerana - size nya tetap.


  10. Saya sekarang kat Penang.

    Sekarang ni software yg saya terlibat developmentnya...mirip-mirip macam compiler (nampak serupa tapi lain...).

    IDE software ni 90% macam Visual Studio, tapi kalau digged in ada banyak custom GUI. Actual software buat masa ni tak boleh lah nak bagi tau. Entah-entah ada antara korang yg pernah guna..sebab aku pernah jumpa satu version software ni kat kedai [lanun] CD.

    Development platform Windows, tapi final executables boleh run on Windows, Linux dan Solaris.

    Dulu ada support HP-UX, tapi dah abandoned sebab tak ramai customers yg guna HP-UX.

    Koding-koding yg mengancam kebanyakkannya dah falls under patent (US Patent) sebab our developers are encouraged utk file for patent utk new ideas. Lagi pun codes tu semua company punya harta intelek....

    Lagi pun kod yg mengancam utk saya, mungkin tak mengancam utk anda semua.

    Kalau ada apa-apa yg boleh dikongsikan saya akan kongsikan disini, kita belajar bersama.

    Saya pun masih banyak yg perlu dipelajari...perjalanan masih jauh.


  11. Tengok buku Steve McConnell (kalau tak silap nama dia) bertajuk "Code Complete".

    Lepas tu boleh tengok buku "Large Scale C++ Software Development"...author John Lacos..tapi specific utk C++ je lah.

    Tempat saya kerja ada 80 page coding standard...kalau ada masa I will list some of the rules and recommendations.


  12. This is based on my own experience.

    Saya pernah terlibat didalam beberapa pembangunan perisian yg melibatkan ramai orang...eemmh sekarang pun masih lagi.

    Team yg terlibat sekarang adalah dalam 600 orang utk develop satu software (95% dlm C++).

    Team distributed merata tempat - beberapa tempat di US, Canada, UK dan Malaysia.

    Setakat ni source code around 20 million lines of C++.

    Apa yg diperlukan....banyak benda.

    1) Infrastruktur

    2) Process defined

    3) Tools

    Infrastuktur - digunakan untuk synch codes dari merata dunia menggunakan remote synching + version control. Disebabkan lokasi yg diverse, setiap masa sentiasa ada team yg tengah berkerja dan new codes yg di checked in. Maka kena ada mechanism utk localized code checking/verification sebelum code boleh dimasukkan kepada master repository. Build kena dilakukan setiap hari - ini biasanya mengambil masa 4-5 jam.

    Selain dari itu, infrastruktur utk code juga perlu - kena ada high level architecture yg define macam subsystems communicate with each other. Macam mana nak tambah new subsystem. Error propagation antara subsystems. Test requirement, dan embedded testing structure.

    Proses - bila mula project? Bila project defined? Bila code freeze - maknanya tak boleh tukar lagi. Bila nak mula alpha,beta,field,customer test? Untuk setiap fasa ada matrix yg diletakkan seperti kadar peratusan "bugs" yg masih belum di fix. kadar regresssion test yg masih fail.

    Tools - yg dibeli seperti Rational Purify, MKS, PVCS. Tapi lebih banyak internal tools utk build, dan produce package, installable package, utk run regression test (ada ratus-ribu testcases), server farm - macam-macam jenis server farm, project tracking, bug tracking, documentation tracking (dari review sampai approval flow), statistic data collection. Dan banyak tools yg kecil-kecil spt utk check subsystem dependencies, special file utk disable certain portion of codes, atau utk force certain flow utk testing....

    Tapi overall masaalah utama ialah komunikasi.

    Banyak masa yg dihabiskan utk review specification, design dan code...tak kira masa utk "argue" lagi.

    Ada banyak lagi yg tidak dapat saya nyatakan disini.

    Tetapi harap dapat memberi serba sedikit gambaran tentang large system development.

    Wasslam.


  13. Ada cara utk display sesuatu format dlm bentuk binari dlm C++...tapi tak mudah.

    Boleh tengok something macam ni:

    cout << bitset<numeric_limits<unsigned short>::digits>(8)<<endl;

    Ini akan display digit 8 dlm bentuk binari "1000".

    OK, go back to original question.

    Saya ada doubt tentang solution yg dikatakan dlm perpuluhan, kerana datanya dlm bentuk

    char *C[K][N]={"13", ....... }

    Ini adalah 2 dimensional array of string (C punya format - char*).

    Dan sebelum anda membuat diff....anda "cast" data seperti ini:

    g=*C[a][j];

    *C[a][j] akan hanya memberi nilai pertama dalam nombor string. Contoh "123" cuma '1' yg akan dikembalikan.

    "g" pula anda declare sbg integer maka character dari "*C[a][j]" dicast kpd nilai ASCII yg digunakan utk represent characternya.

    Jadi saya tak tau samada ini yg ingin anda lakukan, tapi dari segi logik nya nampak terlalu banyak kesalahan dlm contoh "persepuluh" yg anda berikan disini.

    Wassalam.


  14. setelah gwe cek lagi kalau pangkatnya diisi (-) minus komputer hasilnya kacau. gimana dunk ada yang bisa bantu ?

    Adakah "pangkat" sama dengan "power" --> 2^3 = 2x2x2, 3^2 = 3x3 = 9 ?

    Sekiranya betul, kod fungsi pangkat anda :

    int pangkat (int basis, int p) {

    if (p==0) {

    return 1;

    }

    else {

    return basis*pangkat(basis,p-1);

    }

    }

    Adalah nampak seperti fungsi "fibonacci" (yg salah). Iaitu 3! = 3*2*1 = 6.

    Kalau pangkat adalah power cara yg paling mudah ialah menggunakan loop.

    int pangkat (int basis, int p)

    {

    int result=basis;

    if(p==0) { return 1;}

    else if (p > 0)

    {

    for(int i=1;i < p;i++) result *= basis;

    }

    else //negative

    {

    return -1;

    }

    return result;

    }


  15. Apa yg anda patut buat adalah bergantung kepada minat dan "visi" anda.

    Programming didalam apa-apa bahasa aturcara pun adalah perkara yg mudah, yg boleh dipelajari sendiri.

    Anda perlu tanya samada anda minat dgn programming atau computer science atau software engineering...ini untuk bidang-bidang yg bersangkutan.

    Programming by itself adalah merupakan skop yg kecil, sebab itu saya katakan ianya boleh dipelajari sendiri.

    Di negara-negara maju spt US, Finland, France dan Germany ramai orang dari berbagai bidang (fizik, math, medical etc.) yang pandai dalam programming. Programming itu sendiri cuma merupakan tool atau medium utk mereka menyudahkan kerja mereka.

    Sekiranya anda minat dengan pembangunan perisian itu sendiri anda perlu lihat kepada bidang didalam computer science. CS akan memperkenalkan anda kepada berbagai bahagian yg boleh digunakan untuk menghasilkan teknologi yg berkaitan dengan penggunaan komputer itu sendiri seperti - artificial intelligence, language theories, compiler technologies, dan bahagian yg specific seperti computer architecture, networking (data communication).

    Software engineering pula lebih menjurus kepada proses pembangunan perisisian itu sendiri.

    SDLC - software development lifecycle adalah bahagian yg difokuskan dlm software engineering.

    Ianya memfokus kepada area spt quality matrix, quality control, large system development, project management, development ecosystem (methodologies - OOP -->Agile/Scrum...etc., build/version control etc.).

    So...banyakkan lagi membaca dan cari apa yg anda minat.

    Wassalam.


  16. int input=0;

    int odd=0;

    int div5=0;

    int positive_total=0;

    cin>>input;

    while(input !=0)

    {

    //sum all positive

    if(input>0) positive_total+=input;

    //how many odd number

    if(input%2) odd++;

    //how many numbers divisable by 5

    if(!(input%5)) div5++;

    cin>>input;

    }

    cout<<"Odd = "<<odd<<endl;

    cout<<"Total positive="<<positive_total<<endl;

    cout<<"Divisible by 5="<<div5<<endl;

  17. Oop


    Karakteristik object-oriented (analysis/design/program)

    1) Encapsulation

    2) Inheritance

    3) Polymorphism

    Encapsulation

    ----------------

    Konsep-konsep dan solutions didalam program tersebut dikumpul ke-bentuk interaksi antara objek.

    Objek-objek pula mempunyai antara muka yg menyembunyikan coding details.

    contoh macam dalam C++, interface dalam bentuk class definition dalam header file.

    Sesiapa yg ingin menggunakan object tersebut tidak perlu mendalami source code, cukup dengan information yg ada didalam definisi class.

    Inheritence

    -------------

    Objek-objek yg diujudkan boleh mempunyai hubungan diantara satu sama lain dalam bentuk heirarchy - anak-anak dan bapa. (parent class , child class). Dimana class bapa memberi definisi asas kepada interface dan behavior sesuatu objek. Tetapi object baru yg dipanggil class anak boleh diujudkan dari class bapa dengan menambah dan juga mengubah behavior asal yg diberi oleh class bapa.

    Contoh class bapa ialah class kenderaan. Dari class kenderaan kita boleh ujudkan class baru yg mewakili kereta, motosikal,dan basikal - yg merupakan jenis kenderaan yg lebih specific.

    Polymorphism

    ----------------

    Mekanism utk membangunkan "generic" program.

    Katakan saya sedang membangunkan satu function untuk menguji kenderaan.

    Maka, instead of mengujudkan 3 function yg berlainan - test_kereta, test_moto, dan test_basikal

    Saya boleh tulis satu function test_kenderaan yg boleh menguji apa juga objek asalkan ianya berasal dari kelas anak kepada kenderaan.


  18. Seperti biasa, gunakan konsep "divide & conquer".

    Fahamkan soalannya.

    Tasks yg perlu dilakukan:

    1) Baca file people.dat

    2) Parse content people.dat, dapatkan nilai pair tahun vs. populasi

    3) Print out graph.

    1) Baca file people.dat

    Cari macam mana nak baca text file dalam C/C++.

    2) Parse content

    Algo mungkin macam ni:

    selagi file people.dat tak habis

    baca setiap barisan dalam file

    untuk setiap baris

    dapatkan nilai tahun dan simpan

    dapatkan nilai populasi dan simpan

    tamat baris

    tamat baca file

    data array tahun[10] mungkin macam ni

    tahun[0] = 1900

    tahun[1] = 1920

    :

    tahun[10] = 2000

    data array populasi[10] mungkn macam ni

    pop[0] = 20

    pop[1] = 34

    :

    pop[10] = 120

    Macam tulah adanya...kenalah fikir skit.

×
×
  • Create New...