23/11/2018

10 Best And The Most Active Freelancing Sites of 2018

When I started freelancing in 2017 there were totally different freelancing sites like Scriptlance, RentACoder, iFreelance. Some were acquired and others merged. Here is the list of best and the most active freelancing websites of 2018.
When I started freelancing from college in 2002 there were numerous freelancing sites like Scriptlance, RentACoder, iFreelance to name a few. Over time many small freelancing sites were acquired and merged to form bigger websites.

In 2018 we have few market leaders and here is a list of top freelancing websites who want to be a freelancer and work from home.

Upwork

Upwork (previously oDesk and Elance) is possibly one of the largest marketplaces for projects. You name any expertise and you will possibly see projects and freelancers related to it. Apart from a wide variety of technology it also has shorter-term projects, longer-term projects, entry-level projects as well as well as expert level high paying projects.
PPH has also adopted Fiverr concept where Freelancers can list what they could offer for an hour that clients can buy and you can also add perks similar to Fiverr.

Guru


Guru is yet another marketplace for finding job and projects. They have a very simple hiring process and so it makes really easy for the clients to hire freelancers. As it is a comparatively small marketplace, you don’t see as many freelancers as compared to upwork / freelancer which makes it less competitive. Apart from that Guru has Work Room feature which makes it really easy to manage all the jobs.

If I remember correctly Freelancer was started as GetAFreelancer and was more commonly known as GAF. They acquired almost all possible freelancing site known to me from those time like ScriptLance, vWorker (Previously RentACoder) to name a few.
It is quite a big marketplace and possibly second best to Upwork because Upwork quotes as having 4+ Million clients on their home page and Freelancer quotes as Millions of small businesses use them.
My experience with Freelancer has been that jobs are posted by clients of clients and not by direct clients.

Fiverr

Fiverr is a different kind of marketplace where freelancers post what they can offer for $5 (five-rr) and clients can search for those and order them.
Don’t worry, you don’t have to offer everything for $5 and you can always have additional perks for increased pricing. Fiverr fees are a lot higher than Upwork / Freelancer.

LinkedIn

Unquestionably the biggest social networking site for professionals with jobs being posted daily. There are millions of jobs (Mostly full time but quite a few part-time) jobs are being posted on a daily basis.
If you find position fitting right for your expertise, you can always apply for it.

iWriter


Freelancing site for writers and is possibly one of the biggest marketplaces for writers. You can apply for thousands of writing offers available and is one of the best sites dedicated to writers.





Probably the largest marketplace for logo, web and Graphic design. It is more like a contest based marketplace where you provide a brief of the design you are looking for and you will receive tons of design entries to choose from.
Quite innovative.
Can get many designs to choose from. Freelancer.com has also adopted the similar concept for their web design projects.

TopTal

Toptal has come up with a completely new process of individually screening each and every freelancer before they open up their projects to freelancer which means it will cut off those low-quality low-priced bids.
I did get an invite to join them but then could not schedule a meeting for screening process as I am too overly occupied with my existing clients recently.

DesignHill

Designhill is one of the upcoming marketplace for logo, web design & graphic design contests. The best part is, the option to sign up as a designer is not very intuitive. So there is lot less competition among designers which can mean a less competitive marketplace so people can get paid higher.
As per their website they have over 50,000 happy clients.

HubStaff

All freelancing marketplaces have fees for clients and freelancer but HubStaff has launched it differently. No fee structure. It is completely free for clients and freelancers. Quite an innovative way to launch a new marketplace and as per their blog they have already hit the 7,000+ freelancers mark and growing rapidly.

Broxer

A marketplace much similar to Fiverr but with an Indian focus. They have lowest commission structure of only 2% and it is the buyer that pays all the fees. As per their website feature it mentions and I quote:
Seller will get full amount whereas buyer will pay commission as per payment gateway selection.
So it means you get paid what you have listed your services for unlike Fiverr where you are paid 20% less. Though the site is new, it is gaining much of an attraction for its lesser commission structure and is a must watch freelancing site for 2018.

