SlideShare uma empresa Scribd logo
1 de 39
Baixar para ler offline
Programming
    Exercises



12年6月5日星期二
Who am I?




             尹哲:terry@odd-e.com twitter: terryyin weibo: terry尹哲   2

12年6月5日星期二
Programming
    Exercises



12年6月5日星期二
Why Programming Exercises?




                              4

12年6月5日星期二
5

12年6月5日星期二
Question

             Does software company need to
                   train programmers?




                                             6

12年6月5日星期二
Leonhard Euler         Dojo




                         vs.




                                      7

12年6月5日星期二
What is ProjectEuler.net?




                                8

12年6月5日星期二
ProjectEuler.net
        "Project Euler exists to encourage, challenge, and develop the skills and enjoyment of anyone with
        an interest in the fascinating world of mathematics."




             • Project Euler is a series of challenging mathematical/computer
               programming problems that requires more than just mathematical
               insights to solve.




                                                                                                             9

12年6月5日星期二
ProjectEuler.net




                          10

12年6月5日星期二
ProjectEuler.net




                          11

12年6月5日星期二
Expectations


             Mathematics
             So lution implementing
             Hig h perfor mance co d ing

              So lving problem
             ind ivi dually




                                           12

12年6月5日星期二
Example: Quick & Dirty

       Once you solved a problem, you are entitled to join the forum for this problem.You can
       share your solution with the other people who have also solved it. And the post usually
       start with this sentence:




                                  Good coding habit?


                                                                                                 13

12年6月5日星期二
Another Example




                               14

12年6月5日星期二
int i, j, k, n, sum;
                                int factorial[10000];

                                int* getfactorial(int n)
                                {
                                    factorial[0] = 1;
                                    k = 0;
                                    for(i = 2; i <= n; i++)
                                    {
  • It’s too simple for                 for(j = 0; j <= k; j++)
                                            factorial[j] *= i;
      Java, Ruby or Python,             for(j = 0; j <= k; j++)
      for which they can                {
                                            if(factorial[j] >= 10)
      handle big numbers by                 {
                                                factorial[j+1] += (factorial[j] - (factorial[j] % 10)) / 10;
      default.                                  factorial[j] = factorial[j] % 10;

  •   So let’s look at C/C++.                   if(j == k)
                                                    k++;

  •   Real code copied from             }
                                            }

      the forum.                    }
                                    return factorial;
                                }

                                int getsum(int* array, int k)
                                {
                                    sum = 0;
                                    for(i = 0; i <= k; i++)
                                        sum += array[i];
                                    return sum;
                                }

                                int main()
                                {
                                    int* factorial = getfactorial(n);
                                    sum = getsum(factorial, k);
                                    cout << "nThe sum of the digits of " << n << "! is " << sum << ".n";
                                    return 0;
                                }                                                                       15

12年6月5日星期二
16

12年6月5日星期二
Big number again. Ha ha, I did that
                  before! Let me reuse it...




                                                   17

12年6月5日星期二
#include<iostream>

  using namespace std;

  int i, j, k, n, sum;
  int factorial[10000];
                            Why the big number is named ‘factorial’
  int* getfactorial(int n)
  {                           in my previous implementation?
      factorial[0] = 1;
      k = 0;
      for(i = 2; i <= n; i++)
      {
          for(j = 0; j <= k; j++)
              factorial[j] *= i;
          for(j = 0; j <= k; j++)
                                         Where’s the code for big number?
          {
              if(factorial[j] >= 10)
              {
                  factorial[j+1] += (factorial[j] - (factorial[j] % 10)) / 10;
                  factorial[j] = factorial[j] % 10;
                  if(j == k)
                      k++;
              }
          }
      }
      return factorial;
  }
                                                                                 18

12年6月5日星期二
#include <stdio.h>

                                             #define NUMB 120              // 9 * 120 = 1080 total digits.
                                             #define SIZE 1000000000       // 9 digit numbers

                                             int main() {
                                               int i = 0;
                                               int j = 0;
                                               int bigNum1[NUMB];
                                               int bigNum2[NUMB];
                                               int bigNum3[NUMB];
                                               int counter = 0;

                                                 for (i = 0;   i < NUMB; i++) {
                                                   bigNum1 =   0;
                                                   bigNum2 =   0;
                                                   bigNum3 =   0;
                                                 }

                                                 bigNum1[0] = 1;
        OK, too hard to reuse. It’s not          bigNum2[0] = 1;
                                                 counter = 2;
      that hard to invent the wheel again.       i = 0;

                                                 while (i == 0) {
                                                   counter++;
                                                   for (j = 0; j < NUMB; j++) {
                                                     bigNum3[j] = bigNum2[j] + bigNum1[j];
                                                   }
                                                   for (j = 0; j < NUMB-1; j++) {
                                                     while (bigNum3[j] >= SIZE) {
                                                   bigNum3[j] -= SIZE;
                                                   bigNum3[j+1]++;
                 Design?                           }
                                                     }

                                                   if (bigNum3[111] >= 1)
                                                     break;
                                                   for (j = 0; j < NUMB; j++) {
                                                     bigNum1[j] = bigNum2[j];
                                                     bigNum2[j] = bigNum3[j];
                                                   }
                                                 }

                                                 printf("n");
                                                 printf("P025 answer = %u", counter);
                                             }                                                               19

12年6月5日星期二
ing exercises
         Problem so lv
                           tant skills
       ✓ Train ver y impor
                                  w
                      as inter vie
        ✓Often use d
          ques tions
                             i n skills in
         ✓ Probab ly also tra
                            n able co de,
           maki ng maintai
             a little.




                  •Don’t do it before bed time...   20

12年6月5日星期二
What is Cyber Dojo?



                          21

12年6月5日星期二
22

12年6月5日星期二
23

