C Programming — Complete Course Notes (BCA 1st Sem)
Comprehensive master notes covering fundamentals, syntax, control statements, arrays, pointers, structures, and file I/O for TU BCA 1st semester.
C Programming · CACS101 · Semester 1
Welcome to the comprehensive lecture and study notes for C Programming (Course Code: CACS101), strictly adhering to the Tribhuvan University (TU) BCA 1st Semester syllabus.
1. Fundamentals of C Programming
C is a general-purpose, procedural, middle-level programming language developed in 1972 by Dennis M. Ritchie at Bell Telephone Laboratories to develop the UNIX operating system.
Key Characteristics:
- Middle-Level Language: Combines the high-level readability of user-defined functions and structures with low-level direct memory manipulation using pointers.
- Structured Programming: Modular design using functions, loops, and block-scoped variables.
- Portability & Efficiency: Generates compact, highly optimized native machine assembly code.
```c #include <stdio.h>
int main(void) { printf("Hello, EduNepal Student!\n"); return 0; } ```
2. Compilation and Execution Process
The transition from human-readable C source code (.c) to an executable binary (.exe or ELF) consists of four sequential phases:
- Preprocessing (
cpp): Expands macros (#define), strips comments, and includes header files (#include). - Compilation (
cc1): Converts preprocessed code into assembly instructions. - Assembly (
as): Translates assembly code into relocatable object code (.oor.obj). - Linking (
ld): Combines object files with C standard libraries (libc) to produce the final executable.
3. Data Types and Memory Footprint (32/64-bit Architecture)
| Data Type | Keyword | Size (Bytes) | Format Specifier | Typical Range |
|---|---|---|---|---|
| Character | char | 1 | %c | -128 to 127 |
| Integer | int | 4 | %d | -2,147,483,648 to 2,147,483,647 |
| Floating Point | float | 4 | %f | 1.2E-38 to 3.4E+38 (6 decimals) |
| Double Precision | double | 8 | %lf | 2.3E-308 to 1.7E+308 (15 decimals) |
| Void | void | 0 | - | Valueless |
4. Control Statements & Decision Making
If-Else Decision Making:
```c #include <stdio.h>
int main() { int score; printf("Enter exam marks (0-100): "); scanf("%d", &score);
if (score >= 80) { printf("Grade: Distinction\n"); } else if (score >= 60) { printf("Grade: First Division\n"); } else if (score >= 40) { printf("Grade: Pass\n"); } else { printf("Grade: Fail\n"); } return 0; } ```
5. Pointers and Dynamic Memory Allocation
A pointer is a variable that stores the memory address of another variable.
- The address-of operator
&retrieves the memory address. - The dereference operator
*accesses the value stored at that address.
```c #include <stdio.h> #include <stdlib.h>
int main() { int ptr = (int )malloc(5 * sizeof(int)); if (ptr == NULL) { printf("Memory allocation failed!\n"); return 1; }
for (int i = 0; i < 5; i++) { ptr[i] = (i + 1) 10; printf("Element %d at %p = %d\n", i, (void)&ptr[i], ptr[i]); }
free(ptr); // Prevent memory leak return 0; } ```
CS50x Introduction to C Programming Lecture (David J. Malan)
Open lesson pageLesson videos
- Which of the following is an invalid variable name in C? (a) _salary (b) 1st_rank (c) total_sum (d) age2objective · 1 marks
- What is the return type of the `malloc()` function in C? (a) `int*` (b) `char*` (c) `void*` (d) `float*`objective · 1 marks
- Explain the difference between call by value and call by reference in C with suitable code snippets.short · 5 marks
- What is recursion? Write a recursive function in C to calculate the factorial of a positive integer.short · 5 marks
- Explain dynamic memory allocation in C. Differentiate between `malloc()` and `calloc()`. Write a C program to dynamically allocate memory for N integers, sort them in ascending order, and free the memory.long · 10 marks
C Programming
Overview
C Programming (CACS101) is a core credit course structured under the official university academic syllabus for Bachelor of Computer Application.
Objectives
- Equip students with deep theoretical foundations in C Programming.
- Develop practical problem-solving, laboratory, and implementation skills.
- Prepare graduates for industry careers, research, and national university examinations.
Unit structure
- Unit 1: Introduction to Programming Concepts and C Language6 hrs
By the end of Unit 1, students will be able to explain, implement, and solve problems related to Introduction to Programming Concepts and C Language.
Unit 1:Comprehensive study notes, key principles, and examples for Introduction to Programming Concepts and C Language. - Unit 2: Operators and Expressions7 hrs
By the end of Unit 2, students will be able to explain, implement, and solve problems related to Operators and Expressions.
Unit 2:Comprehensive study notes, key principles, and examples for Operators and Expressions. - Unit 3: Input and Output Operations4 hrs
By the end of Unit 3, students will be able to explain, implement, and solve problems related to Input and Output Operations.
Unit 3:Comprehensive study notes, key principles, and examples for Input and Output Operations. - Unit 4: Control Statements and Decision Making8 hrs
By the end of Unit 4, students will be able to explain, implement, and solve problems related to Control Statements and Decision Making.
Unit 4:Comprehensive study notes, key principles, and examples for Control Statements and Decision Making. - Unit 5: Arrays and String Manipulations8 hrs
By the end of Unit 5, students will be able to explain, implement, and solve problems related to Arrays and String Manipulations.
Unit 5:Comprehensive study notes, key principles, and examples for Arrays and String Manipulations. - Unit 6: Functions and Recursion7 hrs
By the end of Unit 6, students will be able to explain, implement, and solve problems related to Functions and Recursion.
Unit 6:Comprehensive study notes, key principles, and examples for Functions and Recursion. - Unit 7: Pointers and Memory Management8 hrs
By the end of Unit 7, students will be able to explain, implement, and solve problems related to Pointers and Memory Management.
Unit 7:Comprehensive study notes, key principles, and examples for Pointers and Memory Management. - Unit 8: Structures and Unions5 hrs
By the end of Unit 8, students will be able to explain, implement, and solve problems related to Structures and Unions.
Unit 8:Comprehensive study notes, key principles, and examples for Structures and Unions. - Unit 9: File Handling in C5 hrs
By the end of Unit 9, students will be able to explain, implement, and solve problems related to File Handling in C.
Unit 9:Comprehensive study notes, key principles, and examples for File Handling in C.
Learning outcomes
- Demonstrate rigorous technical knowledge and conceptual mastery of C Programming.
- Design, implement, and analyze efficient algorithms and practical frameworks.
- Solve representative theoretical proofs and complex applied problems independently.
Teaching & evaluation
Classroom lectures (3 hours/week), practical laboratory assignments (3 hours/week), and project work.
Internal Assessment (40 Marks: Theory Exam, Practical Exam, Attendance, Assignments) and Final University Board Examination (60 Marks).
Reference books
- Programming in ANSI C by E. Balagurusamy (McGraw-Hill)
- The C Programming Language by Brian Kernighan & Dennis Ritchie (Prentice Hall)
- Let Us C by Yashavant Kanetkar (BPB Publications)
Related notes
- Unit 1: Introduction to Programming Concepts and C Language NotesNotes
- Unit 2: Operators and Expressions NotesNotes
- Unit 3: Input and Output Operations NotesNotes
- Unit 4: Control Statements and Decision Making NotesNotes
- Unit 5: Arrays and String Manipulations NotesNotes
- Unit 6: Functions and Recursion NotesNotes
Related video lessons
Practice questions
- Which of the following is an invalid variable name in C? (a) _salary (b) 1st_rank (c) total_sum (d) age2objective · 1 marks
- What is the return type of the `malloc()` function in C? (a) `int*` (b) `char*` (c) `void*` (d) `float*`objective · 1 marks
- Explain the difference between call by value and call by reference in C with suitable code snippets.short · 5 marks
- What is recursion? Write a recursive function in C to calculate the factorial of a positive integer.short · 5 marks
- Explain dynamic memory allocation in C. Differentiate between `malloc()` and `calloc()`. Write a C program to dynamically allocate memory for N integers, sort them in ascending order, and free the memory.long · 10 marks