author :L'astro

21/11/2018

Exercices Langage C corrigés !

  • Exercice 1 : 
Ecrire un programme qui lit un caractère au clavier et affiche le caractère ainsi que son code numérique en employant getchar et printf,
 #include main() {
 int C ;
 printf("introduire un caractère suivi de 'Enter'\n");
 C = getchar(); 
printf("Le caractère %c a le code ASCII %d\n", C, C);
 return 0; }

  •  Exercice 2 :

 Ecrire un programme qui calcule et affiche la distance DIST (type double) entre deux points A et B du plan dont les coordonnées (XA, YA) et (XB, YB) sont entrées au clavier comme entiers.
 #include 
#include 
main() {
 int XA, YA, XB, YB; double DIST;
 /* Attention: La chaîne de format que nous utilisons */ 
 /* s'attend à ce que les données soient séparées par */
 /* une virgule lors de l'entrée. */
 printf("Entrez les coordonnées du point A : XA,YA ");
 scanf("%d,%d", &XA, &YA);
 printf("Entrez les coordonnées du point B : XB,YB ");
 scanf("%d,%d", &XB, &YB); DIST=sqrt(pow(XA-XB,2)+pow(YA-YB,2));
 printf("La distance entre A(%d,% d) et B(%d, %d) est %.2f\n",XA, YA, XB, YB, DIST);
 return 0; }

  •  Exercice 3 :

 Ecrivez un programme qui calcule les solutions réelles d'une équation du second degré ax2+bx+c = 0 en discutant la formule. Utilisez une variable d'aide D pour la valeur du discriminant b2-4ac et décidez à l'aide de D, si l'équation a une, deux ou aucune solution réelle. Utilisez des variables du type int pour A, B et C. Considérez aussi les cas où l'utilisateur entre des valeurs nulles pour A; pour A et B; pour A, B et C. Affichez les résultats et les messages nécessaires sur l'écran. Modifier le programme afin de considérer le cas des solutions complexes.
 #include
#include
main() {
 /* Calcul des solutions réelles et complexes d'une équation du second degré */ 
 int A, B, C; double D;
 /* Discriminant */
 printf("Calcul des solutions réelles et complexes d'une équation du second \n");
 printf("degré de la forme ax^2 + bx + c = 0 \n\n");
 printf("Introduisez les valeurs pour a, b, et c : ");
 scanf("%i %i %i", &A, &B, &C);
 /* Calcul du discriminant b^2-4ac */
 D = pow(B,2) - 4.0*A*C;
 /* Distinction des différents cas */
 if (A==0 && B==0 && C==0) 
/* 0x = 0 */ 
 printf("Tout réel est une solution de cette équation.\n");
 else 
if (A==0 && B==0) 
/* Contradiction: c # 0 et c = 0 */
 printf("Cette équation ne possède pas de solutions.\n");
 else 
if (A==0) 
/* bx + c = 0 */ 
 { printf("La solution de cette équation du premier degré est :\n");
 printf(" x = %.4f\n", (double)C/B); 
 } else if (D<0)
 /* b^2-4ac < 0 */ 
 { printf("Les solutions complexes de cette équation sont les suivantes :\n"); 
 printf(”x1 = %.4f + i%.4f\n”, (double)(-B),(double)(sqrt(-D)/(2*A))) ;
 printf(”x2 = %.4f + i%.4f\n”, (double)(-B),(double)(-sqrt(-D)/(2*A))) ; } 
 else if (D==0) 
/* b^2-4ac = 0 */ 
 { printf("Cette équation a une seule solution réelle :\n");
 printf(" x = %.4f\n", (double)-B/(2*A)); }
 else
 /* b^2-4ac > 0 */
 { printf("Les solutions réelles de cette équation sont :\n"); 
printf(" x1 = %.4f\n", (double)(-B+sqrt(D))/(2*A));
 printf(" x2 = %.4f\n", (double)(-B-sqrt(D))/(2*A));
 } 
 return 0;
 }

15/11/2018

La fonction main