12年6月5日星期二
24

12年6月5日星期二
RED - GREEN - REFACTOR




                                  25

12年6月5日星期二
26

12年6月5日星期二
27

12年6月5日星期二
28

12年6月5日星期二
Which One Do You Prefer?

                                        29

12年6月5日星期二
Poker Hands


                  30

12年6月5日星期二
Poker Hands Kata




                                31

12年6月5日星期二
Poker Hands in ProjectEuler
             • This is not a very hard problem to solve,
                 comparing to most of the problems listed in
                 ProjectEuler.net
             •   But it’s hard to solve it without bugs if you don’t
                 have unit tests.
             • Problem 54 in projectEuler.net


                                                                       32

12年6月5日星期二
Example: Complicated
                 Transaction




                                    33

12年6月5日星期二
Why Did I Do It Right
             With Only One Try?



                                     34

12年6月5日星期二
TEST(poker_hand, comparing){
                CHECK(pokerHand("4H 5C 6S 7S TD")< pokerHand("2C 3S 7S 8D KD"));
                CHECK(!(pokerHand("4H 5C 6S 7S KD")< pokerHand("2C 3S 7S 8D TD")));
                CHECK(pokerHand("4H 5C 6S 7S KD")> pokerHand("2C 3S 7S 8D TD"));
             }
             TEST(poker_hand, compare_cards){
                CHECK(pokerHand("3H 5C 6S 7S 8D")< pokerHand("4H 5C 6S 7S 9D"));
                CHECK(pokerHand("3H 5C 6S 7S 9D")< pokerHand("4H 5C 6S 7S TD"));
                CHECK(pokerHand("3H 5C 6S 7S TD")< pokerHand("4H 5C 6S 7S JD"));
                CHECK(pokerHand("3H 5C 6S 7S JD")< pokerHand("4H 5C 6S 7S QD"));
                CHECK(pokerHand("3H 5C 6S 7S QD")< pokerHand("4H 5C 6S 7S KD"));
                CHECK(pokerHand("3H 5C 6S 7S KD")< pokerHand("4H 5C 6S 7S AD"));
             }
             TEST(poker_hand, compare_high_cards_2nd){
                CHECK(pokerHand("3H 5C 6S 7S 9D")< pokerHand("3H 5C 6S 8S 9D"));
             }
             TEST(poker_hand, compare_high_cards_3nd_4th_5th){
                CHECK(pokerHand("3H 5C 6S 8S 9D")< pokerHand("3H 5C 7S 8S 9D"));
                CHECK(pokerHand("3H 4C 7S 8S 9D")< pokerHand("3H 5C 7S 8S 9D"));
                CHECK(pokerHand("2H 5C 7S 8S 9D")< pokerHand("3H 5C 7S 8S 9D"));
             }
             TEST(poker_hand, compare_high_card_and_one_pair){
                CHECK(pokerHand("3H 5C 6S 8S 9D")< pokerHand("3H 5C 7S 8S 8D"));
             }
             TEST(poker_hand, compare_one_pairs){
                CHECK(pokerHand("3H 5C 6S 9S 9D")> pokerHand("3H 5C 7S 8S 8D"));
                CHECK(pokerHand("5C 6S 9S 9D KD")> pokerHand("5C 7S 8S 8D AD"));
                CHECK(pokerHand("5C 6S 9S 9D KD")< pokerHand("5C 7S 9S 9D AD"));
             }

             ...


                                                                                      35

12年6月5日星期二
Do both exercises.
             Alone and with the others.
             Always use good practices.
             Have fun.



                                          36

12年6月5日星期二
Discuss



             Training
                               in workshop




                                                 Develop
                                             in concurrence

                            Deliver
                        for acceptance




                                                              37

12年6月5日星期二
Odd-e
             Certified Scrum Developer
             • One week course simulating how it feels to be on a Scrum project
                - Realistic exercise to work on as a team
                - Topics covered: A-TDD, Build Automation, Sprint Planning, Pair
                    Programming, Continuous Integration, Test-Driven Development,
                    Working in teams, Collective Code Ownership, Mocking, Code
                    Smells & Refactoring, Good unit tests,Emergent Design, Working
                    with Legacy Code, Craftsmanship
                -   Maximum 10 people, in Odd-e office
                -   Java and C++ version
                -   Fulfills the ScurmAlliance CSD




                                                 More info at:
                           http://www.odd-e.com/courses.php?id=201205SingaporeCSD    38

12年6月5日星期二
Coaching




                        39

12年6月5日星期二

Mais conteúdo relacionado

Mais procurados

11.on generalized dislocated quasi metrics
11.on generalized dislocated quasi metrics11.on generalized dislocated quasi metrics
11.on generalized dislocated quasi metricsAlexander Decker
 
nips勉強会_Toward Property-Based Classification of Clustering Paradigms
nips勉強会_Toward Property-Based Classification of Clustering Paradigmsnips勉強会_Toward Property-Based Classification of Clustering Paradigms
nips勉強会_Toward Property-Based Classification of Clustering Paradigmstksakaki
 
Chapter 7 functions (c)
Chapter 7 functions (c)Chapter 7 functions (c)
Chapter 7 functions (c)hhliu
 
Machine Learning - What, Where and How
Machine Learning - What, Where and HowMachine Learning - What, Where and How
Machine Learning - What, Where and Hownarinderk
 
Question bank unit ii engineering mathematics ii
Question bank unit ii engineering mathematics iiQuestion bank unit ii engineering mathematics ii
Question bank unit ii engineering mathematics iiShubham Vini
 
Oops lab manual2
Oops lab manual2Oops lab manual2
Oops lab manual2Mouna Guru
 
210502 Mathematical Foundation Of Computer Science
210502 Mathematical Foundation Of Computer Science210502 Mathematical Foundation Of Computer Science
210502 Mathematical Foundation Of Computer Scienceguestd436758
 
