1 / 26

COMP 116: Introduction to Scientific Programming

COMP 116: Introduction to Scientific Programming . Lecture 37: Final Review. Functions. Writing Simple function. function [o1, o2]= funcName ( i1, i2 ) % Function Comments … % Body (implementation) end %optional. Can have multiple inputs (i1) and multiple outputs (o2)

pete
Télécharger la présentation

COMP 116: Introduction to Scientific Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. COMP 116: Introduction to Scientific Programming Lecture 37: Final Review

  2. Functions

  3. Writing Simple function function [o1, o2]=funcName( i1, i2 ) % Function Comments … % Body (implementation) end %optional • Can have multiple inputs (i1) and multiple outputs (o2) • function [] = funcName() • function o1 = funcName() • function o1 = funcName( i1 ) • function o1 = funcName( i1, i2 ) • function [o1, o2] = funcName( i1, i2, i3)

  4. WorkspaceGlobal vs. Local Storage • Global Workspace • Shared by Command Window and script commands • Local Workspace • Created locally on entry to each function • Disappears on exit from function call. % This is a script radius = 10; area = pi .* radius .^2; function [area] = circ_area(radius) area = pi .* radius .^ 2; % Call function in workspace my_area = circ_area( 10 );

  5. Looping

  6. Loops: for loop statementthe counted loop solution for <varindex> = <start>:<stop> <Body: do some work> end for <idx> = <start>:<step>:<stop> <Body: do some work> end

  7. Examples: Find sum function ret=my_sum(A) % find minimum in the vector A ret=0; for i=1:length(A) ret=ret+A(i); end end Find minimum will be very similar

  8. Examples: Find the first occurrence of k in an array function elem=find_first(A,k) elem=0; for i=1:length(A) if (A(i)==k) elem=i; break; end end

  9. Exercises • Find the minimum value in a matrix • Given an array, check if any two elements of the array sum to zero

  10. Loops: while loop statementthe conditional loop solution while <test> <Body: do some work> <Update:make progress towards exiting loop> end • While loops are great if we don’t know how many times we need to loop, but if we can write a test for when we’re done • For this to work properly, the test needs to evaluate to a logical value • The while loop will run as long as test evaluates to true • The while loop does not have a built-in counter like the for-loop (if you want to count something, you need to implement the counter yourself)

  11. Example: Golden Ratio • Golden ratio is the solution of x^2-x-1=0 • For any positive number x, sqrt(x+1) is a better approximation of golden ration than x. Use this rule in a while loop to find the some x such that abs(x^2-x-1) is less than 0.000001 eps=0.000001; x=100; while abs(x^2-x-1) > eps x=sqrt(x+1); end

  12. Strings

  13. Strings as a vector of chars • Can be manipulated like any other vector s1 = 'The quick brown fox ' s2 = 'jumped over the lazy dog' s = [s1, s2] % concatenate strings s(5) % ans = q s(17:19) % ans = fox jIdx = find( s == 'j' ) jStr= s(jIdx:jIdx+3) % ans = jump

  14. String Comparison • Avoid normal comparison operators! • s1 == s2, s1 < s3, s1 >= s3 • Operators work element by element (on characters) • Thus, strings (i.e., the vector of chars) must be same length • Use string comparison functions instead • strcmp(), string comparison • strcmpi, string comparison while ignoring case • strncmp, strncmpi: • Similar, but compares first n characters only

  15. String Searching • strfind • Search for a string inside another string • returns indices to start of each instance strVal = [‘with great power comes great responsibility.’]; strfind( strVal, ‘great’) % ans = [6 24]

  16. String Replacement • strrep strVal = [‘with great power comes great responsibility.’]; strrep( strVal, ‘great’, ‘no’)

  17. Cell Arrays and Structures

  18. Cell Arrays vs. Arrays Basically, think of cell arrays as being more flexible data structures than the ‘standard’ arrays.

  19. Accessing Cell Arrays • Crucial distinction between {} and () operators Example: A = { false, rand(3); 4.0, ‘This is a string’ }; • A{1} or A{1,1} extracts the logical value false • A(2) or A(2,1) extracts a 1x1 cell-array containing 4.0 • A(2,:) extracts a 1x2 cell-array containing the bottom row • A{:,2} extracts the values of the second column as separate entities; use: [a,b] = A{:,2} for proper assignment Indices work just as for ‘standard’ arrays.

  20. Cell Arrays vs. Structures Structures are very convenient data types when storing Information belonging to one organizational unit, e.g., Name Age Date of Birth Height Weight …

  21. Structures • Use named ‘fields’ for each variable alex.name = 'Alexander the Great'; alex.occupation = 'Conqueror'; alex.birth = 356; alex.fictional = false;

  22. Structures • Use named ‘fields’ for each variable • Use the struct() function, with name-value pairs alex.name = 'Alexander the Great'; alex.occupation = 'Conqueror'; alex.birth = 356; alex.fictional = false; alex = struct('name', 'Alexander the Great',... 'occupation', 'Conqueror', ... 'birth', 356, ... 'fictional' = false);

  23. Structure Arrays • One way to initialize is to use a ‘template’ % create structure layout % note the use of default values and empty arrays template = struct( 'name', 'no name', ... 'nickname', 'no name', ... 'emails', [], ... 'department', 'undeclared', ... 'type', 'undergrad', ... 'year', 1 ); % create structure array students = repmat( template, 1, 30 ); % now fill in each structure in the array

  24. File I/O

  25. Useful stuff • Opening a file: • help fopen • Open in read, write or append mode • Always close your open files with fclose • Text files: • Writing: fprintf • Reading: fgetl • MATLAB data files: • Writing: save • Reading:load Other useful notes • feof: test of end of file • fprintf: use ‘%d’, ‘%f’, etc. • fgetl: get a line from a (text) file

  26. Good luck!

More Related