About this ebook
The popular C programming language is used for a huge range of applications, from the tiny microcontrollers used in toasters and watches up to complete operating systems. The first half of this book is an introduction to C, and covers the basics of writing simple command-line programs. The second half of the book shows how to use the GTK user interface toolkit with C to create feature-rich GUI applications which can be run on the desktop. No previous experience of C or GTK is required - even if you are an absolute beginner, this book will teach you all you need to know.
In this book, you'll learn how to:
- Create simple command-line C programs.
- Control flow with conditions and loops.
- Handle variables, strings, and files.
- Design graphical user interface applications in C.
- Handle user input with buttons and menus.
- Use advanced UI features such as data stores and dialogs.
Updated for GTK3, this book will teach you all you need to know to write simple programs in C and start creating GUIs. Although the examples in this book were developed on a Raspberry Pi running, Raspberry Pi OS, you can follow along on other operating systems, including Linux, macOS, and Windows with the Windows Subsystem for Linux.
Simon Long
Simon Long is an engineer working for Raspberry Pi. He is responsible for the Raspberry Pi Desktop and its associated applications. Before joining Raspberry Pi, he worked for Broadcom, where he first met Eben Upton, and before that spent ten years working as a software engineer and user interface designer for a major consultancy firm. In his spare time, he enjoys solving those really hard crosswords without any black squares.
Related to An Introduction to C & GUI Programming
Related ebooks
Mastering C++ Swiftly Rating: 0 out of 5 stars0 ratingsLearn to Code with C: Program with the world's most popular language on your Raspberry Pi Rating: 5 out of 5 stars5/5Dive Into Sea of C Rating: 0 out of 5 stars0 ratingsMastering C: A Comprehensive Guide to Proficiency in The C Programming Language Rating: 0 out of 5 stars0 ratingsBasic Information About C language PDF Rating: 0 out of 5 stars0 ratingsC Clearly - Programming With C In Linux and On Raspberry Pi Rating: 0 out of 5 stars0 ratingsProgramming Concepts in C++ Rating: 0 out of 5 stars0 ratingsIntroduction to programming in C, a practical approach. Rating: 0 out of 5 stars0 ratingsMastering C: A Comprehensive Guide to Programming Excellence Rating: 0 out of 5 stars0 ratingsC Programming: C Programming Language for beginners, teaching you how to learn to code in C fast! Rating: 0 out of 5 stars0 ratingsA Day in Code: An illustrated story written in the C programming language Rating: 0 out of 5 stars0 ratingsC++ Programming: From Novice to Expert in a Step-by-Step Journey Rating: 0 out of 5 stars0 ratingsIntroduction to Programming Languages Rating: 4 out of 5 stars4/5An Introduction to SAGE Programming: With Applications to SAGE Interacts for Numerical Methods Rating: 0 out of 5 stars0 ratingsC Programming Wizardry: From Zero to Hero in 10 Days: Programming Prodigy: From Novice to Virtuoso in 10 Days Rating: 0 out of 5 stars0 ratingsThe Art of Code: Exploring the World of Programming Languages Rating: 0 out of 5 stars0 ratingsC Programmin Language Rating: 0 out of 5 stars0 ratingsC++ Functions and tutorial Rating: 0 out of 5 stars0 ratingsC Programming Language, A Step By Step Beginner's Guide To Learn C Programming In 7 Days. Rating: 4 out of 5 stars4/5Computer Programming Using C Rating: 0 out of 5 stars0 ratingsCoding In C Decoded: Decoded, #1 Rating: 0 out of 5 stars0 ratingsAdvanced C Concepts and Programming: First Edition Rating: 3 out of 5 stars3/5Programming Language Concepts: Improving your Software Development Skills Rating: 0 out of 5 stars0 ratingsC Programming Language Rating: 4 out of 5 stars4/5My First In Java Rating: 0 out of 5 stars0 ratingsC Programming: Core Concepts and Techniques Rating: 0 out of 5 stars0 ratingsModern C++ Programming Rating: 0 out of 5 stars0 ratingsMastering C: Advanced Techniques and Tricks Rating: 0 out of 5 stars0 ratingsMastering Embedded C: The Ultimate Guide to Building Efficient Systems Rating: 0 out of 5 stars0 ratings
Programming For You
SQL QuickStart Guide: The Simplified Beginner's Guide to Managing, Analyzing, and Manipulating Data With SQL Rating: 4 out of 5 stars4/5Python: For Beginners A Crash Course Guide To Learn Python in 1 Week Rating: 4 out of 5 stars4/5Python Programming : How to Code Python Fast In Just 24 Hours With 7 Simple Steps Rating: 4 out of 5 stars4/5Python: Learn Python in 24 Hours Rating: 4 out of 5 stars4/5Coding All-in-One For Dummies Rating: 4 out of 5 stars4/5Excel 101: A Beginner's & Intermediate's Guide for Mastering the Quintessence of Microsoft Excel (2010-2019 & 365) in no time! Rating: 0 out of 5 stars0 ratingsSQL All-in-One For Dummies Rating: 3 out of 5 stars3/5Learn to Code. Get a Job. The Ultimate Guide to Learning and Getting Hired as a Developer. Rating: 5 out of 5 stars5/5Linux: Learn in 24 Hours Rating: 5 out of 5 stars5/5HTML in 30 Pages Rating: 5 out of 5 stars5/5Excel : The Ultimate Comprehensive Step-By-Step Guide to the Basics of Excel Programming: 1 Rating: 5 out of 5 stars5/5Microsoft Azure For Dummies Rating: 0 out of 5 stars0 ratingsA Slackers Guide to Coding with Python: Ultimate Beginners Guide to Learning Python Quick Rating: 0 out of 5 stars0 ratingsJavaScript All-in-One For Dummies Rating: 5 out of 5 stars5/5Coding with JavaScript For Dummies Rating: 0 out of 5 stars0 ratingsTeach Yourself C++ Rating: 4 out of 5 stars4/5Learn PowerShell in a Month of Lunches, Fourth Edition: Covers Windows, Linux, and macOS Rating: 5 out of 5 stars5/5Python for Data Science For Dummies Rating: 0 out of 5 stars0 ratingsBeginning Programming with Python For Dummies Rating: 3 out of 5 stars3/5Linux Basics for Hackers: Getting Started with Networking, Scripting, and Security in Kali Rating: 3 out of 5 stars3/5
Reviews for An Introduction to C & GUI Programming
0 ratings0 reviews
Book preview
An Introduction to C & GUI Programming - Simon Long
Chapter 1
Getting started
C is one of the most widely used programming languages – learn how to use it to program the Raspberry Pi!
What’s so great about C?
C is a very versatile and widely used programming language. It has been used to write pretty much everything, from low-level routines to control the hardware in embedded microcontrollers to complete operating systems like Linux with graphical user interfaces. In spite of this huge flexibility, it is also relatively simple – the language only has about 20 or so keywords, but there are huge libraries of additional functions that you can call on when you need them. In the first part of this book, we are going to concentrate on learning about the keywords, with a few of the more commonly used library functions; the second part of the book shows how to use the GTK library to make it easy to write graphical interfaces in C.
Many of the languages that you may have seen, such as Python, are what are called interpreted languages. This means that the code you write is run directly: each line of code is read in and interpreted as you run it. C is different: it’s a compiled language. This means that the code you write, known as the source code, is never run directly. The source code is passed through a program called a compiler, which converts it into a machine-readable version called an executable or a binary; you then run the resulting executable.
This may seem complex, but it has a few big advantages. First, it means that you don’t need to have a copy of C itself on every computer you want to run your program on; once compiled, the executable is standalone and self-contained. Second, the compilation process will find a lot of errors before you even run the program (but it won’t usually find all of them). Most importantly, the compilation process means that the time-consuming translation of human-readable code into machine-readable instructions has already happened, which means that compiled code generally runs many times faster than interpreted code would.
CHOOSE YOUR EDITOR
You can use whatever editor you like to enter code, as long as it saves it as plain text. The Geany editor included in Raspberry Pi OS is a good choice, but you can also use Leafpad, nano, or any others that you prefer.
WHITESPACE DOESN’T MATTER!
Unlike Python, whitespace has no significance in C – you can put spaces, tabs, and new lines anywhere you like in a C program to make it readable.
Hello world – your first C program
With all that out of the way – which has hopefully made you think that C might be worth learning – let’s have a look at the first program everyone writes in any language, the one that prints ‘Hello World’ on the screen. Incidentally, the tradition of writing a Hello World program was first introduced with the original documentation describing C itself. Just think: no C, no Hello World…
#include
void main (void)
{
/* A print statement */
printf (Hello world!\n
);
}
Hopefully not too frightening! Let’s look at it line by line.
#include
This is known as a hash-include. As mentioned above, the C language has a large library of functions that can be included, and we need to use one of them in this program: the formatted print command printf. This is part of the standard input-output library, or stdio for short. So what this line does is to warn the compiler that the program needs the stdio library to be included as part of the compile process.
void main (void)
C is a function-based language; every program is made up of a number of functions.
Each function takes zero or more arguments, and returns a single value. A function definition consists of a specification of what the function returns (in this case, a void), a function name (in this case, main), and a list of arguments enclosed in round brackets (again, a void).
Every C program has to include a function called main; when you run the compiled program, the main function is the first thing that executes.
The word void is called a type specifier; a void is a special type which means ‘no value required’. We’ll look more at types in the next chapter.
So this line defines the main function for this program; it states that the main function takes no arguments, and returns no value.
The code which makes up the function itself is enclosed between the two curly brackets {} that follow the function definition.
/* A print statement */
First, we have a comment telling us what’s going on. Comments in C start with the symbol /*, and end with */ – anything between those two symbols is ignored by the compiler.
The code itself is just one line:
printf (Hello world!\n
);
This is a call to the printf (‘print formatted’) function from the stdio library. In this case, it takes a single argument, which is a text string enclosed within double quotes. As mentioned above, function arguments are enclosed in round brackets.
Note that the line ends with a semicolon. All statements in C must finish with a semicolon; this tells the compiler that this is the end of a statement. One of the most common beginner mistakes in C is to forget a semicolon somewhere!
What about the string itself? The Hello World! bit is straightforward enough, but what about that \n at the end? Remember this function is called ‘print formatted’? Well, the \n is a bit of formatting; it’s the symbol for a newline character. So this line will print the string ‘Hello World!’, followed by a new line.
CHECK YOUR BRACKETS
Unlike whitespace, punctuation is very important in C – make sure you don’t use a curly bracket where a round one is needed, or vice versa.
Compiling your program
Let’s compile and run this. Raspberry Pi OS includes a C compiler called gcc, so there’s nothing to install; just start up Raspberry Pi OS on your Raspberry Pi and you’re ready to go. Use your favourite text editor to create a file called hello.c, copy the program above into it, and save it. Then, from a terminal, go into the directory where you saved hello.c and enter:
gcc –o myprog hello.c
This calls the gcc C compiler with the option -o myprog, which tells it to create an executable output file called myprog, and to use hello.c as the input source code.
If you entered your C code correctly (did you make sure the semicolon was there?), this should take a second or so and then return you to the command line. There should now be a file in the current directory called myprog – try running it by typing:
./myprog
Et voilà! You should now have…
Hello World!
…written in the terminal.
A command prompt window titled “pi at raspberry pi”, depicts how a program is compiled. The command g c c hyphen o my prog hello dot c, calls the g c c compiler, and the code dot forward slash my prog, produces the output, Hello World!You interact with both the C compiler and your compiled C programs from the command line; you can either do this in a terminal window in the desktop, or by booting your Raspberry Pi straight to the command line
RUNNING YOUR PROGRAM
You need to tell Linux that the program you want to run is in the current directory, so don’t forget the ./ before myprog, or it won’t know where to look!
That’s your first C program written, compiled, and run. In the next chapter, we’ll start using C for something a bit more useful…
Chapter 2
Variables and arithmetic
Doing some real work in C: creating variables and performing mathematical operations on them
In some languages, you can create variables as you go along and put whatever data you want into them. C isn’t like that: to use a variable in C, you need to have created it first, and at the time you create it, you have to set what type of value it’s going to store. By doing this, a block of memory of the correct size can be allocated by the compiler to hold the variable. This process of creating a variable is known as declaration.
Integers
There are several fundamental data types in C, but we’ll start by looking at one of the most commonly used: the int type, used to store an integer value.
#include
void main (void)
{
int a;
int b = 3;
int c;
a = 2;
c = a + b;
printf (The sum of adding %d and %d is %d\n
, a, b, c);
}
The top three lines inside the main function here are declarations. They tell the compiler that we would like to use variables called a, b, and c respectively, and that each one is of type int, i.e. an integer.
In the second line, we see an example of an initialisation at the same time as a declaration: this stores an initial value of 3 in the variable b. Note that the values of a and c at this point are undefined; you might assume that a variable which hasn’t had a value stored in it is always 0, but that isn’t the case in C. Before reading the value from a variable or using it in a calculation, you must store a value in it; reading a variable before initialising it is a common error in C.
The next two lines do some actual work with the variables we have declared.
a = 2;
This stores a value of 2 in the variable a, which will now have this value until it’s changed. The reason a is called a variable is that it can vary: you can change its value as often as you like, but only to another integer. The value of a variable can change, but its type is fixed when it is declared.
c = a + b;
This line adds a to b, and stores the result in c.
printf (The sum of adding %d and %d is %d\n
, a, b, c);
This is another use of the formatted print function we saw in the previous chapter. Note the three %d symbols inside the string: these are format specifiers, and they are how you output numbers in C. When the printf function is executed, each %d is replaced