Expert Lecture on GPS at UIET, CSJM, Kanpur
Expert Lecture on GPS at UIET, CSJM, KanpurExpert Lecture on GPS at UIET, CSJM, Kanpur
Expert Lecture on GPS at UIET, CSJM, KanpurSuddhasheel GHOSH, PhD
 
11X1 T09 03 second derivative
11X1 T09 03 second derivative11X1 T09 03 second derivative
11X1 T09 03 second derivativeNigel Simmons
 
A Review of Proximal Methods, with a New One
A Review of Proximal Methods, with a New OneA Review of Proximal Methods, with a New One
A Review of Proximal Methods, with a New OneGabriel Peyré
 
Fee managment system
Fee managment systemFee managment system
Fee managment systemfairy9912
 
Global Domination Set in Intuitionistic Fuzzy Graph
Global Domination Set in Intuitionistic Fuzzy GraphGlobal Domination Set in Intuitionistic Fuzzy Graph
Global Domination Set in Intuitionistic Fuzzy Graphijceronline
 
International Journal of Computational Engineering Research(IJCER)
International Journal of Computational Engineering Research(IJCER)International Journal of Computational Engineering Research(IJCER)
International Journal of Computational Engineering Research(IJCER)ijceronline
 
Learning Deep Learning
Learning Deep LearningLearning Deep Learning
Learning Deep Learningsimaokasonse
 

Mais procurados (19)

11.on generalized dislocated quasi metrics
11.on generalized dislocated quasi metrics11.on generalized dislocated quasi metrics
11.on generalized dislocated quasi metrics
 
nips勉強会_Toward Property-Based Classification of Clustering Paradigms
nips勉強会_Toward Property-Based Classification of Clustering Paradigmsnips勉強会_Toward Property-Based Classification of Clustering Paradigms
nips勉強会_Toward Property-Based Classification of Clustering Paradigms
 
Chapter 7 functions (c)
Chapter 7 functions (c)Chapter 7 functions (c)
Chapter 7 functions (c)
 
Ecc intro oct 2011
Ecc intro oct 2011Ecc intro oct 2011
Ecc intro oct 2011
 
JavaYDL7
JavaYDL7JavaYDL7
JavaYDL7
 
Machine Learning - What, Where and How
Machine Learning - What, Where and HowMachine Learning - What, Where and How
Machine Learning - What, Where and How
 
Unit 3
Unit 3Unit 3
Unit 3
 
04 maths
04 maths04 maths
04 maths
 
Question bank unit ii engineering mathematics ii
Question bank unit ii engineering mathematics iiQuestion bank unit ii engineering mathematics ii
Question bank unit ii engineering mathematics ii
 
Oops lab manual2
Oops lab manual2Oops lab manual2
Oops lab manual2
 
210502 Mathematical Foundation Of Computer Science
210502 Mathematical Foundation Of Computer Science210502 Mathematical Foundation Of Computer Science
210502 Mathematical Foundation Of Computer Science
 
Expert Lecture on GPS at UIET, CSJM, Kanpur
Expert Lecture on GPS at UIET, CSJM, KanpurExpert Lecture on GPS at UIET, CSJM, Kanpur
Expert Lecture on GPS at UIET, CSJM, Kanpur
 
11X1 T09 03 second derivative
11X1 T09 03 second derivative11X1 T09 03 second derivative
11X1 T09 03 second derivative
 
A Review of Proximal Methods, with a New One
A Review of Proximal Methods, with a New OneA Review of Proximal Methods, with a New One
A Review of Proximal Methods, with a New One
 
Bca
BcaBca
Bca
 
Fee managment system
Fee managment systemFee managment system
Fee managment system
 
Global Domination Set in Intuitionistic Fuzzy Graph
Global Domination Set in Intuitionistic Fuzzy GraphGlobal Domination Set in Intuitionistic Fuzzy Graph
Global Domination Set in Intuitionistic Fuzzy Graph
 
International Journal of Computational Engineering Research(IJCER)
International Journal of Computational Engineering Research(IJCER)International Journal of Computational Engineering Research(IJCER)
International Journal of Computational Engineering Research(IJCER)
 
Learning Deep Learning
Learning Deep LearningLearning Deep Learning
Learning Deep Learning
 

Destaque

Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)LetAgileFly
 
Scrum gathering 2012 shanghai 团队合作与团队指导分会场演讲话题:你的团队什么颜色的(杨瑞)
Scrum gathering 2012 shanghai  团队合作与团队指导分会场演讲话题:你的团队什么颜色的(杨瑞)Scrum gathering 2012 shanghai  团队合作与团队指导分会场演讲话题:你的团队什么颜色的(杨瑞)
Scrum gathering 2012 shanghai 团队合作与团队指导分会场演讲话题:你的团队什么颜色的(杨瑞)LetAgileFly
 
Sponsorship program 2013 regional scrum gathering china
Sponsorship program 2013 regional scrum gathering chinaSponsorship program 2013 regional scrum gathering china
Sponsorship program 2013 regional scrum gathering chinaLetAgileFly
 
Scrum gathering 2012 shanghai 团队合作与团队指导:scrum master 取经路(王庆付)
Scrum gathering 2012 shanghai 团队合作与团队指导:scrum master 取经路(王庆付)Scrum gathering 2012 shanghai 团队合作与团队指导:scrum master 取经路(王庆付)
Scrum gathering 2012 shanghai 团队合作与团队指导:scrum master 取经路(王庆付)LetAgileFly
 
