Skip to content

nakatsinho/alx-low_level_programming

Repository files navigation

Alx-low_level_programming

0x00-hello_world

  • compiling c programs using gcc
  • Writing programs in betty style
  • Using printf, puts and write
  • using stdio.h

0x01-variables_if_else_while

  • Controll structures in c
  • loops in c.

0x02-functions_nested_loops

  • Nested loops
  • Functions : declaration , definition.
  • Function prototypes.
  • Scope of variables.

0x03-debugging

Debugging

  • Finding and resolving bugs.

0x04-more_functions_nested_loops

  • Nested loops
  • Functions and prototypes.

0x05-pointers_arrays_strings

  • Pointers
  • Arrays
  • Strings

0x06-pointers_arrays_strings

  • More pointers arrays an strings.

0x07-pointers_arrays_strings

  • Even more pointers, arrays and strings.

0x08-recursion

  • Recursion is where the solution to a problem depends on solutions to smaller instances of the same problem.
  • Working with recursive functions.

0x09-static_libraries

  • Creating and using Static Libraries in C.

0x0A-argc_argv

  • argc is Argument count.
  • argv is Argument vector.
  • passing argc and argv to main.

0x0B-malloc_free

  • malloc function allocates a specific number of bytes in memory and returns a pointer to the allocated memory.
  • free function frees up memory allocated.

This project entails some ways in whihc malloc and free can be used in C.

0x0C-more_malloc_free

This project entails more ways in which malloc can be used.

0x0D-preprocessor

Thr preprocessor removes comments and includes header files in source code before compilation begins. It also replaces macro names with code. This project will inlcude some of the ways in which macros are effective in C.

0x0E-structures_typedef

Structures in C are user defined datatypes that can hold elements of different datatypes. Typedef is used to declare elements of a cetain datatype from an existing datatype.

  • This project outlines the different uses of structures and typedef.

0x0F-function_pointers

Like normal pointers, there exists pointers that point to code rather than data these are function pointers.

  • This project shows some of the ways we can use function pointers.

0x10-variadic_functions

A variadic function is a function that takes a variable number of arguments whenever its called.

  • This project outlines different ways in which variadic functions can be used.

0x12-singly_linked_lists

A linked list is a naturally recursive data structure.

  • This project outlines some of the ways in which linked lists can be used.

0x13-more_singly_linked_lists

  • This project contains more ways of using linked lists.

0x14-bit_manipulation

Bit manipulation is the act of algorithmically manipulating bits or other pieces of data shorter than a byte.

  • C language is very efficient in manpulating bits.
  • This project shows different ways of manipulating bits in C.

0x15-file_io

Dealing with system calls provided by the kernel.

0x17-doubly_linked_lists

Doubly linked list si different from the singly linked list such that each node has an extra pointer to the previous node.

  • In this project, different operatiosn on the doubly linked list are demonstrated.

0x18-dynamic_libraries

Unlike static libraries, dynamic libraries are not stored in the executable file. They can be utilised by many programs and there is no need to recompile whenever a change is done. This project shows how to create and use a dynamic library.

0x19. C - Stacks, Queues - LIFO, FIFO

A stack is a linear data stsructure in which elements can be inserted and deleted only from one side of the list (i.e top). It follows the LIFO (Last in First Out) principle. A queue is a linear data structure in which elements can be inserted only from one side of the list called the rear and elements can be deleted only from the front. It follows the FIFO (First In First Out) principle. These concepts were ijmplemented under the monty project.

0x1A. C - Hash tables

A hash table (or hash map) is a data structure that implements an associative array abstract data type, A structure that can map keys to values. It uses a hash function to compute an index (or hash code) into an array of buckets or slots from which the desired value can be found.

0x1B Sorting Algorithm and Big-O notations

Sorting algorithms are step by step procedures that put elements in a list in a certain order. The most frequently used orders are numerical order and lexicographical order.

Sorting is important for optimaizing the efficiency of other algorithm is itself is efficient.In addition, it is usefule for canonicalizing data for producing human readable output.

Big-O notation is a relative representation of the complexity of an algorithm. This means it compares two similar algorithms and reduces the comparison to a single variable.

0x1C-makefiles

A makefile is a file that defines a set of tasks to be executed. It is a simple way to organize code compilation.

0x1E-search_algorithms

A search algorithm is an algorithm which solves a search problem. It works to retrieve information stored within some data structure or calculated in the search space ofa problem domain either with discrete or continuous values

Releases

No releases published

Packages

No packages published

Languages