RenzCutie

Untitled

Oct 12th, 2021
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.25 KB | None | 0 0
  1. #include<iostream>
  2. #include<thread>
  3. #include<chrono>
  4.  
  5.  
  6. using namespace std;
  7.  
  8. /*
  9.     I hope maintindihan mo tong explanation ko :)
  10.     SO ang clog at cerr ay kadalasang ginagamit sa pagdedebug ng code,
  11.     para makita ang mali sa iyong code ganun pero magkaiba silang dalawa,
  12.     si cerr ay un-buffered pero si clog ay buffered. Bago ko muna ituloy,
  13.     ano nga ba ang buffer sa c++ at iba pang programming language?
  14.    
  15.     Sa bawat program na pinoproduce natin ay merong nakalaan na storage
  16.     sa certain memory ng ating RAM, kuwari may code kang gento:
  17.     char sample[6] = "ABCDEF";
  18.                 ^ insert natin ang number na to na tumutukoy sa kung gaano
  19.                   karami ang kakailanganing 'blocks'(space) na magagamit
  20.                   sa memory para magstore ng string.
  21.    
  22.         BEFORE          AFTER
  23.      1111  - 'x'     1111  - 'x'
  24.     [1112] - 't'    [1112] - 'A'
  25.     [1113] - 'u'    [1113] - 'B'
  26.     [1114] - 'p'    [1114] - 'C'
  27.     [1115] - 'w'    [1115] - 'D'
  28.     [1116] - 'f'    [1116] - 'E'
  29.     [1117] - 'p'    [1117] - 'F'
  30.      1118  - 'u'     1118  - 'u'
  31.  
  32.     Eto ang tinatawag nating buffer kung saan dinadala muna ni computer ang data
  33.     sa RAM bago ilagay sa mismong storage ng computer. Bat nga ba to ginagawa ni computer?
  34.     Kasi mas mabilis magprocess ang RAM kesa sa typical na storage like HDD at SSD,
  35.     pansin naman natin kung gano kamahal ang RAM kesa sa SSD, (8gb RAM kasing price lang ng 256gb SSD)
  36.     Hindi agad agad makikita ang output kapag nasa buffer pa sya.
  37.     Try mo tong i run: ang lalabas na resulta ay sabay sila na magaappear ang 1 2 3 4 5.
  38. */
  39. void buffered(){
  40.     int i = 0;
  41.     while(i < 5){
  42.         cout << i + 1 << " ";
  43.         this_thread::sleep_for(chrono::seconds(1)); //sleeps the thread (tigil muna si code)
  44.         i++;
  45.     }
  46.     cout << endl;
  47. }
  48. /*
  49.     Eto namang code na susunod ay deretso na sa mismong output ni computer, hindi na sya tutungo pa
  50.     sa RAM. Try mo irun : ang lalabas ay isa isa na lalabas si 1 2 3 4 5.
  51. */
  52. void unbuffered(){
  53.     int i = 0;
  54.     while(i < 5){
  55.         cout << i + 1 << " " << flush;
  56.         this_thread::sleep_for(chrono::seconds(1)); //sleeps the thread (tigil muna si code)
  57.         i++;
  58.     }
  59.     cout << endl;
  60. }
  61. /*
  62.     so ano nga bang relation nito sa cerr at clog?
  63.     Gaya ng nasabi ko si cerr ay un-buffered at si clog ay buffered.
  64.     Si cerr kapag ginamit na natin immediately lalabas na agad ang output natin,
  65.     whereas si clog, di pa muna lalabas, unles gumamit tayo ng (flush)[ginagawang unbuffered na sya]
  66.     or natapos na si program.
  67.  
  68. */
  69. /*  
  70.     kapag gumamit tayo ng cout at ni redirect natin ang output sa *.txt file,
  71.     dederetso sa mismong file ang mga output natin imbis sa console. Pero ano kayang mangyayari,
  72.     kapag nagkaroon ng error, pero usto nating malamn na may error. Lalabas ang error pero mapupunta sya sa
  73.     *.txt file. Dito na aaksyon si cerr, ginagamit sya para makita natin ang error sa console, hindi
  74.     dederetso sa *.txt file ang output, bagkus dederetso sya sa console.*/
  75. /*
  76.     Pero ewan, base sa conteksto na nakasaad sa google at sa mismong c++ na documentation, na ang isa ay buffered
  77.     at ang isa ay unbuffered. pero kung gagayahin natin ang codes na nakalagay sa taas at pinaltan ang
  78.     cout ng cerr at clog, hindi naman magiistay sa buffer si clog. Hindi sya titigil parehas lang sila ni cerr.
  79.     Pero siguro may pagkakaiba sila at makikita natin kung buffered or unbuffered ba talaga si clog
  80.     Napakakipot ng pinagkaiba nila pero malinaw ang gamit nila, ginagamit sila sa pag dedebugging para malaman
  81.     bugs, tsaka hindi dederetso sa file ng output ang *txt ang ipiprint mo. Ayon ang pinagkaparehas nila.
  82.     Cerr = error stream
  83.     clog = logging stream
  84.  
  85.     isa pang point pala, siguro kapag ginagamit si cerr para immediately malaman ang error
  86.     samantalang kay clog, tuloy tuloy na ilalagay sa isang file lahat ng mga errors, then tsaka makikita lahat ng
  87.     logs, kumbaga si clog ay general tas cerr ay specific lang
  88.  
  89. */
  90.  
  91. void cerrSample(){
  92.     char str[] = "Unable to read...";
  93.     cerr << "Error message: " << str << endl;
  94. }
  95.  
  96. void clogSample(){
  97.     char str[] = "Unable to read...";
  98.     clog << "Error message: " << str << endl;
  99. }
  100.  
  101.  
  102. int main(){
  103.     unbuffered();
  104. }
Add Comment
Please, Sign In to add comment