Scrum gathering 2012 shanghai 播种敏捷分会场演讲话题:敏捷估算的新视角(Alan Atlas)
Scrum gathering 2012 shanghai 播种敏捷分会场演讲话题:敏捷估算的新视角(Alan Atlas)Scrum gathering 2012 shanghai 播种敏捷分会场演讲话题:敏捷估算的新视角(Alan Atlas)
Scrum gathering 2012 shanghai 播种敏捷分会场演讲话题:敏捷估算的新视角(Alan Atlas)LetAgileFly
 
Scrum Gathering 2012 Shanghai_工程实践与技术卓越分会场:持续集成–从地面到云端(许晓斌)
Scrum Gathering 2012 Shanghai_工程实践与技术卓越分会场:持续集成–从地面到云端(许晓斌)Scrum Gathering 2012 Shanghai_工程实践与技术卓越分会场:持续集成–从地面到云端(许晓斌)
Scrum Gathering 2012 Shanghai_工程实践与技术卓越分会场:持续集成–从地面到云端(许晓斌)LetAgileFly
 
Scrum Gathering 2012 Shanghai 精益与持续改进分会场:6年一线敏捷实践心得分享之持续集成(秦之远)
Scrum Gathering 2012 Shanghai 精益与持续改进分会场:6年一线敏捷实践心得分享之持续集成(秦之远)Scrum Gathering 2012 Shanghai 精益与持续改进分会场:6年一线敏捷实践心得分享之持续集成(秦之远)
Scrum Gathering 2012 Shanghai 精益与持续改进分会场:6年一线敏捷实践心得分享之持续集成(秦之远)LetAgileFly
 
Scrum Gathering 2012 Shanghai_领导力与组织转型:企业敏捷转型所面临的文化挑战
Scrum Gathering 2012 Shanghai_领导力与组织转型:企业敏捷转型所面临的文化挑战Scrum Gathering 2012 Shanghai_领导力与组织转型:企业敏捷转型所面临的文化挑战
Scrum Gathering 2012 Shanghai_领导力与组织转型:企业敏捷转型所面临的文化挑战LetAgileFly
 

Destaque (8)

Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
 
Scrum gathering 2012 shanghai 团队合作与团队指导分会场演讲话题:你的团队什么颜色的(杨瑞)
Scrum gathering 2012 shanghai  团队合作与团队指导分会场演讲话题:你的团队什么颜色的(杨瑞)Scrum gathering 2012 shanghai  团队合作与团队指导分会场演讲话题:你的团队什么颜色的(杨瑞)
Scrum gathering 2012 shanghai 团队合作与团队指导分会场演讲话题:你的团队什么颜色的(杨瑞)
 
Sponsorship program 2013 regional scrum gathering china
Sponsorship program 2013 regional scrum gathering chinaSponsorship program 2013 regional scrum gathering china
Sponsorship program 2013 regional scrum gathering china
 
Scrum gathering 2012 shanghai 团队合作与团队指导:scrum master 取经路(王庆付)
Scrum gathering 2012 shanghai 团队合作与团队指导:scrum master 取经路(王庆付)Scrum gathering 2012 shanghai 团队合作与团队指导:scrum master 取经路(王庆付)
Scrum gathering 2012 shanghai 团队合作与团队指导:scrum master 取经路(王庆付)
 
Scrum gathering 2012 shanghai 播种敏捷分会场演讲话题:敏捷估算的新视角(Alan Atlas)
Scrum gathering 2012 shanghai 播种敏捷分会场演讲话题:敏捷估算的新视角(Alan Atlas)Scrum gathering 2012 shanghai 播种敏捷分会场演讲话题:敏捷估算的新视角(Alan Atlas)
Scrum gathering 2012 shanghai 播种敏捷分会场演讲话题:敏捷估算的新视角(Alan Atlas)
 
Scrum Gathering 2012 Shanghai_工程实践与技术卓越分会场:持续集成–从地面到云端(许晓斌)
Scrum Gathering 2012 Shanghai_工程实践与技术卓越分会场:持续集成–从地面到云端(许晓斌)Scrum Gathering 2012 Shanghai_工程实践与技术卓越分会场:持续集成–从地面到云端(许晓斌)
Scrum Gathering 2012 Shanghai_工程实践与技术卓越分会场:持续集成–从地面到云端(许晓斌)
 
Scrum Gathering 2012 Shanghai 精益与持续改进分会场:6年一线敏捷实践心得分享之持续集成(秦之远)
Scrum Gathering 2012 Shanghai 精益与持续改进分会场:6年一线敏捷实践心得分享之持续集成(秦之远)Scrum Gathering 2012 Shanghai 精益与持续改进分会场:6年一线敏捷实践心得分享之持续集成(秦之远)
Scrum Gathering 2012 Shanghai 精益与持续改进分会场:6年一线敏捷实践心得分享之持续集成(秦之远)
 
Scrum Gathering 2012 Shanghai_领导力与组织转型:企业敏捷转型所面临的文化挑战
Scrum Gathering 2012 Shanghai_领导力与组织转型:企业敏捷转型所面临的文化挑战Scrum Gathering 2012 Shanghai_领导力与组织转型:企业敏捷转型所面临的文化挑战
Scrum Gathering 2012 Shanghai_领导力与组织转型:企业敏捷转型所面临的文化挑战
 

Semelhante a Scrum Gathering 2012 Shanghai_工程实践与技术卓越分会场:编程练习(尹哲)

Programming exercises
Programming exercisesProgramming exercises
Programming exercisesTerry Yin
 
Gentle Introduction to Functional Programming
Gentle Introduction to Functional ProgrammingGentle Introduction to Functional Programming
Gentle Introduction to Functional ProgrammingSaurabh Singh
 
Psimd open64 workshop_2012-new
Psimd open64 workshop_2012-newPsimd open64 workshop_2012-new
Psimd open64 workshop_2012-newdibyendu_das0708
 