La fonction main



       Dans un programme C, exactement une fonction doit s’appeler main. Les instructions constituant le corps de cette fonction seront exécutées à l’appel du programme. La fonction main peut être déclarée de 2 manières différentes :
 int main();
 int main(int argc, char *argv[]);
 Le premier prototype implique qu’on ignore les paramètres fournis au programme. 
Le deuxième prototype donne accès à ces paramètres :
 – argc est une variable entière qui indique le nombre d’arguments, 
argv est un tableau de chaînes de caractères représentant ces arguments. 
La valeur de retour de la fonction main est utilisé comme code de retour du programme. 
La fonction void exit(int code) permet d’interrompre l’exécution du programme à partir de n’importe où dans le code. Le code de retour du programme est celui donné en argument.

Variables locales

Variables locales


Lorsqu’une variable est déclarée dans le corps d’une fonction, elle est dite locale. Les variables locales sont déclarées d’une manière similaire aux variables globales. Elles peuvent cependant être initialisées avec la valeur d’une expression et non plus seulement avec une constante.

decl-loc-var ::= [ static ] [ const ] id-type ptr-pref id arr-suff [= expr] (, ptr-pref id arr-suff [= expr] )* ;
Le mot-clé static permet de déclarer une variable locale statique : la valeur d’une telle variable est préservée d’un appel à l’autre de cette fonction.

Language C: Variables

    Language C: Variables

  • What is a variable?

To understand what a variable is, and how to manipulate it, one must begin by understanding how our computer does to store this basic information. Our computer has been designed to be versatile enough: it can theoretically store any type of information. To do this, it uses a particularly simple trick: it stores its information by cutting into small units of information called bits. These bits are therefore very simple units that can not take two values: 0 or 1.
To store information, just take several of these bits and group them next to each other. By doing so, we can create sequences of 0 and 1 that can be interpreted as numbers. We can thus represent positive numbers, negative numbers, decimal numbers, etc. All that our computer can do is manipulate these sequences of bits, these numbers. In short, our computer is only a big calculator.
More complex information, such as video, text, etc. are all stored in our computer in the form of numbers. By using several of these bits, we can represent anything: text, numbers, video, etc. I guess it will be difficult to believe me, but be aware that any information found in our computer is represented with only 0 and 1!

  • Memory 

These bits are stored in a particular electronic component, present in our computer: the memory. Its role: to store all bits that represent our information.

Finally, I say "memory", but in fact there are several. Just as a human has several memories (short-term memory, long-term memory, etc.) that are used to store a lot of information, the computer also uses several memories to store a lot of data of different sizes. .


But why many memories and not one?


The fact is that if we wanted to use a single large memory in our computer, it would be inevitably very slow: it is impossible to create memories that are both fast and can contain a lot of data. We can not use a single large memory capable of storing all the data we need. This problem arose from the beginning of computer science. The inventors of the first modern computers were soon confronted with this problem. For those who do not believe me, take a look at this 1940s quote from a research report on one of the world's first computers:


   Ideally, we would like a memory of an infinitely large capacity such that any data is immediately accessible. We are forced to recognize the possibility of building a hierarchy of memory, each with a capacity greater than the previous one, but accessible less quickly.

As we can see, this quotation (translated from English) shows the problem, but also evokes the solution adopted to this problem. To solve this problem, it is enough to segment the memory of the computer into several sub-memories of different size and speed that are used as needed. We will have memories that can contain few data in which we can read and write quickly and more important memories, but slower. This solution was the first solution invented to solve this problem and is still massively used at the moment: we have not done better!

We said that the computer used several memories. And you should know that three of these memories are important, and must be known to any programmer. I present to you:


The registers ;

RAM ;
the hard drive.
So obviously, these are not the only ones: we could also mention the cache memory and more, but it has nothing to do in a tutorial on C. And then there are already courses on this subject on the Zero Site, for example, the operation of a computer from scratch.

Registers are memories built into our processor. They are very fast, but can only contain very simple data: it is difficult to put more than a number in it. Their purpose is to store temporary data for faster access.


