ENGLISH

Smaller C - Lean Code for Small Machines

Book information

Publisher
O'Reilly Media, Inc.
Year
2021
ISBN
9781098100339
Language
english
Format
EPUB
Filesize
140 MB (146855923 bytes)
Edition
1
Pages
250\0
Time added
2021-05-31 11:37:09

Description

Book Description ---------------- For makers looking to use the smallest micro-controllers or to wring the highest performance out of larger ones, the C language is still the best option. This practical book provides a solid grounding in C basics for anyone who tinkers with programming micro-controllers. You'll explore the many ways C enables developers and makers to get big results out of tiny devices. `` Author Marc Loy shows you how to write clean, maintainable C code from scratch. This language and its cousin, C++, are still widely used to write low-level code for device drivers or operating systems. By understanding C syntax and its quirks, you'll gain an enduring computer language literacy that will help you pick up new languages and styles more easily. * Learn C fundamentals, such as data types, flow control, and functions * Explore memory management including how programs work on small devices * Understand answers provided in online forums such as Reddit or Stack Overflow * Write efficient, custom C code that's both readable and maintainable * Analyze the performance of your code and weigh optimizations * Evaluate third-party libraries for use in your own projects * Create your own libraries to share with others ========== About the Author ---------------- Marc Loy caught the programming bug after learning 6808 assembly to program his school's HERO 1 in the 80s. He developed and delivered training classes on Java, Unix internals, and networking at Sun Microsystems back in the day and has continued training a (much) wider audience ever since. He now spends his days consulting and writing on technical and media topics. He has also caught the maker bug and is exploring the fast-growing world of embedded electronics and wearables. Preface How to Use This Book Conventions Used in This Book Using Code Examples O’Reilly Online Learning How to Contact Us Acknowledgments 1. The ABCs of C Strengths and Weaknesses Getting Started Tools Required Creating a C “Hello, World” Compiling Your Code Running Your Code Next Steps 2. Storing and Stating Statements in C Statement Separators Statement Flow Variables and Types Getting User Input Strings and Characters Numbers Variable Names Variable Assignments printf() and scanf() printf() Formats Tailored Output scanf() and Parsing Inputs Operators and Expressions Arithmetic Operators Order of Operations Type Casting Next Steps 3. Flow of Control Boolean Values Comparison Operators Logical Operators Branching The if Statement The switch Statement The Ternary Operator and Conditional Assignment Loop Statements The for Statement The while Statement The do/while Variation Nesting Nested Loops and Tables Variable Scope Exercises Next Steps 4. Bits and (Many) Bytes Storing Multiple Things with Arrays Creating and Manipulating Arrays Review of Strings Multidimensional Arrays Accessing Elements in Multidimensional Arrays Storing Bits Binary, Octal, Hexadecimal Octal and Hexadecimal Literals in C Input and Output of Octal and Hex Values Bitwise Operators Mixing Bits and Bytes Conversion Answers Next Steps 5. Functions Familiar Functions Function Flow Simple Functions Sending Information to Functions Passing Simple Types Passing Strings to Functions Multiple Types Exiting a Function Returning Information Using Returned Values Ignoring Returned Values Nested Calls and Recursion Recursive Functions Variable Scope Global Variables The main() Function Return values and main() Command-Line Arguments and main() Next Steps 6. Pointers and References Addresses in C The NULL Value and Pointer Errors Arrays Local Variables and the Stack Global Variables and the Heap Pointer Arithmetic Array Pointers Functions and Pointers Managing Memory with Arrays Allocating with malloc() Deallocating with free() C Structures Defining Structures Assigning and Accessing Structure Members Pointers to Structures Functions and Structures Pointer Syntax Recap Next Steps 7. Libraries The C Standard Library stdio.h stdlib.h string.h math.h time.h ctype.h Putting It Together Filling In Strings Finding Our Interest Finding New Libraries Next Steps 8. Real-World C With Arduino Arduino IDE (Win, Mac, Linux) Installing on Windows Installing on macOS Installing on Linux Your First Arduino Project Selecting Your Board Hello, LED! An External LED Upgrade Arduino Libraries Managing Libraries Using Arduino Libraries Arduino Sketches and C++ C++ Objects and Variables More Practice with Objects C++ Considerations Object Homework Next Steps 9. Smaller Systems The Arduino Environment Special Values Special Types “Built-In” Functions Trying Out the Arduino “Stuff” Microcontroller I/O Sensors and Analog Input The Serial Monitor Is It Hot in Here? Segmented Displays Buttons and Digital Input Just How Hot Is It? Memory Management on Arduino Flash (PROGMEM) SRAM EEPROM Remembering Choices Interrupts Interrupt Service Routines Interrupt-Driven Programming Exercises Next Steps 10. Faster Code The Setup Floating-Point Versus Integer Math Floating-Point Math Alternatives Integer Math Versus No Math Lookup Tables The Project So Far The Power of Powers of 2 Loop Optimizations Unrolling for Fun and Profit Recursion Versus Iteration String Versus char[] Our Final Offer Next Steps 11. Custom Libraries Creating Your Own Library Preprocessor Directives Preprocessor Macros Custom Type Definitions Our Car Project Multifile Projects Code (.ino) Files Header Files Importing Custom Libraries Facilitating Communication Retrofitting Our Car Creating a Controller Creating the Library Updating the Car Project Getting It Under Control Go Driving! Documentation and Distribution Next Steps 12. Next Next Steps Intermediate and Advanced Topics IoT and Arduino Arduino Source Code Other Microcontrollers Industry C/C++ Back to the Future A. Hardware and Software Getting the Code Getting the Hardware: Adafruit VS Code Arduino IDE Fritzing GNU Compiler Collection B. printf() Format Specifier Details Specifier Syntax Specifier Types Specifier Flags Width and Precision Common Formats Index

Similar books