Lowering in C#: What really happens with your code?, from NDC Oslo 2019
Lowering in C#: What really happens with your code?, from NDC Oslo 2019Lowering in C#: What really happens with your code?, from NDC Oslo 2019
Lowering in C#: What really happens with your code?, from NDC Oslo 2019David Wengier
 
From clever code to better code
From clever code to better codeFrom clever code to better code
From clever code to better codeDror Helper
 
On-Homomorphic-Encryption-and-Secure-Computation.ppt
On-Homomorphic-Encryption-and-Secure-Computation.pptOn-Homomorphic-Encryption-and-Secure-Computation.ppt
On-Homomorphic-Encryption-and-Secure-Computation.pptssuser85a33d
 
Fast REST APIs Development with MongoDB
Fast REST APIs Development with MongoDBFast REST APIs Development with MongoDB
Fast REST APIs Development with MongoDBMongoDB
 
Write a c++ function to implement Dijkstra-'s algorithm on a graph- Th.docx
Write a c++ function to implement Dijkstra-'s algorithm on a graph- Th.docxWrite a c++ function to implement Dijkstra-'s algorithm on a graph- Th.docx
Write a c++ function to implement Dijkstra-'s algorithm on a graph- Th.docxnoreendchesterton753
 
Priming Java for Speed at Market Open
Priming Java for Speed at Market OpenPriming Java for Speed at Market Open
Priming Java for Speed at Market OpenAzul Systems Inc.
 
OOP 2012 - Hint: Dynamic allocation in c++
OOP 2012 - Hint: Dynamic allocation in c++OOP 2012 - Hint: Dynamic allocation in c++
OOP 2012 - Hint: Dynamic allocation in c++Allan Sun
 
Business Dashboards using Bonobo ETL, Grafana and Apache Airflow
Business Dashboards using Bonobo ETL, Grafana and Apache AirflowBusiness Dashboards using Bonobo ETL, Grafana and Apache Airflow
Business Dashboards using Bonobo ETL, Grafana and Apache AirflowRomain Dorgueil
 

Semelhante a Scrum Gathering 2012 Shanghai_工程实践与技术卓越分会场:编程练习(尹哲) (20)

C programs
C programsC programs
C programs
 
Programming exercises
Programming exercisesProgramming exercises
Programming exercises
 
Notes
NotesNotes
Notes
 
Gentle Introduction to Functional Programming
Gentle Introduction to Functional ProgrammingGentle Introduction to Functional Programming
Gentle Introduction to Functional Programming
 
Aditazz 01-ul
Aditazz 01-ulAditazz 01-ul
Aditazz 01-ul
 
C#, What Is Next?
C#, What Is Next?C#, What Is Next?
C#, What Is Next?
 
C arrays
C arraysC arrays
C arrays
 
Psimd open64 workshop_2012-new
Psimd open64 workshop_2012-newPsimd open64 workshop_2012-new
Psimd open64 workshop_2012-new
 
Lowering in C#: What really happens with your code?, from NDC Oslo 2019
Lowering in C#: What really happens with your code?, from NDC Oslo 2019Lowering in C#: What really happens with your code?, from NDC Oslo 2019
Lowering in C#: What really happens with your code?, from NDC Oslo 2019
 
7. arrays
7. arrays7. arrays
7. arrays
 
Pythonic Math
Pythonic MathPythonic Math
Pythonic Math
 
From clever code to better code
From clever code to better codeFrom clever code to better code
From clever code to better code
 
C++ practical
C++ practicalC++ practical
C++ practical
 
On-Homomorphic-Encryption-and-Secure-Computation.ppt
On-Homomorphic-Encryption-and-Secure-Computation.pptOn-Homomorphic-Encryption-and-Secure-Computation.ppt
On-Homomorphic-Encryption-and-Secure-Computation.ppt
 
Fast REST APIs Development with MongoDB
Fast REST APIs Development with MongoDBFast REST APIs Development with MongoDB
Fast REST APIs Development with MongoDB
 
Write a c++ function to implement Dijkstra-'s algorithm on a graph- Th.docx
Write a c++ function to implement Dijkstra-'s algorithm on a graph- Th.docxWrite a c++ function to implement Dijkstra-'s algorithm on a graph- Th.docx
Write a c++ function to implement Dijkstra-'s algorithm on a graph- Th.docx
 
Priming Java for Speed at Market Open
Priming Java for Speed at Market OpenPriming Java for Speed at Market Open
Priming Java for Speed at Market Open
 
OOP 2012 - Hint: Dynamic allocation in c++
OOP 2012 - Hint: Dynamic allocation in c++OOP 2012 - Hint: Dynamic allocation in c++
OOP 2012 - Hint: Dynamic allocation in c++
 
Business Dashboards using Bonobo ETL, Grafana and Apache Airflow
Business Dashboards using Bonobo ETL, Grafana and Apache AirflowBusiness Dashboards using Bonobo ETL, Grafana and Apache Airflow
Business Dashboards using Bonobo ETL, Grafana and Apache Airflow
 
Arrays
ArraysArrays
Arrays
 

Mais de LetAgileFly