RAM is a little bigger memory, and slower than the registers. It can hold a lot of data, and it is generally used to store the program that has just been launched, as well as the data it will manipulate.


This memory has a slight defect: it loses its content when the power is turned off. In other words, we must find another memory to store our operating system, our programs, etc. : it's the role of the hard drive, a very big memory, but very slow.



In C, the most used memory is RAM. And so, to understand how to program in C, it will understand how to interact with this RAM. Later in this lesson, we will also see how to handle files on the hard disk. But as far as the registers are concerned, it's another thing: the C almost completely hides the management of these, which is done almost entirely by the compiler. Can not handle them directly!
Declare a variable 
Let's get to the heart of the matter by learning to declare our variables. To get started, you need to know that a variable consists of two mandatory elements:

An identifier: this is basically the "name" of the variable;

A type.
The type of a variable makes it possible to indicate what one wants to store: an integer, a number with comma (one says also a floating point), a character, etc. To specify the type of a variable, we must use a keyword, specific to the type that we want to give to our variable.

Once we have decided the name of our variable, as well as its type, we can create it (we also say declare it) like this:


 identifier type ;

Clearly, just place a keyword indicating the type of the variable, and place the name that was chosen immediately after.

Pay close attention to the semicolon at the end!


Types 

As said before, a type makes it possible to indicate to the compiler which type of data one wants to store. This type will make it possible to specify:

all the values ​​that the variable can take;

and the operations that can be performed on it, so as not to add a letter with a decimal number.
Defining the type of a variable makes it possible to specify its potential content and what can be done with it.

The C language provides 8 basic types:


Type contents

tank a character or an integer
shorts an integer
int an integer
long an integer
float a floating point number
double a floating point number
long double a floating point number
The short, int, and long types all serve to store integers that can take positive, negative, or null values. They say that they are signed types. For these three types, there is an unsigned equivalent type. An unsigned integer type is an integer type that accepts only positive or null values: it can not store negative values. To declare variables of an unsigned type, you just need to precede the name of the integer type of the unsigned keyword.

The tank can also be used to store numbers. It is mostly used for storing characters, but these are stored in the computer as numbers, it is possible to store numbers in a tank. The only problem is that this tank may very well be signed on some compilers and not on others. Depending on the compiler used, the char will be either signed by default or unsigned. To avoid trouble using a char as a number, you can explicitly declare your unsigned chars: unsigned char or signed: signed char.


Capacity of a type : NEXT Chapter 


14/11/2018

C "Hello, World!" Program

                C "Hello, World!" Program



A simple C program to display "Hello, World!" on the screen. Since, it's a very simple program, it is often used to illustrate the syntax of a programming language.
hello world program
Hello world!
How "Hello, World!" program works?
  • The #include <stdio.h> is a preprocessor command. This command tells compiler to include the contents of stdio.h (standard input and output) file in the program.
    The stdio.h file contains functions such as scanf() and print() to take input and display output respectively.
    If you use printf() function without writing #include <stdio.h>, the program will not be compiled.
  • The execution of a C program starts from the main() function.
  • The printf() is a library function to send formatted output to the screen. In this program, the printf() displays Hello, World! text on the screen.
  • The return 0; statement is the "Exit status" of the program. In simple terms, program ends with this statement.




C (programming language)

C (programming language)

features of C programming language 


      C (/siː/, as in the letter c) is a general-purpose, imperative computer programming language, supporting structured programming, lexical variable scope and recursion, while a static type system prevents many unintended operations. By design, C provides constructs that map efficiently to typical machine instructions, and therefore it has found lasting use in applications that had formerly been coded in assembly language, including operating systems, as well as various application software for computers ranging from supercomputers to embedded systems.


      C was originally developed by Dennis Ritchie between 1969 and 1973 at Bell Labs,[6] and used to re-implement the Unix operating system.[7] It has since become one of the most widely used programming languages of all time,[8][9] with C compilers from various vendors available for the majority of existing computer architectures and operating systems. C has been standardized by the American National Standards Institute (ANSI) since 1989 (see ANSI C) and subsequently by the International Organization for Standardization (ISO).


      C is an imperative procedural language. It was designed to be compiled using a relatively straightforward compiler, to provide low-level access to memory, to provide language constructs that map efficiently to machine instructions, and to require minimal run-time support. Despite its low-level capabilities, the language was designed to encourage cross-platform programming. A standards-compliant C program that is written with portability in mind can be compiled for a very wide variety of computer platforms and operating systems with few changes to its source code. The language has become available on a very wide range of platforms, from embedded microcontrollers to supercomputers.
