usth decision internship template 1 tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tất cả các l...
Chương 10 Template và điều khiển ngoại lệ • Hàm template • Lớp template • Điều khiển ngoại lệ • Biến tónh • Từ khoá extern và asm • Hàm chuyển kiểu • Những khác biệt giữa C và C++ Chương 10 Template và điều khiển ngoại lệ 298 Chương 10 Template và điều khiển ngoại lệ 299 I/ Hàm template Hàm template (hàm mẫu) đònh nghiã một dãy tổng quát các tác vụ được dùng cho nhiều kiểu dữ liệu khác nhau. Trong đó, kiểu dữ liệu được dùng sẽ được truyền đến hàm dưới dạng một tham số. Với cơ chế này, một thủ tục có thể được dùng cho nhiều kiểu dữ liệu khác nhau. Trong môn học Cấu trúc dữ liệu và thuật toán, nhiều giải thuật giống nhau về mặt luận lý, bất kể nó làm việc với kiểu dữ liệu gì. Ví dụ giải thuật QuickSort là giống nhau, không cần biết nó sẽ áp dụng cho dãy số nguyên hay dãy số thực. Vấn đề là ở chỗ dữ liệu được xử lý khác nhau. Bằng cách tạo ra hàm template, có thể đònh nghiã bản chất của giải thuật độc lập với kiểu dữ liệu mà nó xử lý. Dựa vào hàm template, trình biên dòch sẽ tự động sinh ra mã chương trình để dùng cho một kiểu dữ liệu cụ thể nào đó khi thực thi chương trình. Thực chất là việc tạo ra một hàm template đồng nghiã với việc tạo ra một hàm mà nó có thể tự quá tải lên chính nó. Khai báo hàm template template < class Ttype > ret_type func_name(parameter list) { // body of function } Từ khoá template dùng để tạo ra một dạng mẫu mô tả hoạt động của hàm và nhường cho trình biên dòch điền vào một cách chi tiết khi cần. Ttype là tên hình thức cho kiểu dữ liệu được dùng bên trong hàm, nó sẽ được thay thế bởi một kiểu dữ liệu cụ thể khi trình biên dòch sinh ra một phiên bản chi tiết của hàm. Quá trình tạo ra phiên bản chi tiết của hàm được gọi là quá trình sinh hàm. Việc tạo ra bản chi tiết của hàm template được gọi là tạo ra ngay tức khắc (instantiating) một hàm. Nói một cách khác là một hàm sinh ra phiên bản dùng trong chốc lát của hàm template. Chương 10 Template và điều khiển ngoại lệ 300 Ví dụ 1.1 Hàm template trao đổi nội dung của hai biến // Function template example. #include <iostream.h> // This is a function template. template <class X> void swapargs(X &a, X &b) { X temp; temp = a; a = b; b = temp; } int main() { int i=10, j=20; float x=10.1, y=23.3; cout << "Original i, j: " << i << ' ' << j << endl; cout << "Original x, y: " << x << ' ' << y << endl; swapargs(i, j); // swap integers swapargs(x, y); // swap floats cout << "Swapped i, j: " << i << ' ' << j << endl; cout << "Swapped x, y: " << x << ' ' << y << endl; return 0; } template <class X> void swapargs(X &a, X &b) Dòng này thông báo với chương trình hai vấn đề : - Đây là một hàm template. - Đây là điểm bắt đầu của phần đònh nghiã một hàm template. X có ý nghiã là kiểu dữ liệu của các biến cần trao đổi nội dung. Chương 10 Template và điều khiển ngoại lệ 301 Hàm swapargs() được gọi hai lần trong hàm main() : một lần để trao đổi nội dung hai biến kiểu số nguyên, và lần sau cho hai biến kiểu số thực. Do hàm swapargs() là một hàm template, cho nên trình biên dòch sẽ tự động phát VIETNAM ACADEMY OF SCIENCE AND TECHNOLOGY UNIVERSITY OF SCIENCE AND TECHNOLOGY OF HANOI Ref.: SOCIALIST REPUBLIC OF VIETNAM Independence – Freedom- Happiness /QĐ-ĐHKHCN Hanoi, ……… 2017 DECISION On accepting students for internship RECTOR OF UNIVERSITY OF SCIENCE AND TECHNOLOGY OF HANOI Pursuant to Decision No 2067/QD-TTg on December 09 th, 2009 by the Prime Minister on the establishment of University of Science and Technology of Hanoi (USTH); Pursuant to Decision No 2557/QĐ-TTg dated December 30th, 2016 by Prime Minister on the Regulation on organization and operation of USTH; Pursuant to Academic policy issued in Decision No 06/QĐ-ĐHKHCNHN on January 08th,2013 by the Rector of University of Science and Technology of Hanoi; Pursuant to Internship Agreement signed on May th 2017 between University of Science and Technology of Hanoi and _, ; On proposal of Director of , DECIDES: Article To accept the following student to internship in from to : Fullname Nationality: DOB: Passport number: Article Student owns the rights and obligations under the Internship Agreement between University of Science and Technology of Hanoi and…………… Article Director of ……………………… , the related units and student listed in Article are responsible for implementing this decision./ Recipients: - As article 1,3; - For filling: VT, ĐT RECTOR Patrick Boiron Chương 10 Template và điều khiển ngoại lệ • Hàm template • Lớp template • Điều khiển ngoại lệ • Biến tónh • Từ khoá extern và asm • Hàm chuyển kiểu • Những khác biệt giữa C và C++ Chương 10 Template và điều khiển ngoại lệ 298 Chương 10 Template và điều khiển ngoại lệ 299 I/ Hàm template Hàm template (hàm mẫu) đònh nghiã một dãy tổng quát các tác vụ được dùng cho nhiều kiểu dữ liệu khác nhau. Trong đó, kiểu dữ liệu được dùng sẽ được truyền đến hàm dưới dạng một tham số. Với cơ chế này, một thủ tục có thể được dùng cho nhiều kiểu dữ liệu khác nhau. Trong môn học Cấu trúc dữ liệu và thuật toán, nhiều giải thuật giống nhau về mặt luận lý, bất kể nó làm việc với kiểu dữ liệu gì. Ví dụ giải thuật QuickSort là giống nhau, không cần biết nó sẽ áp dụng cho dãy số nguyên hay dãy số thực. Vấn đề là ở chỗ dữ liệu được xử lý khác nhau. Bằng cách tạo ra hàm template, có thể đònh nghiã bản chất của giải thuật độc lập với kiểu dữ liệu mà nó xử lý. Dựa vào hàm template, trình biên dòch sẽ tự động sinh ra mã chương trình để dùng cho một kiểu dữ liệu cụ thể nào đó khi thực thi chương trình. Thực chất là việc tạo ra một hàm template đồng nghiã với việc tạo ra một hàm mà nó có thể tự quá tải lên chính nó. Khai báo hàm template template < class Ttype > ret_type func_name(parameter list) { // body of function } Từ khoá template dùng để tạo ra một dạng mẫu mô tả hoạt động của hàm và nhường cho trình biên dòch điền vào một cách chi tiết khi cần. Ttype là tên hình thức cho kiểu dữ liệu được dùng bên trong hàm, nó sẽ được thay thế bởi một kiểu dữ liệu cụ thể khi trình biên dòch sinh ra một phiên bản chi tiết của hàm. Quá trình tạo ra phiên bản chi tiết của hàm được gọi là quá trình sinh hàm. Việc tạo ra bản chi tiết của hàm template được gọi là tạo ra ngay tức khắc (instantiating) một hàm. Nói một cách khác là một hàm sinh ra phiên bản dùng trong chốc lát của hàm template. Chương 10 Template và điều khiển ngoại lệ 300 Ví dụ 1.1 Hàm template trao đổi nội dung của hai biến // Function template example. #include <iostream.h> // This is a function template. template <class X> void swapargs(X &a, X &b) { X temp; temp = a; a = b; b = temp; } int main() { int i=10, j=20; float x=10.1, y=23.3; cout << "Original i, j: " << i << ' ' << j << endl; cout << "Original x, y: " << x << ' ' << y << endl; swapargs(i, j); // swap integers swapargs(x, y); // swap floats cout << "Swapped i, j: " << i << ' ' << j << endl; cout << "Swapped x, y: " << x << ' ' << y << endl; return 0; } template <class X> void swapargs(X &a, X &b) Dòng này thông báo với chương trình hai vấn đề : - Đây là một hàm template. - Đây là điểm bắt đầu của phần đònh nghiã một hàm template. X có ý nghiã là kiểu dữ liệu của các biến cần trao đổi nội dung. Chương 10 Template và điều khiển ngoại lệ 301 Hàm swapargs() được gọi hai lần trong hàm main() : một lần để trao đổi nội dung hai biến kiểu số nguyên, và lần sau cho hai biến kiểu số thực. Do hàm swapargs() là một hàm template, cho nên trình biên dòch sẽ tự Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-WesleyChapter 18Standard Template Library Slide 18- 3Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-WesleyOverview18.1 Iterators18.2 Containers18.3 Generic Algorithms Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley18.1Iterators Slide 18- 5Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley IteratorsSTL has containers, algorithms and IteratorsContainers hold objects, all of a specified typeGeneric algorithms act on objects in containers Iterators provide access to objects in the containers yet hide the internal structure of the container Slide 18- 6Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-WesleyUsing DeclarationsUsing declarations allow use of a function or name defined in a namespace:using ns::fun( );using ns::iterator;using std::vector<int> ::iterator; Slide 18- 7Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-WesleyIterator BasicsAn iterator is a generalization of pointerNot a pointer but usually implemented using pointers The pointer operations may be overloaded for behavior appropriate for the container internalsTreating iterators as pointers typically is OK.Each container defines an appropriate iterator type.Operations are consistent across all iterator types. Slide 18- 8Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-WesleyBasic Iterator OperationsBasic operations shared by all iterator types ++ (pre- and postfix) to advance to the next data item= = and != operators to test whether two iterators point to the same data item* dereferencing operator provides data item access c.begin( ) returns an iterator pointing to the first element of container cc.end( ) returns an iterator pointing past the last element of container c. Analogous to the null pointer. Unlike the null pointer, you can apply -- to the iterator returned by c.end( ) to get an iterator pointing to last element in the container. Slide 18- 9Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-WesleyMore Iterator Operations-- (pre- and postfix) moves to previous data item Available to some kinds of iterators.*p access may be read-only or read-write depending on the container and the definition of the iterator p. STL containers define iterator types appropriate to the container internals. Some containers provide read-only iterators Slide 18- 10Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-WesleyKinds of IteratorsForward iterators provide the basic operationsBidirectional iterators provide the basic operations and the -- operators (pre- and postfix) to move to the previous data item. Random access iterators provide The basic operations and –Indexing p[2] returns the third element in the containerIterator arithmetic p + 2 returns an iterator to the third element in the container [...]... 35 Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Generic Algorithms “Generic Algorithm” are a template functions that use iterators as template parameters. This chapter will use Generic Algorithm, Generic function, and STL function template to mean the same thing. Function interface specifies task, minimum strength of iterator arguments, and provides run-time... running time as a function of the problem size, not precise computations for a particular architecture. Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Do you agree or disagree with the following statement? A person should never make an important decision alone. Use specific reasons and examples to support your answer. From my everyday experience and observation I can claim that discussion of an important decision with other people bring many benefits. In the following paragraphs I will give my reasons to defend this statement. First of all, different people have different opinions. In order to make the right choice people should discuss every possible decision and its consequences. Making an important decision alone can bring many negative aspects. For instance, a person can reveal his selfishness or impatience and the consequences of that decision can effect many people in the future. I think that a good and wise decision can be born only in discussion because people can share their knowledge and experiences a look at the problem from different sides and aspects. Second of all, I think that making decision alone is unacceptable especially for a company. Imagine that a chief makes the decision about increasing a production line without discussing it with his employees. In this case a part of company’s profit will be spend on extended purchase of raw materials. So, share holders will be left without dividends. This decision may lead to getting rid of company’s shares and as a result of this declining the value of a company as a whole. To sum up, I think that a person should always consult his relatives or colleges when making an important decision to avoid possible mistakes. BioMed CentralPage 1 of 10(page number not for citation purposes)Acta Veterinaria ScandinavicaOpen AccessResearchVeterinary decision making in relation to metritis - a qualitative approach to understand the background for variation and bias in veterinary medical recordsDorte B Lastein*1, Mette Vaarst2 and Carsten Enevoldsen1Address: 1Department of Large Animal Sciences, Faculty of Life Sciences, University of Copenhagen, Grønnegårdsvej 2, DK-1870 Frederiksberg C, Denmark and 2Department of Animal Health, Welfare and Nutrition, Faculty of Agricultural Sciences, Research Centre Foulum, University of Aarhus, P.O. 50, DK-8830 Tjele, DenmarkEmail: Dorte B Lastein* - bay@life.ku.dk; Mette Vaarst - mette.vaarst@agrsci.dk; Carsten Enevoldsen - ce@life.ku.dk* Corresponding author AbstractBackground: Results of analyses based on veterinary records of animal disease may be prone to variationand bias, because data collection for these registers relies on different observers in different settings aswell as different treatment criteria. Understanding the human influence on data collection and thedecisions related to this process may help veterinary and agricultural scientists motivate observers(veterinarians and farmers) to work more systematically, which may improve data quality. This studyinvestigates qualitative relations between two types of records: 1) 'diagnostic data' as recordings of metritisscores and 2) 'intervention data' as recordings of medical treatment for metritis and the potential influenceon quality of the data.Methods: The study is based on observations in veterinary dairy practice combined with semi-structuredresearch interviews of veterinarians working within a herd health concept where metritis diagnosis wasdescribed in detail. The observations and interviews were analysed by qualitative research methods todescribe differences in the veterinarians' perceptions of metritis diagnosis (scores) and their own decisionsrelated to diagnosis, treatment, and recording.Results: The analysis demonstrates how data quality can be affected during the diagnostic procedures, asinteraction occurs between diagnostics and decisions about medical treatments. Important findings werewhen scores lacked consistency within and between observers (variation) and when scores were adjustedto the treatment decision already made by the veterinarian (bias). The study further demonstrates thatveterinarians made their decisions at 3 different levels of focus (cow, farm, population). Data quality wasinfluenced by the veterinarians' perceptions of collection procedures, decision making and their differentmotivations to collect data systematically.Conclusion: Both variation and bias were introduced into the data because of veterinarians' differentperceptions of and motivations for decision making. Acknowledgement of these findings by researchers,educational institutions and veterinarians in practice may stimulate an effort to improve the quality of fielddata, as well as raise awareness about the importance of including knowledge about human perceptionswhen interpreting studies based on field data. Both recognitions may increase the usefulness of bothwithin-herd and between-herd epidemiological analyses.Published: 30 August 2009Acta Veterinaria Scandinavica 2009, 51:36 doi:10.1186/1751-0147-51-