Scrum Gathering 2012 Shanghai_领导力与组织转型:scrum in china the hard way (oliver ...
Scrum Gathering 2012 Shanghai_领导力与组织转型:scrum in china   the hard way (oliver ...Scrum Gathering 2012 Shanghai_领导力与组织转型:scrum in china   the hard way (oliver ...
Scrum Gathering 2012 Shanghai_领导力与组织转型:scrum in china the hard way (oliver ...LetAgileFly
 
Scrum Gathering 2012 Shanghai_工程实践与技术卓越分会场:how to write unit test for new cod...
Scrum Gathering 2012 Shanghai_工程实践与技术卓越分会场:how to write unit test for new cod...Scrum Gathering 2012 Shanghai_工程实践与技术卓越分会场:how to write unit test for new cod...
Scrum Gathering 2012 Shanghai_工程实践与技术卓越分会场:how to write unit test for new cod...LetAgileFly
 
Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)
Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)
Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)LetAgileFly
 
Scrum Gathering 2012 Shanghai_创业创新分会场:设计拥抱敏捷环境的办公室(胡凯)
Scrum Gathering 2012 Shanghai_创业创新分会场:设计拥抱敏捷环境的办公室(胡凯)Scrum Gathering 2012 Shanghai_创业创新分会场:设计拥抱敏捷环境的办公室(胡凯)
Scrum Gathering 2012 Shanghai_创业创新分会场:设计拥抱敏捷环境的办公室(胡凯)LetAgileFly
 
Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:探索性测试之旅 – 我们团队的探索性测试实战经验(张克冰)
Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:探索性测试之旅 – 我们团队的探索性测试实战经验(张克冰)Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:探索性测试之旅 – 我们团队的探索性测试实战经验(张克冰)
Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:探索性测试之旅 – 我们团队的探索性测试实战经验(张克冰)LetAgileFly
 
Scrum Gathering 2012 Shanghai_产品管理及用户体验 分会场:实例化需求的实践(蔡煜)
Scrum Gathering 2012 Shanghai_产品管理及用户体验 分会场:实例化需求的实践(蔡煜)Scrum Gathering 2012 Shanghai_产品管理及用户体验 分会场:实例化需求的实践(蔡煜)
Scrum Gathering 2012 Shanghai_产品管理及用户体验 分会场:实例化需求的实践(蔡煜)LetAgileFly
 
Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:getting to done by testing at ...
Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:getting to done by testing at ...Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:getting to done by testing at ...
Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:getting to done by testing at ...LetAgileFly
 
Scrum Gathering 2012 Shanghai_产品管理及用户体验 分会场:如何提高与业务客户沟通质量(侯伯薇)
Scrum Gathering 2012 Shanghai_产品管理及用户体验 分会场:如何提高与业务客户沟通质量(侯伯薇)Scrum Gathering 2012 Shanghai_产品管理及用户体验 分会场:如何提高与业务客户沟通质量(侯伯薇)
Scrum Gathering 2012 Shanghai_产品管理及用户体验 分会场:如何提高与业务客户沟通质量(侯伯薇)LetAgileFly
 
Scrum Gathering 2012 Shanghai_Keynote: how to change the world(jurgen appelo)
Scrum Gathering 2012 Shanghai_Keynote: how to change the world(jurgen appelo)Scrum Gathering 2012 Shanghai_Keynote: how to change the world(jurgen appelo)
Scrum Gathering 2012 Shanghai_Keynote: how to change the world(jurgen appelo)LetAgileFly
 
Scrum gathering 2012 shanghai 领导力与组织转型分会场演讲话题:让飞行中的敏捷软着陆(李忠利)
Scrum gathering 2012 shanghai  领导力与组织转型分会场演讲话题:让飞行中的敏捷软着陆(李忠利)Scrum gathering 2012 shanghai  领导力与组织转型分会场演讲话题:让飞行中的敏捷软着陆(李忠利)
Scrum gathering 2012 shanghai 领导力与组织转型分会场演讲话题:让飞行中的敏捷软着陆(李忠利)LetAgileFly
 
Scrum gathering 2012 shanghai 精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 shanghai  精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)Scrum gathering 2012 shanghai  精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 shanghai 精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)LetAgileFly
 
Scrum Gathering 2012 Shanghai 播种敏捷分会场演讲话题:敏捷项目管理在互联网公司中的应用(钱安川)
Scrum Gathering 2012 Shanghai  播种敏捷分会场演讲话题:敏捷项目管理在互联网公司中的应用(钱安川)Scrum Gathering 2012 Shanghai  播种敏捷分会场演讲话题:敏捷项目管理在互联网公司中的应用(钱安川)
Scrum Gathering 2012 Shanghai 播种敏捷分会场演讲话题:敏捷项目管理在互联网公司中的应用(钱安川)LetAgileFly
 

Mais de LetAgileFly (12)