C has a formal grammar specified by the C standard.[22] Line endings are generally not significant in C; however, line boundaries do have significance during the preprocessing phase. Comments may appear either between the delimiters /* and */, or (since C99) following // until the end of the line. Comments delimited by /* and */ do not nest, and these sequences of characters are not interpreted as comment delimiters if they appear inside string or character literals.[23]

C source files contain declarations and function definitions. Function definitions, in turn, contain declarations and statements. Declarations either define new types using keywords such as struct, union, and enum, or assign types to and perhaps reserve storage for new variables, usually by writing the type followed by the variable name. Keywords such as char and int specify built-in types. Sections of code are enclosed in braces ({ and }, sometimes called "curly brackets") to limit the scope of declarations and to act as a single statement for control structures.

As an imperative language, C uses statements to specify actions. The most common statement is an expression statement, consisting of an expression to be evaluated, followed by a semicolon; as a side effect of the evaluation, functions may be called and variables may be assigned new values. To modify the normal sequential execution of statements, C provides several control-flow statements identified by reserved keywords. Structured programming is supported by if(-else) conditional execution and by do-while, while, and for iterative execution (looping). The for statement has separate initialization, testing, and reinitialization expressions, any or all of which can be omitted. break and continue can be used to leave the innermost enclosing loop statement or skip to its reinitialization. There is also a non-structured goto statement which branches directly to the designated label within the function. switch selects a case to be executed based on the value of an integer expression.

Expressions can use a variety of built-in operators and may contain function calls. The order in which arguments to functions and operands to most operators are evaluated is unspecified. The evaluations may even be interleaved. However, all side effects (including storage to variables) will occur before the next "sequence point"; sequence points include the end of each expression statement, and the entry to and return from each function call. Sequence points also occur during evaluation of expressions containing certain operators (&&, ||, ?: and the comma operator). This permits a high degree of object code optimization by the compiler, but requires C programmers to take more care to obtain reliable results than is needed for other programming languages.

Kernighan and Ritchie say in the Introduction of The C Programming Language: "C, like any other language, has its blemishes. Some of the operators have the wrong precedence; some parts of the syntax could be better."[24] The C standard did not attempt to correct many of these blemishes, because of the impact of such changes on already existing software.

Character set

The basic C source character set includes the following characters:

Lowercase and uppercase letters of ISO Basic Latin Alphabet: a–z A–Z
Decimal digits: 0–9
Graphic characters: ! " # % & ' ( ) * + , - . / : ; < = > ? [ \ ] ^ _ { | } ~
Whitespace characters: space, horizontal tab, vertical tab, form feed, newline
Newline indicates the end of a text line; it need not correspond to an actual single character, although for convenience C treats it as one.

Additional multi-byte encoded characters may be used in string literals, but they are not entirely portable. The latest C standard (C11) allows multi-national Unicode characters to be embedded portably within C source text by using \uXXXX or \UXXXXXXXX encoding (where the X denotes a hexadecimal character), although this feature is not yet widely implemented.

The basic C execution character set contains the same characters, along with representations for alert, backspace, and carriage return. Run-time support for extended character sets has increased with each revision of the C standard.

Reserved words

C89 has 32 reserved words, also known as keywords, which are the words that cannot be used for any purposes other than those for which they are predefined:

auto
break
case
char
const
continue
default
do
double
else
enum
extern
float
for
goto
if
int
long
register
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while
C99 reserved five more words:

