Purpose of This Handout: 1) C Syntax / Semantics 2) Style Requirements

Purpose of This Handout: 1) C Syntax / Semantics 2) Style Requirements

Purpose of this handout: Basic Program 3: 1) C Syntax / Semantics /* functiontemp.c 2) Style requirements (comments, variable naming, indentation) { placement) * purpose: Show how to implement, use functions. */ Basic C Program 1: #include<stdio.h> /* helloworld.c #include <stdlib.h> * purpose: Show basic C program structure and printing */ /* convert_celsius_to_fahrenheit #include<stdio.h> * purpose: Converts a temperature given in Celsius into Fahrenheit. #include <stdlib.h> * input parameters: * float – the temperature in Celsius int main() * return value: { * float – the temperature in Fahrenheit printf("Hello World\n"); */ } float convert_celsius_to_fahrenheit(float cel) *************************************** { To compile the code (go from human-readable code to an executable for the computer): return (cel*9.0)/5.0+32; // must explicitly return the calculated number The executable will be named a.out: $ clang helloworld.c } To run: $ ./a.out To make an executable with the name myprogram $ clang helloworld –o myprogram int main() To run: $ ./myprogram { *************************************** double fahr, celsius; Basic C Program 2: // print out user information /* singlemaintemp.c printf(“This program converts from Celsius to Fahrenheit\n”); * purpose: Show variable declaration, use, reading from user, printing. */ // get user input #include<stdio.h> printf(“Enter a temperature in Celsius > “); #include <stdlib.h> scanf( “%lf”, &celsius); int main() // calculate the temperature { fahr = convert_celsius_to_fahrenheit(celsius); double fahr, celsius; // declaration of variable named fahr to be type double // output the result // print out user information printf(“%lfC == %lfF\n”, celsius, fahr); printf(“This program converts from Celsius to Fahrenheit\n”); // return success // get user input return (0); printf(“Enter a temperature in Celsius > “); scanf( “%lf”, &celsius); } // calculate the temperature fahr = (celsius*9.0)/5.0+32; // output the result printf(“%lfC == %lfF\n”, celsius, fahr); // return success return (0); } Basic Program 4: Showing how to place code in multiple files ********************* test-hwx.c ************************* All programs in this class will be placed in a minimum of 3 files. /* test-hwx.c test-hwx.c – contains main code that starts execution. Contains function calls. * purpose: illustrate how all homework will be structured (3 files) hwx.c – contains function implementations that are called by main * same code as basic program 3, just different file structure and testing hwx.h – contains function prototypes of all functions implemented in hwx.c */ #include <stdio.h> // these are the first two lines of all .c files #include <stdlib.h> #include “hwx.h” // this allows us to call functions from hwx.c /* This is where we will put testing helper functions (later) */ void test_convert(double celsius, double expected) { ********************* hwx.h ************************ double fahr; #ifndef HWX_H // always at top of hwx.h. Compiler reads file only 1x. // calculate the temperature #define HWX_H // this makes prior statement false next time read. fahr = convert_celsius_to_fahrenheit(celsius); // function call /* convert_celsius_to_fahrenheit // this is the required function header // output the result * purpose: Converts a temperature given in Celsius into Fahrenheit. printf(“Test celsius %lfF, expected %lfC, calculated %lfC.\n”, * input parameters: celsius, expected, fahr); * float – the temperature in Celsius } * return value: * float – the temperature in Fahrenheit /* this is where the program starts */ */ int main() float convert_celsius_to_fahrenheit(float); // function prototype { #endif // matches #ifndef in 1st line double fahr, celsius; ********************* hwx.c ************************ #include <stdio.h> // these are the first two lines of all .c files // print out user information #include <stdlib.h> printf(“This program converts from Celsius to Fahrenheit\n”); #include “hwx.h” /* convert_celsius_to_fahrenheit // this function header goes again in // call a series of tests implementation test_convert( , ); // fill these in with well thought-out tests * purpose: Converts a temperature given in Celsius into Fahrenheit. test_convert( , ); * input parameters: test_convert( , ); * float – the temperature in Celsius test_convert( , ); * return value: * float – the temperature in Fahrenheit // return success */ return (0); float convert_celsius_to_fahrenheit(float celsius) // function implementation { } return (celsius*9.0)/5.0+32; *************************************** } To automate the compilation process, unix has the program “make” that uses a file named makefile Contents of makefile for this program: *************************************************** myexe: test-hwx.c hwx.c hwx.h To compile the code (go from human-readable code to an executable for the computer): clang test-hwx.c hwx.c –o myexe The executable will be named a.out: $ clang hwx.c test-hwx.c To run: $ ./a.out Notes: To make an executable with the name blah $ clang hwx.c test-hwx.c –o blah 1) Must be a tab before “clang”, not spaces. To run: $ ./blah 2) myexe: is the name of the target. You may have multiple targets in one makefile. st 3) Typing make compiles the 1 target in file. 4) If you have multiple targets, use “make myexe” to compile 5) test-hwx.c hwx.c hwx.h on first line after ‘:’ means that if any of those files have changed, recompile. List all files there for which it should compile in case of change. .

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    2 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us