Scrum Gathering 2012 Shanghai_领导力与组织转型:scrum in china the hard way (oliver ...
Scrum Gathering 2012 Shanghai_领导力与组织转型:scrum in china   the hard way (oliver ...Scrum Gathering 2012 Shanghai_领导力与组织转型:scrum in china   the hard way (oliver ...
Scrum Gathering 2012 Shanghai_领导力与组织转型:scrum in china the hard way (oliver ...
 
Scrum Gathering 2012 Shanghai_工程实践与技术卓越分会场:how to write unit test for new cod...
Scrum Gathering 2012 Shanghai_工程实践与技术卓越分会场:how to write unit test for new cod...Scrum Gathering 2012 Shanghai_工程实践与技术卓越分会场:how to write unit test for new cod...
Scrum Gathering 2012 Shanghai_工程实践与技术卓越分会场:how to write unit test for new cod...
 
Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)
Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)
Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)
 
Scrum Gathering 2012 Shanghai_创业创新分会场:设计拥抱敏捷环境的办公室(胡凯)
Scrum Gathering 2012 Shanghai_创业创新分会场:设计拥抱敏捷环境的办公室(胡凯)Scrum Gathering 2012 Shanghai_创业创新分会场:设计拥抱敏捷环境的办公室(胡凯)
Scrum Gathering 2012 Shanghai_创业创新分会场:设计拥抱敏捷环境的办公室(胡凯)
 
Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:探索性测试之旅 – 我们团队的探索性测试实战经验(张克冰)
Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:探索性测试之旅 – 我们团队的探索性测试实战经验(张克冰)Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:探索性测试之旅 – 我们团队的探索性测试实战经验(张克冰)
Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:探索性测试之旅 – 我们团队的探索性测试实战经验(张克冰)
 
Scrum Gathering 2012 Shanghai_产品管理及用户体验 分会场:实例化需求的实践(蔡煜)
Scrum Gathering 2012 Shanghai_产品管理及用户体验 分会场:实例化需求的实践(蔡煜)Scrum Gathering 2012 Shanghai_产品管理及用户体验 分会场:实例化需求的实践(蔡煜)
Scrum Gathering 2012 Shanghai_产品管理及用户体验 分会场:实例化需求的实践(蔡煜)
 
Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:getting to done by testing at ...
Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:getting to done by testing at ...Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:getting to done by testing at ...
Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:getting to done by testing at ...
 
Scrum Gathering 2012 Shanghai_产品管理及用户体验 分会场:如何提高与业务客户沟通质量(侯伯薇)
Scrum Gathering 2012 Shanghai_产品管理及用户体验 分会场:如何提高与业务客户沟通质量(侯伯薇)Scrum Gathering 2012 Shanghai_产品管理及用户体验 分会场:如何提高与业务客户沟通质量(侯伯薇)
Scrum Gathering 2012 Shanghai_产品管理及用户体验 分会场:如何提高与业务客户沟通质量(侯伯薇)
 
Scrum Gathering 2012 Shanghai_Keynote: how to change the world(jurgen appelo)
Scrum Gathering 2012 Shanghai_Keynote: how to change the world(jurgen appelo)Scrum Gathering 2012 Shanghai_Keynote: how to change the world(jurgen appelo)
Scrum Gathering 2012 Shanghai_Keynote: how to change the world(jurgen appelo)
 
Scrum gathering 2012 shanghai 领导力与组织转型分会场演讲话题:让飞行中的敏捷软着陆(李忠利)
Scrum gathering 2012 shanghai  领导力与组织转型分会场演讲话题:让飞行中的敏捷软着陆(李忠利)Scrum gathering 2012 shanghai  领导力与组织转型分会场演讲话题:让飞行中的敏捷软着陆(李忠利)
Scrum gathering 2012 shanghai 领导力与组织转型分会场演讲话题:让飞行中的敏捷软着陆(李忠利)
 
Scrum gathering 2012 shanghai 精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 shanghai  精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)Scrum gathering 2012 shanghai  精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 shanghai 精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
 
Scrum Gathering 2012 Shanghai 播种敏捷分会场演讲话题:敏捷项目管理在互联网公司中的应用(钱安川)
Scrum Gathering 2012 Shanghai  播种敏捷分会场演讲话题:敏捷项目管理在互联网公司中的应用(钱安川)Scrum Gathering 2012 Shanghai  播种敏捷分会场演讲话题:敏捷项目管理在互联网公司中的应用(钱安川)
Scrum Gathering 2012 Shanghai 播种敏捷分会场演讲话题:敏捷项目管理在互联网公司中的应用(钱安川)
 

Último

Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 

Último (20)

Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 

