View Full Version : C\C++: sembang basic(#1)
Assalamu'alaikum wbt,
dah lama da tak sembang pasal C++ ni.. dah ler ilmu sedikit,, lama tak belek,, mesti dah lupa ni.. jom kita sembang pasal c/cpp ni.. saya bukak topik ini bukan maknanya saya jadi tukang ajar ye..hanya nak bangkitkan.. harap pakar2 di sini dapat membantu saya belajar...
wassalam
-kosong-
maestro
30-04-02, 05:24 PM
bagus jugak ko bukak topik camni... walaupun memang banyak tutorial kat internet.. tapi tak salah kalau kita tambah lagi satu kan...
maestro pun bukannya pandai sangat dalam c++ ni.. baru ada pengalaman 1 1/2 tahun.. tu pun sebab projek guna c++... nanti boleh la kita tukar2 pendapat... atau tanya soalan..
so... siapa yang nak mulakan ngajar c++ ni??
a'kum..
terima kaseh maestro(guru saya kat sembang.com dulu selain, tukantaip,nickname,kidino,panji_alam etc).. saya dah lama tinggal C++ sebab bz sangat dengan belajar kat skolah(yg tak da kaitan dengan C++ ni)...
pendapat saya, apa kata kita mulakan dengan membuat program mudah dr scratch(kalau mula dr program susah, takut saya tak dpt tangkap). jadi, kalau sapa2 tak paham boleh lah sama bincang,, key..
cadangan program:
Program ini menerima input e-mail dr user.. pastu program akan memasukkan e-mail yg dimasukkan ini ke dlm fail untuk di-save selepas chechk dlm fail yg e-mail tu belum ada..
Dari penglihatan user,, user boleh
1) masukkan e-mail
2) delete e-mail dalam fail
3) lihat senarai e-mail
4) quit
ini cadangan saya..bagaimana? saya harap diajar dr macam mana nak mulakan dr idea spt ni.. nak buat apa dulu.. algorithm dulu? algorithm yg macam mana? flow chat? pseudecode? saya buakan CS student..
sekian,, wassalam.
-kosong-
aku pun bukannya tahu sangat pasal C/C++ nih...so, sama-samalah kita belajar ek..
ok...untuk program tuh, mula2 kita kena buat algoritma dulu..tak kisah lah algoritma cam mana pun...janji algoritma...ada yang suka carta alir(flowchart) dan ada yang suka psedokod(pseudocode)...so leh wat algoritma ikut kesukaan anda...
cam aku lebih prefer pada psedokod sbb aku leh wat ikut bahasa aku paham....
first kita wat menu dulu...sbb ngko dah bagitau yg user leh masukkan e-mail, delete e-mail, lihat senarai e-mail dan exit...satu lagi kita kena tambah...in-case kalau user terlupa menu dia leh tengok balik menu kita tuh..
fungsi Menu
cetak (A - Masukkan e-mail)
cetak (D - Padam e-mail dari fail)
cetak (L - Lihat senarai e-mail dari fail)
cetak (M - Paparkan menu utama)
cetak (Q - Keluar dari program)
tamat fungsi Menu
kalau boleh kunci yang kita gunakan untuk menu tuh senang utk kita dan juga pengguna...cth cam A wakili Add, D wakili Delete, L wakili List, M wakili Main Menu dan Q wakili Quit.
ok....tu je wat masa skrg nih...kita sambung lepas nih ek...
any comment, anyone??
as'kum..
baguslah, seronok gak boleh diskus2 benda2 macam ni, hopefully sesama boleh bagi idea, saya pun tak reti gak, boleh belajar sekali...
so tgh musykil lagi sebenarnya... nak tau, program ni saya rasa melibatkan i/o file (yang melibatkan #include stdio.h ), dan juga adakah kita perlu treat setiap email tu sebagai indivual text file, yang mana akan di simpan di dalam binary file (sebagai list-view file)
okay, kalau cam tu, saya buat camni, saya try je, kay?
main()
{
/*mainmenu*/
if (char = A) {add_femail} /*tambah email dlm list textfile*/
else if (char = D) {delete_femail} /*delete email dlm list textfile*/
else if (char = L) {viewlist_femail} /*view list text file*/
else if (char = M) {main_menu}
else if (char = q) {quit}
}
bool add_femail (const char* filename)
{
fopen ("listview.txt", a) //buka file
fprints(char(filename)) //print nama email file - string
fclose ("listview.txt") //close file
}
bool delete_femail (const char* filename)
{
fopen ("listview.txt", a) //buka list file
fscans () //scan nama/string file nak delete
xxxxxxxxxxxxxxx // tak sure yang ni tapi untuk delete email file
fclose ("listview.txt") //close list file
}
int viewlist_femail (????-> apa parameternya?)
{
fopen ("log.txt", "r")
// yang lain tak sure
}
void main_menu()
{
clearscreen() //padam then lukis balik
//yang ni sebagai interface for the user - function sebagai drawto() boleh digiunakan
}
hmmm.. rasa tak puas hati tak lengkap.. sapa leh tolong2 tambahkan..?
assalamu'alaikum,
terima kaseh semua,
wow.. max... sat-sat..saya tak sempat nak tangkap gi ni.. cepatnya max dah boleh tulis code direct..pengetahuan saya tak sampai ke sana..best la kalau ada power coder kat sini.
okey lah kalau rzmie nak guna pseudocode, saya ikut lah.. tp, saya rasa flow chart perlu juga utk overview program...pseducode,, saya akan sesuaikan ngan rzmie.
lepastu, dr sini.. kita nak buat apa?
saya senaraikan fungsi yg terlibat duu
input_mail()
delete_mail()
list_mail()
menu_utama()
kita mulakan satu2 fungsi ok.. dr sini kalau kita perlu fungsi2 lain nanti, kita tambah kemudian.
--------------------------------------------------------------
nama fungsi: input_mail()
return value: BOOL bMail
arguement: STRING sMail_add
gambaran fungsi: fungsi ini menerima sMail_add dr main() . fungsi ini akan membuka fail dan melihat sama ada sMail_add yg dimasukkan telah ada dlm fail atau belum. kalau bMail = TRUE, sMail_add akan disave, kalau bMail = FALSE, input mail sekali lagi...
pseudecode:
sMail <-- sMail_addr
buka fail
scanf()-- chechk . mail ada dlm fail?
if ada ,
bMail = FALSE
else {
bMail = TRUE;
fprintf().. simpan
return bMail
-----------------------------------------------------------
bagaimana? mintak pendapat kawan2.. saya tulis ni ikut sedap jer ni.. takder pengetahun CS langsung..
wassalam
-kosong-
alamak...semua dah bagi kod nih...cam mana nih??? tak kisahlah...aku teruskan lagi dengan psedokod tuh...betul gak pendapat kosong tuh...carta alir perlu untuk tgk cam mana aliran sesuatu program...
so kita sambung ok...
kita ada 3 fungsi utama....padam e-mail daripada fail...tambah e-mail ke dalam fail dan lihat senarai e-mail dalam fail...cara nih yg akan digunakan oleh aku nih tak semestinya akan dipersetujui oleh semua...sbb byk cara kita boleh gunakan untuk buat sesuatu aturcara...tp kalau ada salah mana2 cakap lah ok...skrg kita teruskan dengan psedokod..
fungsi TambahEmail
buka fail email utk tambahkan email(append)
mintak email dari pengguna
check email tersebut ada dlm fail
jika ada
jgn tambah dlm fail
cetak "E-mail telah wujud"
jika tidak wujud
tambah pada akhir fail
cetak "fail telah dikemaskini"
tutup fail
tamat fungsi TambahEmail
selesai satu fungsi....kita buat fungsi yang lain pula....sapa2 ada soalan tanya je ek...jgn malu2...kami pun tak reti gak...cuma pendapat aje nih...meh kita berkongsi ilmu sama-sama...meh kita sambung lagi...
fungsi HapusEmail
buka fail email dlm mod baca dan tulis(read & write mode)
minta email daripada pengguna
check email tersebut daripada pengguna
jika wujud
hapuskan email daripada fail
cetak "E-mail telah dibuang dan fail telah dikemaskini"
jika tiada
cetak "e-mail tersebut tiada dalam fail"
tutup fail
tamat fungsi HapusEmail
fungsi LihatSenaraiEmail
buka fail email dalam mod baca sahaja(read only)
selagi ada data dalam fail
cetak senarai email
buat gelung
tutup fail
tamat fungsi LihatSenaraiEmail
ok...dah tamat semua fungsi-fungsi....skrg nih nak tulis psedokod untuk fungsi main pulak...
fungsi main
panggil Menu
selagi pengguna tak tekan 'Q'
cetak "Sila buat pilihan anda"
ambil pilihan daripada pengguna
jika pilihan 'A'
panggil fungsi TambahEmail
jika pilihan 'D'
panggil fungsi HapusEmail
jika pilihan 'L'
panggil fungsi LihatSenaraiEmail
jika pilihan 'M'
panggil fungsi Menu
jika pilihan 'Q'
'jgn buat apa-apa
selain daripada pilihan-pilihan legal
cetak "Pilihan yang anda buat adalah tidak sah"
tamat fungsi main
ok...dah tamat dah psedokod utk program tuh...aku nak sambung buat keja sat...nanti aku sambung balik dgn tulis kod utk setiap fungsi....so, ada apa-apa soalan tanyalah...kalau malu nak tanya leh tulis message peribadi kat aku (utk aku nyer psedokod lah ek...)
A'kum....
Hmm... interesting discussion here. :)
Personally, I've never really liked C++. If I'm going to do a sequential program (instead of an OO one), I'd use plain old C. I can't stand C++'s iostream and whatnot (personal preference).
As for describing algorithms, I like to use pseudocode. Flowcharts are not practical (Rodney Brooks also concurs).
-= Obi-Wan =-
Avicenna
02-05-02, 02:57 PM
Saya dah buang coding diatas. Nanti anti climax pula, lagipun korang semua nak guna plain C.
Ala... naper buang? Jgn la majuk Avicenna, hehee... I just said it's personal preference. Sebenarnya bagus gak biasakan diri ngan C++... even if you don't use the OO stuff. I personally don't like C++, but if it fits the job, I'd use it.
-= Obi-Wan =-
a'kum dan terima kaseh
semua..
avicenna... kalau tak keberatan, saya nak code yang avicenna buat sebelum ni.. sebenarnya saya nak ambil pagi tadik,, tp tak sempat sebab ada kuliah.. terkejut bila balek taksat nak amek dah ilang.. aik... hope dpt bg semula.. saya rasa banyak yg saya dpt belajar dr situ... utk buat program ni... tolong yaaa..
rzmie.. saya pon nak teruskan pseudecode jugak.. sebab takut tak sempat ikut.. tp,, malam ni baru saya tambah.. skang ader kerja skit...
wassalam..
-kosong-
panji_alam
02-05-02, 05:09 PM
Akum..tak sedar plak ada topik ni...tak ready lagi bagi cadangan...coding aku sendiri ni pundah nak terkencing nak pikir...
Lagipun saya dah tak coding C\C++ dlm windows..dlm Linux..)lebih kurang je)..takut awak nak gui je...anyway avicenna..mane coding?..kite org nak gak.
Posting Asal oleh panji_alam
Lagipun saya dah tak coding C\C++ dlm windows..dlm Linux..)lebih kurang je)..takut awak nak gui je...
Hmmm... dalam Linux ada GUI per? QT, GTK+, you name it :)
-= Obi-Wan =-
fa|thz|LeR
04-05-02, 01:37 AM
waa.. mmg best topik nieh. jap aku baca dulu. dah lame tak citer pasal C. O:O O:O O:O O:O O:O
panji_alam
06-05-02, 12:50 AM
Posting Asal oleh Obi-Wan_Kenobi
Hmmm... dalam Linux ada GUI per? QT, GTK+, you name it :)
-= Obi-Wan =-
i mean gui in windows....
tak lengkap ayat...
tapi qt gtk+ ngan windows gui adalah library yg berbeza.....but i think kawan kita ni talking more about c/c++ in windows environment.
Posting Asal oleh panji_alam
i mean gui in windows....
tak lengkap ayat...
tapi qt gtk+ ngan windows gui adalah library yg berbeza.....but i think kawan kita ni talking more about c/c++ in windows environment.
Well, there's always wxWindows for cross platform C++ development... you don't <i>have</i> to use MFC and whatnot to have a GUI in Windows....
-= Obi-Wan =-
kuizikel
06-05-02, 09:24 AM
best..best..dah lama tak jengok2 C/C++..sejak dah pass subjek tu..kehkehkeh..tumpang tgk la yer...::: :::
izafarid
06-05-02, 01:02 PM
Kalau boleh bincang setiap bahagian satu demi satu hingga selesai. Buat psecedo code hingga complete dan jangka setiap masalah yang bakal ada. Jangan terburu-buru buat coding. Seperti fungsi untuk menambah email, sempurna fungsi yang ada sehingga lengkap dan kemudian baru bincang kepada fungsi yang lain.
Keseluruhan applikasi secara kasar
1. Satu fail yang digunakan untuk menyimpan senarai email
2. Satu fail untuk menyimpan isi kandungan email
Senario tambah email secara kasar
1. Tambah nama email didalam senarai yang ada
2. Tambah fail yang menyimpan isi kandungan email
3. Benarkan duplicate e-mail
Masalah:
Apabila duplicate e-mail berlaku, akan wujud masalah untuk mengemaskini dan menghapuskan email. Cuba bincangkan macam mana untuk mengatasi masalah ini.
nota:
Senario diatas adalah kehendak user dan ia perlu ada untuk applikasi ini
panduan:
Fikirkan secara logik dan ketepikan urusan pengaturcaraan.
kuizikel
06-05-02, 01:55 PM
Apabila terdapat duplicate email, beri mesej kepada user e-mail tersebut tlh terdapat dlm senarai.
Beri pilihan kepada user sama ada ingin menambah e-mail yang lain atau quit
Kemudian...
ish..blur aaO:O O:O O:O O:O
maestro
06-05-02, 05:44 PM
bagi maestro... maestro lebih suka buat feature by feature.. cam izafarid kata.. buat satu persatu..
mula2 tu.. apa yang dapat di lihat oleh user apabila program dilarikan? satu interface mudah yang memaparkan satu senarai email yang sedia ada atau tidak ada...
so, kita start dengan membina satu interface untuk load fail senarai email dan paparkannya... apabila feature ni dah berjalan dengan baik, barulah kita tambah add email, delete email, etc satu persatu...
bagi maestro cara camni baru senang nak belajar... sebab newbie tak perlu nak peningkan kepala dengan 2-3 features sekaligus...
a'kum semua,,
terimakaseh kpd izafarid, maestro kerana bagi nasihat. makaseh juga yang lain kerana menyertai diskusi ini.
rzmie.. sorry lama tak balas.. sebab terlampau bz 4 hari kebelakangan ni..tp, mulai skang dah balik macam biasa..
macam yg mereka nasihatkan,, kita buat satu feature dulu lah ok.. tp,, sambil2 tu kita pk ke depan jugak lah.. :) supaya tak perlu ubah banyak utk sesuaikan dengan features yg akan ditambah nanti.
ini adalah tambahan pseudecode yg rzmie buat.. nanti mintak cadangan dr kengkawan lagi
-----------------------------------------------------------------------------
nama fungsi: TambahEmail
return value: BOOL bInput_mail
arguement: STRING sMail_add
------------------------------------------------------------
pseudecode:
buka fail email utk tambahkan email(append)
jika BUKA fail = tak boleh,
cetak "Fail tidak boleh dibuka."
---deklarasi--
BOOL bInput_mail
set bInput_mail = FALSE
-----
mintak email dari pengguna
(check email tersebut ada dlm fail)
jika ada
{
jgn tambah dlm fail
cetak "E-mail telah wujud"
set bInput_mail = FALSE
}
jika tidak wujud
{
tambah pada akhir fail
cetak "fail telah dikemaskini"
set bInput = TRUE
}
tutup fail
return bInput_mail
---------------------------------------------------------------
tamat fungsi TambahEmail
bagemana rzmie dan yg lelain??
cuma nak tanya satu.
yg bahagian
mintak email dari pengguna
tu,,
saya rasa lebih elok kalau dibuat di dlm main() sebab nanti kita nak kena buat fungsi chek string pulak.. maner tau user input mail yang ntah aper-aper.. pada pandangan saya,, biarlah STRING mail yg di"argue" ke dlm fungsi TambahMail tu adalah STRING yg dah bersih.. maksudnya STRING itu adalah email yg sah,, cuma nak pastikan email tu dah ada dlm list ke belum... tp,, ni pandangan saya jerlah..
bagaimane dgn yg lain2..
wassalam
-kosong-
A'kum.. maaf terlabat..
buat sambil-sambilan jer.. tu yang lambat ni..
rasanya dah boleh buat dah sedikit code mengenai features ni.. InsyaAllah,, nanti saya saya paste kan.. sama2 belajar... harap dpt tunjuk ajar
// NOTA
//
// ty = tanya
//
//
////////////////////////////////////////////////////////////
typedef struct MAIL{
char s_mail[SIZE]
int mail_len
TANYA ty_pjg_mail
TANYA ty_betul_mail
}E_MAIL
----------------------------------------------------------
==============================================
nama fungsi: main()
return value: 0
arguement: none
-----------------------------------------------------------
pseudecode:
--- deklarasi ---
E_MAIL mail
E_MAIL *p_mail = &mail
TANYA b_input = FALSE, b_save = FALSE
-----
cetak "Selamat Datang Ke Sistem Pengurusan Mail ver. 1.0"
// initialize mail
panggil .InitMail().
cetak "Masukkan mail : "
input p_mail->s_mail
panggil b_input = InputMail(p_mail->s_mail)
// check input betul atau tak?
jika(b_input == TRUE)
{
b_save = TambahMail(p_mail->s_mail)
// check dah save ke
jika(b_save == TRUE)
{
cetak "mail p_mail->s_mail dah disave ke dalam fail"
// ** ke Menu()
}
else
{
cetak "p_mail->s_mail dah ada dlm fail. Sila masukkan lagi : "
input p_mail->s_mail
}
-------------------------- tamat --------------------------
===========================================================
nama fungsi: InitMail()
return value: void
arguement: E_MAIL *p_mail
------------------------------------------------------------
pseudecode:
--- deklarasi ---
int i
-----
p_mail->mail_len = 0
p_mail->ty_pjg_mail = FALSE
p_mail->ty_betul_mail
for(i=0;i<SIZE)
p_mail->s_mail = '\0'
-------------------------- tamat -------------------------
==========================================================
nama fungsi: InputMail()
return value: bool
arguement: char *stringMail
-----------------------------------------------------------
pseudecode:
--- deklarasi ---
TANYA tanya = FALSE
-----
//check sama ada terdapat '@' dan '.' di dalam string
jika('@' DAN '.' == ada)
{
//check '@' mesti berada lebih dulu drp '.' & <---- alamat
jika(&'@' < &'.')
{
tanya = TRUE
}
else
{
tanya = FALSE
}
}
return tanya
------------------------- tamat ---------------------------
===========================================================
nama fungsi: TambahEmail ()
return value: bool
arguement: char *sMail_add
------------------------------------------------------------
pseudecode:
---deklarasi--
BOOL bInput_mail
set bInput_mail = FALSE
FILE *pFile = NULL
-----
buka fail email utk tambahkan email(append)
jika (BUKA fail = tak boleh),
cetak "Fail tidak boleh dibuka."
(check email tersebut ada dlm fail)
jika ada
{
jgn tambah dlm fail
cetak "E-mail telah wujud"
set bInput_mail = FALSE
}
jika tidak wujud
{
tambah pada akhir fail
cetak "fail telah dikemaskini"
set bInput = TRUE
}
tutup fail
return bInput_mail
------------------------- tamat -------------------
harap dapat ulasan dr kawan-kawan
makaseh..
wassalam
-kosong-
a'kum semua..
saya dah try tulis code sedikit berdasarkan pseudecode yg saya buat.. tp berubah jugak... harap dpt ulasan ..
------------------------------
#include <stdio.h>
#include <string.h>
#define SIZE_MAIL 45
typedef enum {FALSE,TRUE}TANYA;
typedef struct MAIL{
char str_mail[SIZE_MAIL];
int n_mail_len;
TANYA ty_pjg_mail;
TANYA ty_betul_mail;
}E_MAIL;
// deklarasi
TANYA CheckMail(E_MAIL *p_mail);
void InitMail(E_MAIL *p_mail);
TANYA InputMail(E_MAIL *p_mail);
///// tamat deklarasi
void InitMail(E_MAIL *p_mail)
{
int i=0;
p_mail->n_mail_len = 0;
p_mail->ty_pjg_mail = FALSE;
p_mail->ty_betul_mail = FALSE;
for(i=0;i<SIZE_MAIL;i++)
p_mail->str_mail[i] = '\0';
}
TANYA InputMail(E_MAIL *p_mail)
{
printf("Masukkan mail : ");
fgets(p_mail->str_mail,sizeof(p_mail->str_mail), stdin);
// check sama ada input sah or not!
p_mail->ty_betul_mail = CheckMail(p_mail);
return p_mail->ty_betul_mail;
}
TANYA CheckMail(E_MAIL *p_mail)
{
int i = 0;
for(i=0;i<SIZE_MAIL;i++)
{
if(p_mail->str_mail[i] == '@' || p_mail->str_mail[i] == '.')
{
p_mail->ty_betul_mail = TRUE;
break;
}
else
p_mail->ty_betul_mail = FALSE;
}
return p_mail->ty_betul_mail;
}
int main()
{
E_MAIL mail;
E_MAIL *p_mail = &mail;
TANYA ty = FALSE;
InitMail(p_mail);
ty = InputMail(p_mail);
if(ty == TRUE)
printf("Mail anda telah disimpan.\n");
else
printf("Ada error!\n");
return 0;
}
-----------------------------------
soalan 1: di fungsi InputMail(E_MAIL *) tu,
ada tak cara lain yg lebih baikuntuk menerima input dr user?
soalan 2: Macam mana cara nak check karekter dlm string yg terbaik.. saya sekarang guna algo macam dlm fungsi CheckMail() itu.. tp. rasa macam tak best dan tak efisyen la.. sebab itu baru satu for().. kalau banyak kebarangkalian user memasukkan input yg salah,, maknanya kena lebih banyak kali cheklah kan? err..soalan saya boleh difahami?
harap dibantu. makaseh
-kosong-
Posting Asal oleh kuizikel
Apabila terdapat duplicate email, beri mesej kepada user e-mail tersebut tlh terdapat dlm senarai.
Beri pilihan kepada user sama ada ingin menambah e-mail yang lain atau quit
Kemudian...
ish..blur aaO:O O:O O:O O:O :::
saya nak tanya kpd kekawan camna nak buat gambo yg kat tepi kotak tu?/
sori le ganggu korang..bleh tulung tak.
kuizikel
22-05-02, 01:37 PM
gambo yang mana?
vBulletin® v3.7.1, Copyright ©2000-2008, Jelsoft Enterprises Ltd.