_Bool
_Complex
_Imaginary
inline
restrict
C11 reserved seven more words:[25]

_Alignas
_Alignof
_Atomic
_Generic
_Noreturn
_Static_assert
_Thread_local
Most of the recently reserved words begin with an underscore followed by a capital letter, because identifiers of that form were previously reserved by the C standard for use only by implementations. Since existing program source code should not have been using these identifiers, it would not be affected when C implementations started supporting these extensions to the programming language. Some standard headers do define more convenient synonyms for underscored identifiers. The language previously included a reserved word called entry, but this was seldom implemented, and has now been removed as a reserved word.[26]

Operators

Main article: Operators in C and C++
C supports a rich set of operators, which are symbols used within an expression to specify the manipulations to be performed while evaluating that expression. C has operators for:

arithmetic: +, -, *, /, %
assignment: =
augmented assignment: +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=
bitwise logic: ~, &, |, ^
bitwise shifts: <<, >>
boolean logic: !, &&, ||
conditional evaluation: ? :
equality testing: ==, !=
calling functions: ( )
increment and decrement: ++, --
member selection: ., ->
object size: sizeof
order relations: <, <=, >, >=
reference and dereference: &, *, [ ]
sequencing: ,
subexpression grouping: ( )
type conversion: (typename)
C uses the operator = (used in mathematics to express equality) to indicate assignment, following the precedent of Fortran and PL/I, but unlike ALGOL and its derivatives. C uses the operator == to test for equality. The similarity between these two operators (assignment and equality) may result in the accidental use of one in place of the other, and in many cases, the mistake does not produce an error message (although some compilers produce warnings). For example, the conditional expression if(a==b+1) might mistakenly be written as if(a=b+1), which will be evaluated as true if a is not zero after the assignment.[27]

The C operator precedence is not always intuitive. For example, the operator == binds more tightly than (is executed prior to) the operators & (bitwise AND) and | (bitwise OR) in expressions such as x & 1 == 0, which must be written as (x & 1) == 0 if that is the coder's intent.[28]

"Hello, world" example
The "hello, world" example, which appeared in the first edition of K&R, has become the model for an introductory program in most programming textbooks, regardless of programming language. The program prints "hello, world" to the standard output, which is usually a terminal or screen display.

The original version was:[29]

main()
{
    printf("hello, world\n");
}
A standard-conforming "hello, world" program is:[a]

#include <stdio.h>

int main(void)
{
    printf("hello, world\n");
}
The first line of the program contains a preprocessing directive, indicated by #include. This causes the compiler to replace that line with the entire text of the stdio.h standard header, which contains declarations for standard input and output functions such as printf. The angle brackets surrounding stdio.h indicate that stdio.h is located using a search strategy that prefers headers provided with the compiler to other headers having the same name, as opposed to double quotes which typically include local or project-specific header files.

The next line indicates that a function named main is being defined. The main function serves a special purpose in C programs; the run-time environment calls the main function to begin program execution. The type specifier int indicates that the value that is returned to the invoker (in this case the run-time environment) as a result of evaluating the main function, is an integer. The keyword void as a parameter list indicates that this function takes no arguments.[b]

The opening curly brace indicates the beginning of the definition of the main function.

The next line calls (diverts execution to) a function named printf, which in this case is supplied from a system library. In this call, the printf function is passed (provided with) a single argument, the address of the first character in the string literal "hello, world\n". The string literal is an unnamed array with elements of type char, set up automatically by the compiler with a final 0-valued character to mark the end of the array (printf needs to know this). The \n is an escape sequence that C translates to a newline character, which on output signifies the end of the current line. The return value of the printf function is of type int, but it is silently discarded since it is not used. (A more careful program might test the return value to determine whether or not the printf function succeeded.) The semicolon ; terminates the statement.


The closing curly brace indicates the end of the code for the main function. According to the C99 specification and newer, the main function, unlike any other function, will implicitly return a value of 0 upon reaching the } that terminates the function. (Formerly an explicit return 0; statement was required.) This is interpreted by the run-time system as an exit code indicating successful execution.[30]