Scrum Gathering 2012 Shanghai_工程实践与技术卓越分会场:编程练习(尹哲)

  • 1. Programming Exercises 12年6月5日星期二
  • 2. Who am I? 尹哲:terry@odd-e.com twitter: terryyin weibo: terry尹哲 2 12年6月5日星期二
  • 3. Programming Exercises 12年6月5日星期二
  • 4. Why Programming Exercises? 4 12年6月5日星期二
  • 6. Question Does software company need to train programmers? 6 12年6月5日星期二
  • 7. Leonhard Euler Dojo vs. 7 12年6月5日星期二
  • 8. What is ProjectEuler.net? 8 12年6月5日星期二
  • 9. ProjectEuler.net "Project Euler exists to encourage, challenge, and develop the skills and enjoyment of anyone with an interest in the fascinating world of mathematics." • Project Euler is a series of challenging mathematical/computer programming problems that requires more than just mathematical insights to solve. 9 12年6月5日星期二
  • 10. ProjectEuler.net 10 12年6月5日星期二
  • 11. ProjectEuler.net 11 12年6月5日星期二
  • 12. Expectations Mathematics So lution implementing Hig h perfor mance co d ing So lving problem ind ivi dually 12 12年6月5日星期二
  • 13. Example: Quick & Dirty Once you solved a problem, you are entitled to join the forum for this problem.You can share your solution with the other people who have also solved it. And the post usually start with this sentence: Good coding habit? 13 12年6月5日星期二
  • 14. Another Example 14 12年6月5日星期二
  • 15. int i, j, k, n, sum; int factorial[10000]; int* getfactorial(int n) { factorial[0] = 1; k = 0; for(i = 2; i <= n; i++) { • It’s too simple for for(j = 0; j <= k; j++) factorial[j] *= i; Java, Ruby or Python, for(j = 0; j <= k; j++) for which they can { if(factorial[j] >= 10) handle big numbers by { factorial[j+1] += (factorial[j] - (factorial[j] % 10)) / 10; default. factorial[j] = factorial[j] % 10; • So let’s look at C/C++. if(j == k) k++; • Real code copied from } } the forum. } return factorial; } int getsum(int* array, int k) { sum = 0; for(i = 0; i <= k; i++) sum += array[i]; return sum; } int main() { int* factorial = getfactorial(n); sum = getsum(factorial, k); cout << "nThe sum of the digits of " << n << "! is " << sum << ".n"; return 0; } 15 12年6月5日星期二
  • 17. Big number again. Ha ha, I did that before! Let me reuse it... 17 12年6月5日星期二
  • 18. #include<iostream> using namespace std; int i, j, k, n, sum; int factorial[10000]; Why the big number is named ‘factorial’ int* getfactorial(int n) { in my previous implementation? factorial[0] = 1; k = 0; for(i = 2; i <= n; i++) { for(j = 0; j <= k; j++) factorial[j] *= i; for(j = 0; j <= k; j++) Where’s the code for big number? { if(factorial[j] >= 10) { factorial[j+1] += (factorial[j] - (factorial[j] % 10)) / 10; factorial[j] = factorial[j] % 10; if(j == k) k++; } } } return factorial; } 18 12年6月5日星期二
  • 19. #include <stdio.h> #define NUMB 120 // 9 * 120 = 1080 total digits. #define SIZE 1000000000 // 9 digit numbers int main() { int i = 0; int j = 0; int bigNum1[NUMB]; int bigNum2[NUMB]; int bigNum3[NUMB]; int counter = 0; for (i = 0; i < NUMB; i++) { bigNum1 = 0; bigNum2 = 0; bigNum3 = 0; } bigNum1[0] = 1; OK, too hard to reuse. It’s not bigNum2[0] = 1; counter = 2; that hard to invent the wheel again. i = 0; while (i == 0) { counter++; for (j = 0; j < NUMB; j++) { bigNum3[j] = bigNum2[j] + bigNum1[j]; } for (j = 0; j < NUMB-1; j++) { while (bigNum3[j] >= SIZE) { bigNum3[j] -= SIZE; bigNum3[j+1]++; Design? } } if (bigNum3[111] >= 1) break; for (j = 0; j < NUMB; j++) { bigNum1[j] = bigNum2[j]; bigNum2[j] = bigNum3[j]; } } printf("n"); printf("P025 answer = %u", counter); } 19 12年6月5日星期二
  • 20. ing exercises Problem so lv tant skills ✓ Train ver y impor w as inter vie ✓Often use d ques tions i n skills in ✓ Probab ly also tra n able co de, maki ng maintai a little. •Don’t do it before bed time... 20 12年6月5日星期二
  • 21. What is Cyber Dojo? 21 12年6月5日星期二
  • 25. RED - GREEN - REFACTOR 25 12年6月5日星期二
  • 29. Which One Do You Prefer? 29 12年6月5日星期二
  • 30. Poker Hands 30 12年6月5日星期二
  • 31. Poker Hands Kata 31 12年6月5日星期二
  • 32. Poker Hands in ProjectEuler • This is not a very hard problem to solve, comparing to most of the problems listed in ProjectEuler.net • But it’s hard to solve it without bugs if you don’t have unit tests. • Problem 54 in projectEuler.net 32 12年6月5日星期二
  • 33. Example: Complicated Transaction 33 12年6月5日星期二
  • 34. Why Did I Do It Right With Only One Try? 34 12年6月5日星期二
  • 35. TEST(poker_hand, comparing){ CHECK(pokerHand("4H 5C 6S 7S TD")< pokerHand("2C 3S 7S 8D KD")); CHECK(!(pokerHand("4H 5C 6S 7S KD")< pokerHand("2C 3S 7S 8D TD"))); CHECK(pokerHand("4H 5C 6S 7S KD")> pokerHand("2C 3S 7S 8D TD")); } TEST(poker_hand, compare_cards){ CHECK(pokerHand("3H 5C 6S 7S 8D")< pokerHand("4H 5C 6S 7S 9D")); CHECK(pokerHand("3H 5C 6S 7S 9D")< pokerHand("4H 5C 6S 7S TD")); CHECK(pokerHand("3H 5C 6S 7S TD")< pokerHand("4H 5C 6S 7S JD")); CHECK(pokerHand("3H 5C 6S 7S JD")< pokerHand("4H 5C 6S 7S QD")); CHECK(pokerHand("3H 5C 6S 7S QD")< pokerHand("4H 5C 6S 7S KD")); CHECK(pokerHand("3H 5C 6S 7S KD")< pokerHand("4H 5C 6S 7S AD")); } TEST(poker_hand, compare_high_cards_2nd){ CHECK(pokerHand("3H 5C 6S 7S 9D")< pokerHand("3H 5C 6S 8S 9D")); } TEST(poker_hand, compare_high_cards_3nd_4th_5th){ CHECK(pokerHand("3H 5C 6S 8S 9D")< pokerHand("3H 5C 7S 8S 9D")); CHECK(pokerHand("3H 4C 7S 8S 9D")< pokerHand("3H 5C 7S 8S 9D")); CHECK(pokerHand("2H 5C 7S 8S 9D")< pokerHand("3H 5C 7S 8S 9D")); } TEST(poker_hand, compare_high_card_and_one_pair){ CHECK(pokerHand("3H 5C 6S 8S 9D")< pokerHand("3H 5C 7S 8S 8D")); } TEST(poker_hand, compare_one_pairs){ CHECK(pokerHand("3H 5C 6S 9S 9D")> pokerHand("3H 5C 7S 8S 8D")); CHECK(pokerHand("5C 6S 9S 9D KD")> pokerHand("5C 7S 8S 8D AD")); CHECK(pokerHand("5C 6S 9S 9D KD")< pokerHand("5C 7S 9S 9D AD")); } ... 35 12年6月5日星期二
  • 36. Do both exercises. Alone and with the others. Always use good practices. Have fun. 36 12年6月5日星期二
  • 37. Discuss Training in workshop Develop in concurrence Deliver for acceptance 37 12年6月5日星期二
  • 38. Odd-e Certified Scrum Developer • One week course simulating how it feels to be on a Scrum project - Realistic exercise to work on as a team - Topics covered: A-TDD, Build Automation, Sprint Planning, Pair Programming, Continuous Integration, Test-Driven Development, Working in teams, Collective Code Ownership, Mocking, Code Smells & Refactoring, Good unit tests,Emergent Design, Working with Legacy Code, Craftsmanship - Maximum 10 people, in Odd-e office - Java and C++ version - Fulfills the ScurmAlliance CSD More info at: http://www.odd-e.com/courses.php?id=201205SingaporeCSD 38 12年6月5日星期二
  • 39. Coaching 39 12年6月5日星期二