03 December 2014

دورة الالكترونيات العملية

دورة الالكترونيات العملية

افضل دورة عربية لاحتراف الالكترونيات من اعداد المهندس وليد عيسى 

انتاج              موقع eletorial 


روابط الدورة :

رابط الدورة الرئيسي :        here

رابط اليوتيوب:                     here



للمزيد من المعلومات زورو موقع المهندس ,


16 November 2014

كتاب السي الشامل

افضل كتاب لتعلم لغة السي بابسط طريقة ممكنة 

كتاب تطبيقي 100%


تاليف :  خليل اونيس


رابط الكتاب:





13 November 2014

apprendre à développer en C

apprendre à développer en C

  les coures videos pour debutez le programmation en C





lien des videos:  (youtube)

apprendre à développer en C

lesson 3: les operations

Les Opérations:

Dans beaucoup de programmes C, il y a, à un moment ou un autre, besoin d'effectuer des calculs plus ou moins importants. C'est pour cela qu'il me semble nécessaire que nous apprenions a faire des maths depuis notre programme.

Expressions



Qu'est ce qu'une expression ?

2 + 3
ageUtilisateur


Voila deux expressions. Fondamentalement toutes représentations de valeur en C est une expression La variable ageUtilisateur( pour reprendre l'exemple du dessus ) représente bien une valeur : cette valeur sera sans doute un âge.

D'ailleurs on peut afficher cela avec un code tout simple :

Code c:
int main ()
{
 printf(" 2 + 3 = %ld", 2 + 3);
 return 0;
}


On suppose ici que le résultat est de type long , Normalement on voit apparaitre :

Code console:
2 + 3 = 5


explication:


Les additions


Vous savez tous, enfin j'espère, comment fonctionne une addition. Et bien en C, c'est pareil.   On additionne deux nombres, deux variables, grâce à l'opérateur arithmétique " + ". Et de la même manière qu'au dessus on affiche le résultat dans un printf.

Comme un bon code vaut mieux qu'un long discours, voici un code dans lequel on trouve en premier :
  • - une variable dont la valeur est le résultat d'une addition toute simple
  • - une autre variable dont la valeur vaut celle de la précédente à laquelle on ajoute deux.
  • - une variable dont la valeur vaut la somme des valeurs des deux variables précédentes.



Code c:
int main ()
{
 long chiffre = 1 + 1;
 long chiffre2 = chiffre + 2;
 long chiffre3 = chiffre + chiffre2;
 
 printf ("Chiffre vaut : %ld, chiffre2 vaut : %ld et l addition des deux vaut : %ld", chiffre, chiffre2, chiffre3);
 return 0;
}


Attention il est important d'initialiser en premier " chiffre ", puis " chiffre2 " et enfin " chiffre3 " sinon le compilateur plante ... Je tenais à vous faire écrire ce code pour vous faire part de cette erreur assez répandue chez les débutants en C. Mais pas de panique on comprend très vite.

On peut aussi faire une addition de variables directement dans le printf. Mais j'avoue ça devient illisible quand on utilise trop de valeur. Il vaut donc mieux faire le calcul en dehors du printf.

Un petit code pour montrer ça :


Code c:
int main ()
{
 long chiffre = 1 + 1;
 long chiffre2 = chiffre + 2;
 printf ("L addition vaut %ld", chiffre + chiffre2);
 return 0;
}



Tiens ...

Maintenant que nous savons additionner pourquoi ne pas créer une petite calculette ?
Voila comment on va se dérouler le programme
  • - On demande deux nombres entiers à l'utilisateur.
  • - On les stocke dans deux variables
  • - On additionne ces variables et on stocke le résultat dans une troisième variable
  • - On affiche le résultat

Voici la solution :

Code c:
int main ()
{
 long premierNombre = 0;
 long deuxiemeNombre = 0;
 long resultat = 0;

 /* \t équivaut à une tabulation */
 printf("\t\tMa super calculette\n\n");
 printf("Ce programme additionne 2 nombres entiers !!!\n");
 printf("Entrez le premier nombre svp : ");
 scanf("%ld", &premierNombre);
 printf("Deuxieme ombre svp : ");
 scanf("%ld", &deuxiemeNombre);

 resultat = premierNombre + deuxiemeNombre;

 printf("\nResultat : %ld", resultat);
 return 0;
}


Ce qui nous donne :

Code console:
Entrez le premier nombre svp : 21
Deuxieme nombre svp : 56

Resultat : 77


C'est simple, c'est simple ...


Les soustractions



Et bien il s'agit exactement du même principe que l'addition si ce n'est qu'on utilise l'opérateur " - " et que le programme réalise une soustraction ... Que dire d'autre ? Rien ... Un petit code quand même pour illustrer :

Code c:
int main ()
{
 long chiffre = 2;
 long chiffre2 = 3;
 long chiffre3 = chiffre - chiffre2;
 long chiffre4 = 10 - 8;

 printf("chiffre3 vaut : %ld, chiffre4 vaut %ld.", chiffre3, chiffre4);
 return 0;
}

Code console:
chiffre3 vaut : -1, chiffre4 vaut 2.



Les multiplications


Toujours le même principe que l'addition, sauf que l'opérateur n'est pas " x " mais " * ". Et bien entendu il s'effectue non plus une addition mais une multiplication. Le code fournie avec le produit .


Code c:
int main ()
{
 long chiffre = 2;
 long chiffre2 = 4;
 long chiffre3 = chiffre * chiffre2;
 long chiffre4 = 10 * 0;

 printf("chiffre3 vaut : %ld, chiffre4 vaut %ld.", chiffre3, chiffre4);
 return 0;
}


Code console:
chiffre3 vaut : 8, chiffre4 vaut 0.

Les divisions et modulos


Toujours le même principe que l'addition sauf que l'opérateur de le division est " / " et celui du modulo est " % ".

Quel différence entre les deux ?

Et bien la division est un peu complexe, en effet on ne prend pas en compte la possible virgule, ce qui fait que le résultat d'une division telle que 2 / 4 ne sera pas égale à 0.5 mais à 0 ! C'est un petit peu le principe des divisions à reste. On ne s'occupe que du quotient et pas du reste.

Le modulo quand à lui s'occupe du reste. Si vous tapez dans un programme 2 % 4 alors le résultat sera égale au reste ( 2 ).

!!!!!!! ATTENTION !!!!!! UNE DIVISION PAR 0 EST INTERDITE !!!!

Le code qui résume :

Code c:
int main ()
{
 long chiffre = 2 % 4;
 long chiffre2 = 2 / 4;

 printf("chiffre vaut : %ld, chiffre2 vaut %ld.", chiffre, chiffre2);
 return 0;
}


Code console:
chiffre vaut : 2, chiffre2 vaut 0.



à la fin "enjoy !".

LESSON 2 : les variables et les constants

1-Les variables:

Le concept de variable

Une variable est un objet repéré par son nom, pouvant contenir
des données, qui pourront être modifiées lors de l'exécution du programme.
Les variables en langage C sont typées, c'est-à-dire que les données
contenues dans celles-ci possèdent un type, ainsi elles sont donc stockées dans la mémoire
et occupent un nombre d'octets dépendant du type de donnée stockée.

En langage C, les noms de variables peuvent être aussi long que l'on désire, toutefois
le compilateur ne tiendra compte que des 32 premiers caractères.
De plus, elles
doivent répondre à certains critères :
  • un nom de variable doit commencer par une lettre (majuscule ou minuscule) ou un « _ » (pas par un chiffre)
  • un nom de variable peut comporter des lettres, des chiffres et le caractère   
       « _ » (les espaces ne sont pas autorisés !)
  • les noms de variables ne peuvent pas être les noms suivants (qui sont des noms réservés) :
    • 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






Les noms de variables sont sensibles à la casse (le langage C fait la différence entre
un nom en majuscules et un nom en minuscules), il faut donc veiller à

utiliser des noms comportant la même casse !

La déclaration de variables

       Pour pouvoir utiliser une variable, il faut la définir, c'est-à-dire lui  donner un nom, mais surtout un type de donnée à stocker afin qu'un  espace mémoire conforme au type de donnée qu'elle contient lui soit réservé.

Une variable se déclare de la façon suivante :
 type Nom_de_la_variable;

ou bien s'il y a plusieurs variables du même type :
 type Nom_de_la_variable1, Nom_de_la_variable2, ...;

Affectation d'une donnée à une variable

Pour stocker une donnée dans une variable que l'on a initialisée, il faut faire une affectation, c'est-à-dire préciser la donnée qui va être stockée à l'emplacement mémoire qui a été réservé lors de l'initialisation.

Pour cela on utilise l'opérateur d'affectation « = » :
Nom_de_la_variable = donnée;



Pour stocker le caractère B dans la variable que l'on a appelée Caractere,
il faudra écrire :
 Caractere = 'B';


Ce qui signifie stocker la valeur ASCII de « B » dans la variable nommée «caractere».
Il est bien évident qu'il faut avoir préalablement déclaré la variable en lui affectant
le type char :
 char Caractere;


Initialisation d'une variable

La déclaration d'une variable ne fait que « réserver » un emplacement mémoire où stocker la variable. Tant que l'on ne lui a pas affecté une donnée celle-ci contient ce qui se trouvait précédemment à cet emplacement, que l'on appelle garbage (en français détritus).

On peut donc affecter une valeur initiale à la variable lors de sa déclaration, on parle
alors d'initialisation :
 type Nom_de_la_variable = donnee;


Par exemple :
 float Toto = 125.36;


Portée (visibilité) des variables

Selon l'endroit où on déclare une variable, celle-ci pourra être accessible (visible) de partout dans le code ou bien que dans une portion confinée de celui-ci (à l'intérieur d'une fonction par exemple), on parle de portée (ou visibilité) d'une variable.

Lorsqu'une variable est déclarée dans le code même, c'est-à-dire à l'extérieur de toute fonction ou de tout bloc d'instruction, elle est accessible de partout dans le code (n'importe quelle fonction du programme peut faire appel à cette variable). On parle alors de variable globale.

Lorsque l'on déclare une variable à l'intérieur d'un bloc d'instructions (entre des accolades), sa portée se confine à l'intérieur du bloc dans lequel elle est déclarée.
  • Une variable déclarée au début du code, c'est-à-dire avant tout bloc de donnée, sera globale, on pourra alors l'utiliser à partir de n'importe quel bloc d'instruction.
  • Une variable déclarée à l'intérieur d'un bloc d'instructions (dans une fonction ou une boucle par exemple) aura une portée limitée à ce seul bloc d'instruction, c'est-à-dire qu'elle est inutilisable ailleurs ,on parle alors de variable locale. 

Les différents types de variables, leurs modificateurs, et leurs limites

En C, il existe deux familles de variables concernées par ce chapitre : les entiers, et les réels (souvent appelés "nombres en virgule flottante", communément abrégé en "flottants"). Ces deux familles sont découpées en plusieurs tailles, permettant de stocker des nombres plus ou moins grands.

A: Les entiers

1: Ce que dit la norme

Tout d'abord, précisons que l'écriture suivante :
sizeof(type)
renvoie la taille, en octets, que prend une variable du type précisé ; cela pourra nous servir dans la suite de ce chapitre. Je vous encourage d'ailleurs, lorsque vous avez besoin d'utiliser le nombre d'octets que fait un type de variables, à toujours employer sizeof plutôt que la taille que vous pensez que fait une variable. Ainsi, votre code sera plus facilement portable sur d'autres machines. (d'autant plus que la taille, en octet de chaque type n'est pas fixé par la norme !).
Sachez aussi que sizeof n'est pas réservé aux variables entières seulement.
La taille en octets des types de variables entières n'est pas fixé par la norme ANSI, ni par la norme GNU.
La seule chose qui est précisée, c'est que sizeof(char) doit être inférieure ou égale à sizeof(short), qui doit être inférieure à sizeof(int), qui doit être inférieure ou égale à sizeof(long), qui doit elle-même être inférieure ou égale à sizeof(long long), sachant que int correspond généralement au mot-machine.

2: Ce qu'il en est pour nos calculatrices

Maintenant que nous avons vu ce que dit la norme, voyons ce qu'il en est pour nos calculatrices, et ce que signifie les différents types énoncés ci-dessus.
Écriture complète Écriture concise, généralement utilisée Taille, avec les options par défaut Intervalle de valeurs
signed char char 8 bits, 1 octet de –128 à 127
unsigned char unsigned char 8 bits, 1 octet de 0 à 255
signed short int short 16 bits, 2 octets de -32 768 à 32 767
unsigned short int unsigned short 16 bits, 2 octets de 0 à 65 535
signed int int 16 bits, 2 octets de -32 768 à 32 767
unsigned int unsigned int 16 bits, 2 octets de 0 à 65 535
signed long int long 32 bits, 4 octets de -2 147 483 648 à 2 147 483 647
unsigned long int unsigned long 32 bits, 4 octets de 0 à 4 294 967 296
long long int long long 64 bits, 8 octets de -9223372036854775808 à 9223372036854775807
unsigned long long int unsigned long long 64 bits, 8 octets de 0 à 18446744073709551615

B: Les flottants

Pour ce qui est des nombres flottants, la norme définit ceci : sizeof(float) doit être inférieure ou égale à sizeof(double), qui doit elle même être inférieure ou égale à sizeof(long double).

2-Les constants:

Définition de constantes

Une constante est une variable dont la valeur est inchangeable lors de l'exécution
d'un programme. En langage C, les constantes sont définies grâce à la directive du préprocesseur #define, qui permet de remplacer toutes les occurrences du mot qui le suit par la valeur immédiatement derrière elle. Par exemple la directive :

#define _Pi 3.1415927


Toutefois, avec cette méthode les constantes ne sont pas typées, il faut donc
utiliser la directive #define avec parcimonie...

Il est ainsi préférable d'utiliser le mot clef const, qui permet de déclarer des constantes typées :
const int dix = 10; 
 

08 November 2014

débutez avec langage c

Un premier programme : «Hello, World!»

1-Introduction:

Pour illustrer les contextes et le cycle de développement présentés ci-avant, on prend un premier exemple de programme très connu : afficher «Hello, World!» à l'écran.
La «mise au point» de ce programme simpliste sert aussi à prendre en main les outils de la chaîne de développement.

2-Codes source

Voici le code source du premier programme    hello.c   sous sa forme «usuelle».




2-1-#include <stdio.h> : 

inclusion des prototypes de sous-programmes de la bibliothèque standard d'entrée-sortie (stdio ou standard input output).D'une manière générale, pour que l'on puisse utiliser les fonctions d'une bibliothèque, il faut que les prototypes (ou en-têtes) de ces fonctions soient parcourus par le pré-processeur . Si cette condition est satisfaite, le pré-processeur «connaît» la liste des paramètres possibles d'une fonction et leurs types. Il peut ensuite contrôler que les appels à ces fonctions sont conformes.
Cet exemple de programme utilise la fonction printf qui appartient à la bibliothèque stdio.h

2-2-int main() { :

début du programme principal.
En C, le programme principal peut être assimilé à une «fonction comme les autres» à qui on peut passer des paramètres (entre les parenthèses) .

L'accolade '{':
 est le délimiteur de début des instructions du programme principal.

2-3-printf ("Hello, World!\n"); : 

appel de la fonction printf de la bibliothèque standard d'entrée-sortie.
Une chaîne de caractères est délimitée par des guillemets et les caractères spécifiques sont précédés par '\'. On parle de caractères d'échappement. Dans cet exemple, '\n' correspond au saut de ligne.
Les instructions sont séparées par le caractère ';'.

2-4- return 0; :

    valeur renvoyée au système d'exploitation (via le Shell) en fin de programme.
La valeur 0 correspond à une sortie «sans erreur» du programme.



3-Compilation & exécution sur Windows

pour savez comment compiler un programme c  visitez la page suivante:

http://geeks-electronique.blogspot.com/2014/11/dev-c-try-with-simple-c-program.html

Copie d'écran Dev-Cpp & exécution Hello, World!


Pour que le résultat de l'exécution du programme soit «visible», on a ajouté l'instruction system("pause"); qui demande à l'utilisateur d'appuyer sur une touche. Sans cette instruction, le Shell serait refermé dès la fin de l'exécution du programme et le message ne serait pas visible.



bon courage .

How to install Dev c++

 How to install Dev c++


When the download is complete, click on the "open" button to start the installation process. You will see a few screens that ask you to pick a language (English) and to agree to the license terms. Choose a "typical" installation.
Accept the suggested destination for the installation:
Many subdirectories and files are extracted to the destintion:
Answer "yes" when it asks if you wish to install Dev-cpp for all users.

 Note: if the installation fails, re-install and try "no" for this.
A screen says the installation is complete:

Keep the check mark in the box. Click on "Finish". A first-time configuration screen appears:
Pick "English" and "New Look". In the next several screens, hit "Yes" for its suggestions.
Eventually you are done. Click "OK".


enjoy!!

if any questions about this program please ,We are at your service.

Download Dev c++ (compiler of c)

Dev-C++ 5.0 beta 9.2 (4.9.9.2) (9.0 MB) with Mingw/GCC 3.4.2

it compile c and c++


Download it from official site


FROM HERE :  prdownloads.sourceforge.net/dev-cpp/devcpp-4.9.9.2_setup.exe


Or from     gulfup 


like our page on fb:


https://www.facebook.com/geekselectronicsfhc

DEV-C++ , try with a simple c program

DEV-C++ starts up.

 

Try  with a simple C program.

start the program
Click File/New/Project  . Pick a name for the project (such as "myProject"). Click "C Project". Click on "Empty Project". Click "OK".
In "Create New Project", click "save" (later on you will probably want to create separate subdirectories for your various projects.).
Click "File/New/Source File" and in "Add source file to current project" click "Yes". You now get a screen where you can edit the source file.
Type in a simple C program, as below. Now click "File/Save As" and save the file as "hello.c" (or other name.) Important: be sure that the file extension is .c. With any other extension (such as the suggested .cpp) you will have problems compiling.
Now click "Execute/Compile and Run"
The program will (hopefully) compile, run, and write its output to a DOS window. If you have the system("pause") statement in your program, the output will stay in the window until you hit a key.
At this point, the compiler and development environment has been installed. You should find Dev-C++ listed under "Programs" on the "Start" menu and will now be able to write, compile, and run C programs.

04 November 2014

How to install mikro C 8.2

How to install mikro c 8.2.0

  

1- Install mikroC by executing mikroC_8_2_0_0.exe
2-

2- install programmer for pic
2-install drivers for mikro C 

4- crack program
        4-1 make a backup of the mikroC.exe in the program path
        4-2 copy the microC.exe from the crack directory to the program path and replace the original file
     *first copy mikroC.exe found it at crack folder

     *past in  the the path  c:/program files/Mikroelektronika/mikroC/
       
5-You can now compile programs larger than 2kB (limit of the demo).

6-Try to compile the project found under
Examples\EasyPic5\extra_example\Serial GLCD\p18
 It should create a 14.8 kB hexfile in the same directory.



like our page on fb :  geeks-electronics

03 November 2014

Download MPLAB x IDE

MPLAB x IDE




Download MPLAB x IDE
 from this url :



www.microchip.com/mplabx-ide-windows-installer


proteus 7.8 with crack

download :



http://hulkload.com/rz48jpc38ysc



password for decompressing  is:    1234


How to install proteus 7.8

How to install proteus 7.8 

 Note:        best then 8.0 

1- run    Labcenter Electronics Proteus 7.8 SP2.exe
2- then





3-next

                       



4-use a locally installed licence key


5- choose a  LICENCE.lxk   found it at /patch  folder

6- install it !
7- next




8- next




9-wait.........



10-finish setup

Now crack proteus 7.8

-copy   {Patch V1.1} Proteusl 7.8 SP2 (Build 10468).exe   found it at patch folder
-paste at C:/program files /Labcenter Electronics/Proteus 7 Professional/BIN
-Run This Patch & Press Patch Button.


click yes >>>after you choose Models folder



-choose AVR.dll then  click open 
-Wait For a Few Minutes (Patching Process).

-Enjoy your full program & Thanks For Using Our Patch PerTic@n


please like our page on fb :

https://www.facebook.com/geekselectronicsfhc

01 November 2014

first lesson

بسم الله الرحمن الرحيم 

السلام عليكم و رحمة الله و بركاته اما بعد اخواني و اخواتي اقدم لكم دورة مبسطة عن اقى نظام تشغيل في عالم الحوسبة 

مقدمة:


تاريخ اللينوكس:



في أوائل السبعينيات ابتكر ريتشي و كيرينان (K&R) - باحثان في معامل بل (Bell Labs) بشركة (AT&A) - (لغة السي C ) و في ذات الوقت - أو دونه - تم ابتكار نظام يونيكس (Unix) - و هو نظام تشغيل أصبح فيما بعد مشهورا للغاية - بنفس المكان، أي بمعامل بل أيضا.و قد اشترك به ريتشى أيضا.


ولقد كانت نظم التشغيل دائما ما تكتب بلغة التجميع (Assembly) والمعروف أن لغة التجميع تختلف تماما من معالج (Processor) لآخر. أي أن البرنامج (أو نظام التشغيل) المكتوب بلغة الآلة (Assembly) للمعالج بنتيوم 4 مثلا لن يعمل على معالج باور بي سي (Power PC) ولا غيره. و بالتالي لم تكن أنظمة التشغيل و لا البرامج في ذلك الوقت تتطور بسرعة كما يحدث الآن - و ذلك لأن كل موديل كان له نظامه الخاص!


و لكن حدث شي خطير في ذلك الوقت، تم كتابة أجزاء ضخمة من نظام يونكس بلغة سي.
انتشرت لغة سي بسرعة و أصبحت ذات شعبية كبيرة. حيث تم كتابة مترجمات سي (Compilers) علي العديد من الأجهزة (Architectures). أدى انتشار مترجمات سي إلى سهولة نقل كود المصدر (Source Code) لنظام يونيكس إلى العديد من الأجهزة.


بدأ يونيكس - و بسبب مميزاته المتعددة و تصميمه الداخلي الممتاز في ذلك الوقت - في الانتشار و الشعبية. و مع الوقت و التطوير المستمر أصبحت به مميزات جعلته يكتسح.
في أثناء ذلك حصلت إحدى كبريات الجامعات الأميركية - بيركلي (Berkley) - على نسخة من كود المصدر لنظام يونيكس. عملت على تطويرها و إضافة المزيد من الأدوات فيما عرف باسم توزيعه برامج بيركلي (Berkley Software Distribution) اشتهرت هذه النسخة أيضا - حتى فازت بعطاء وزارة الدفاع الأميركية (DoD)


مارست بيركلي و (AT&T) الاحتكار الشديد وارتفع ثمن يونيكس جدا حتى ضجر ريتشارد ستالمان - من معمل الذكاء الصناعي بمعهد ماسسوشيتس للتكنولوجيا (MIT) - من الأسعار المغالى فيها.


تكونت لدى ستالمان فلسفته الخاصة بان البرمجيات ليست سلعة بل فكرة.. أن البرمجيات مثل الاكتشافات العلمية - يستشهد ستالمان: انظر اسحق نوتن مثلا، قام بوضع قوانين الميكانيكا لكنه لم يحتكرها و لا احد يقول انه يلزم ترخيص من نيوتن لاستخدام قوانينه - لا يجب أن يكون كود المصدر سرا تجاريا.. يجب أن لا تقيد البرمجيات باحتكار أشخاص معينين لاكواد المصدر..يجب أن لا يكون كود المصدر سرا..يجب أن تحرر البرمجيات.. أو بعبارة أخرى تصبح حرة.


و تتويجا لهذه الأفكار شيد ستالمان في أوائل الثمانينات مؤسسة البرمجيات الحرة (fsf.Org) و قام بكتابة عدة أدوات مجانية من بينها مترجم سي الشهير (و الأفضل!) جي سي سي (gcc) وأيضا محرر ايماكس (Emacs) ذو الشعبية الضخمة.


اشترك البعض مع ستالمان و قاموا معا بإنشاء مشروع جنو (gnu.Org) حيث قاموا بكتابة الكثير من الأدوات المجانية، فقط كان حلم ستالمان هو نظام تشغيل بالكامل حر (مجاني و مفتوح المصدر).


في هذه الأثناء - و بينما كانت أفكار ستالمان تبدو غريبة بعض الشيء و ربما مجنونة! - كان أستاذ علوم الحاسب الألماني تينينباوم قام مع تلاميذه بكتابة نواة و نظام تشغيل مينيكس (Minix). كان الهدف أن يطلع التلاميذ على كود مصدر لنظام تشغيل.
لكن المفاجأة الكبرى التي قلبت الأوضاع تماما لم تأت حتى العام 1991. كان لينوس تورفالدس طالبا بالسنة النهائية علوم حاسب بجامعة هيلسنكي بفنلندة. استغل تورفالدس العطلات الأسبوعية لكتابة نواة نظام تشغيل محاكي لنظام يونيكس. أطلق عليه لينوكس (Linux). استخدم تورفالدس ادوات مؤسسة البرمجيات الحرة – فقد كان طالبا و لا يملك الكثير من المال - مما أجبره على جعل لينوكس حرا. طرح لينوس نواته على مجموعة - أخبار (newsgroup) مستخدمي مينيكس. حيث كان تصميم لينوكس أفضل كثيرا.
                                               لينوس تورفالدز

جاءت (*) النواة - لينوكس بتصميم متميز و في وقت متميز للغاية، فتلقفه الجميع و انشأ نظام التشغيل المعروف (خطأ!) باسم لينوكس.


انتشر لينوكس و تطور جدا - و بفضل نشر كود المصدر على الانترنت و مشاركة الآلاف من الهواة و المطورين و الطلبة أيضا عبر الانترنت في عملية اكتشاف الأخطاء و تصحيحها - بسرعة كبيرة حتى أطاح بنظام يونيكس و تربع على عرشه.

 استخدامات النظام:


أحد الخواص المميزة لنظام لينكس هي " أين يمكننا استخدام لينكس " . حيث نجد أن ونيدوز windows و OS X تستخدم غالبا في الحواسيب الشخصية مثل الحاسوب المكتبي و الحاسوب المحمول في حين أن أنظمة تشغيل أخرى، مثل سيمبيان Symbian ، يتم استخدامها في الأجهزة الصغيرة مثل الهواتف النقالة وأجهزة المساعد الرقمي الشخصي، أما أجهزة الحاسوب العملاقة الموجودة في المختبرات الأكاديمية والشركات الكبرى فتستخدم أنظمة تشغيل متخصصة مثل AS/400 وكراي OS.
لينكس من الناحية الأخرى ، بدأ كنظام تشغيل خادم ثم أثبت جودته كنظام تشغيل مكتبي ، و اليوم يمكن استخدام لينكس في الكثير من الأجهزة التي تتراوح من الساعات وحتى الحواسيب العملاقة.


يعد لينكس ناجحا في العديد من الأجهزة الإلكترونية ومع ذلك فإنه لا يزال هناك الكثير من النواحي التقنية التي يسعى لينكس لدخولها ، بل وحتى كنظام تشغيل للأجهزة المكتبية والخوادم مازال لينكس يتطور بشكل أسرع من أي نظام تشغيل آخر اليوم.
تم تثبيت لينكس على أنظمة BIOS في الحواسيب النقالة مما سيمكن المستخدمين من تشغيل أجهزتهم في ظرف ثواني ، هذا سينشىء بدوره بيئة لينكس تمتلك أدوات تسمح للمستخدمين بالاتصال بالأنترنت مباشرة بدون الحاجة إلى إقحام نظام التشغيل الأساسي لديهم حتى وإن كان نظام التشغيل ذاك هو windows . من هذه الأدوات : المتصفح و البريد الإلكتروني .
في نفس الوقت ، دخل لينكس مجال الأجهزة النقالة المتصلة بالأنترنت بتنوع أشكالها كالهواتف الذكية و المساعدات الشخصية و الأجهزة المدمجة بالإضافة إلى أجهزة النوت بوك – حواسيب نقالة صغيرة تمتلك ذات الوظائف الأساسية لنظيراتها من الحواسيب النقالة الكبيرة ولكن بحجم أصغر و فعالية أكبر.
حاليا يقوم لينكس بتشغيل الكثير من الخوادم على شبكة الأنترنت ، و مع النمو المتزايد لمفهوم الحوسبة السحابية فإن لينكس دخل هذا المجال أيضا موفرا العديد من الخدمات السحابية مثل : خدمة A3 الخاصة بأمازون والتي تعمل بقدرات عالية لإيصال المعلومات والتطبيقات إلى المستخدمين.
و فيما يتعلق أيضا بدخول لينكس إلى عالم الحوسبة السحابية ، لابد من ذكر النجاح الشهير الذي حققه لينكس في أجهزة الحاسوب العملاقة سواء في مجال : الحوسبة العالية الأداء (HPC) أو التوفر العالي (HA) . حيث أن هذه الأجهزة تستخدم من قبل الباحثين الأكاديميين في الفيزياء والهندسة الحيوية، أو الشركات العاملة في الصناعات المالية والطاقة ، بالتالي هم بحاجة إلى حوسبة موثوقة وقابلة للتطوير والتوسيع حتى تحقق أهدافها.
كما تعتمد العديد من خدمات ويب 2.0 ذات الشعبية العالية مثل : تويتر ، لينكد إن ، يوتيوب ، قوقل على لينكس كنظام تشغيل لها. عندما تستجد خدمات أخرى على الإنترنت في المستقبل فإن لينكس سيكون بشكل متزايد نظام التشغيل الذي تقوم عليه هذه التقنيات الجديدة.


خصائص النظام:


1-المجتمعات:

مجتمعات لينكس تأتي في شكلين ، تجمع للمطورين و تجمع للمستخدمين.
أحد أهم خصائص لينكس المرغّبة هو أنه متاح للمطورين، أي شخص بحوزته المهارات المناسبة يمكنه تطوير و تحسين لينكس و التأثير على طريقة تطويره ، المنتجات المملوكة لا يمكنها توفير مثل هذه الميزة، لأنها ضمن خصائص المنتجات الحرة.
مجتمعات المطورين يمكنها أن تتبرع بإدارة و دعم توزيعات كاملة ، مثل توزيعات ديبيان أو مشاريع جينتو.
كذلك تدعم الشركات من مثل نوفيل و ريدهات توزيعات ذات توجه مجتمعي من مثل أوبن سوز و فيدورا على التوالي. التطويرات التي تتم في هذه النسخ تضاف للنسخ التجارية التي تنتجها هذه الشركات.
نواة لينكس بنفسها هي مدعومة بمجتمعها من المطورين و هذه المجتمع هو أحد أكبر و أنشط تجمع في عالم البرمجيات الحرة منذ يوم بدئها، الدورة التطويرية الاعتيادية والتي تستمر لثلاثة أشهر تضم بالعادة أكثر من ألف مطور يعملون لأكثر من ١٠٠ شركة مختلفة أو لا يعملون لصالح أي شركة على الإطلاق.
مع نمو لينكس ، كثُر عدد المطورين و الشركات التي تأمل بالمشاركة في تطوير لينكس. من مثل :موزعي العتاد الذين يريدون التأكد من أن لينكس يدعم تطبيقاته بشكل جيد ، لجعل هذه التطبيقات مرغوبة من مستخدمين لينكس، و موزعي الأنظمة المضمنة الذين يستخدمون لينكس كأحد مكونات في منتجاتهم يريدون للنيكس أن يكون متوافقا و قادر على تأدية مهامه بأفضل شكل ممكن،وموزعي التوزيعات و البرمجيات الذين بنوا منجاتهم على نواة لينكس لديهم اهتمام واضح بتطوير لينكس و بقوته وبأدائه.
وهناك مجتمعات أخرى للمطورين مهتمين بتطبيقات و بيئات مختلقة تعمل على لينكس، مثل فايرفوكس ، اوبن-اوفس، جينوم و كي دي اي.
أيضا المستخدمين أنفسهم يستطيعون تقديم مساهمات قيمة لتطوير لينكس ، مع وجود التجمعات على شبكة الويب مثل موقع Linux.com، و موقع LinuxQuestions، و أيضا العديد من التجمعات المستضافة عبر التوزيعات و التطبيقات، وقاعدة مستخدمي لينكس هي بالعادة إيجابية و توجه نظام التشغيل لينكس.
مجتمعات لينكس لا توجد إلكترونيا فحسب، فهناك مجموعات محلية تُعرف باسم مجموعات مستخدمين لينكس ، حيث يجتمع أعضاء المجموعة و يناقشون مواضيع تتعلق بنظام التشغيل لينكس ، ويقدمون للمستخدمين المحليين توزيعات مجانية مع ورش عمل لكيفية استخدامها ، كما يُدربون و يقدمون الدعم و كل ما يتعلق بتثبيت النظام.

2-التطوير

لينكس هو نظام تشغيل مكون من عدة لغات برمجة، نسبة كبيرة من لينكس طُورت بلغة سي ( بنسبة ٥٢.٨٦٪) أو سي++ بنسبة(٢٥.٦٥٪) ، باقي اللغات البرمجية تظهر بنسبة أحادية، حيث تتصدر لغات مثل جافا و بيرل و ليسب على باقي لغات البرمجة.
نواة لينكس بنفسها تتكون غالبيتها من لغة سي ، بنسبة اكبر من ٩٥٪ تقريبا، لكن لغات برمجية أخرى تظهر في تركيب النواة أيضا، لتجعلها غير متجانسة أكثر من باقي أنظمة التشغيل.
مجتمع النواة طور طرق مختلفة للتعامل مما أتاح توفير بيئة ثابتة و تطوير منتجات عالية الجودة في بيئات تحتوى على الالاف من النصوص البرمجية تتغير بشكل يومي ، هذا يعني أن عملية تطوير نواة لينكس تختلف بشكل كبير من طرق التطوير في البرامج المملوكة.
عملية تطوير نواة لينكس ربما تظهر بشكل مخالف و مُهددة للمطورين الجدد، لكن هنالك أسباب جيدة و تجارب صامدة خلف هذه العمليات، المطور الذي لا يفهم طرق مجتمع النواة أو أسوأ ، من يحاول الاستهزاء أو التحايل عليهم، سيمر بتجربة مريعة. مجتمع التطوير ، رغم أنهم يساعدون أولئك الذي يطلبون المساعدة، لن يضيعوا وقتهم من أجل أولئك الذي لا يسمعون أو لا يهتمون بطرق التطوير.
رغم أن عدد كبير من مطوري لينكس ما زالوا يستخدمون محررات النصوص مثل ايماكس أو فيم لتطوير نصوصهم البرمجية، بيئات تطويرية مثل ايكليبس، نتبينز وآنجوتا توفر بيئات تطوير مدمجة و قوية تناسب بيئة لينكس.


3-نظام التشغيل :

يحتاج المطورون إلى أدوات خاصة (مثل سطور الأوامر و المُجمّع الموجودة في جنو) لكتابة التطبيقات التي يمكنها التخاطب مع النواة. كما أنهم يحتاجون أيضا إلى أدوات تسمح للتطبيقات الخارجية بالوصول إلى النواة بعد كتابتها وتثبيتها على الجهاز.
عند وضع هذه الأدوات جنبا إلى جنب مع النواة نحصل على نظام التشغيل . وبشكل عام يعرف نظام التشغيل على أنه أدنى طبقة من برمجيات الحاسب التي يمكن للمستخدم العادي الوصول إليها ، يستطيع المستخدم العادي الوصول إلى نظام التشغيل باستخدام أسطر الأوامر . command line.
يوفر لينكس أدوات قوية للمطورين يستطيعون من خلالها كتابة تطبيقاتهم الخاصة ، منها : البيئات التطويرية ، المحرر ، المُجمّعات التي تم تصمميها حتى تأخذ الأوامر البرمجية الخاصة بالمطور وتحولها إلى صورة تستطيع النواة فهمها وتنفيذها .

مثل النواة، فإن نظام تشغيل لينكس مقسم بدوره إلى وحدات . يمكن للمطورين انتقاء واختيار الأدوات التي يحتاجونها وإزالة تلك التي لا يحتاجون إليها، يهدف ذلك إلى تزويد المستخدمين والمطورين بنكهة جديدة من لينكس صممت خصيصا لتلبية احتياجاتهم المحددة.

4-البيئات :

إن النوافذ والقوائم و مربعات الحوار التي يظن الكثير من الناس أنها جزء من نظام التشغيل هي في الواقع عبارة عن طبقة مستقلة تعرف بـ " نظام النوافذ و بيئة سطح المكتب " .
توفر هذه الطبقة واجهات رسومية سهلة الفهم للمستخدمين ، حتى تمكنهم من العمل و التواصل مع التطبيقات الموجودة في نظام التشغيل أو تثبيت التطبيقات الخارجية على نظام التشغيل.
في لينكس، هناك الكثير من الخيارات التي يمكن استخدامها لنظام النوافذ وبيئة سطح المكتب ، وهو الأمر الذي يسمح للمستخدمين باتخاذ القرار بأنفسهم . لا يمكن القيام بذلك في نظام التشغيل Windows ومن الصعب القيام به في OS X.
كما أنه يوجد أدوات ومكتبات برمجية لنظام التشغيل والنواة، فإن هناك أدوات ومكتبات البرمجية متاحة تسمح لمطوري التطبيقات بالعمل بسهولة أكبر مع هذه البيئات (على سبيل المثال : gtk+ for GNOME, Qt for KDE ).

5-التطبيقات :

لأنظمة التشغيل نوعين من التطبيقات : تلك التي تمثل المكونات الأساسية لنظام التشغيل نفسه، وتلك التي يقوم المستخدم بتثبيتها في وقت لاحق. أنظمة التشغيل المغلقة، مثل ويندوز و OS X، لن تسمح للمستخدمين (أو المطورين) بانتقاء واختيار التطبيقات التي تشكل عنصرا أساسيا لنظام التشغيل بأنفسهم. فعلى سبيل المثال يتحتم على مطوري ويندوز استخدام مترجم مايكروسوفت، ونظام النوافذ، وهلم جرا.
أما بالنسبة لمطوري التطبيقات على لينكس فإن لديهم مجموعة أكبر من الخيارات لتطوير تطبيقاتهم. هذا يسمح بمزيد من المرونة لبناء التطبيق، لكنه يعني أن على المطور أن يقرر أي مكونات لينكس سيستخدم.

6-التوزيعات:

وهذه هي أعلى طبقة من نظام التشغيل لينكس: الحاوية لجميع الطبقات المذكورة آنفا. يقرر صانع التوزيعات أي نواة ، أي أدوات نظام التشغيل ، أي البيئات ، أي التطبيقات ، سيتم جمعها في حزمة و شحنها إلى المستخدم .
تتم المحافظة على التوزيعات من قبل الأفراد والكيانات التجارية. يمكن تثبيت التوزيع باستخدام القرص المضغوط الذي يحتوي على برنامج خاص لتثبيت النظام الأولي.
إن أكثر التوزيعات شعبية بين المستخدمين هي تلك التي توفر إدارة ناضجة للتطبيقات تسمح للمستخدمين بالبحث وتثبيت التطبيقات الجديدة و إجراء كافة العمليات ببضع ضغطات على الفأرة.
يوجد على الأقل ما يفوق 350 توزيعة مختلفة للينكس .

7-الترخيص :

تدخل الشفرة المكونة لنواة لينكس تحت عدد من الترخيصات ، ولكن جميع الشفرات يجب أن يكون لها ترخيص متوافق مع النسخة الثانية من رخصة جينو العمومية (GPLv2), ، وهي الرخصة التي تغطي توزيع النواة بشكل عام .
في الواقع ، هذا يعني أن جميع شفرات لينكس تم تغطيتها أما بترخيص (GPLv2), مع خيار يسمح بالتوزيع تحت نسخة أحدث من رخصة جينو العمومية GPL أو تحت ترخيص البنود الثلاث ( BSD ) . لا يتم قبول أي مساهمه أو شفرة لنواة لينكس ما لم تغطيها أحد هذه الترخيصات .
حقوق الملكية غير مطلوبة لأي شفرة تدخل في تكوين نواة لينكس ، كل الشفرات التي اندمجت لتشكل نظام لينكس تعود لمالكيها الأصليين وبالتالي تعود ملكية النواة الآن إلى آلاف الأشخاص .
أحد الآثار المترتبة على هيكل الملكية هذا هو أن أي محاولة لتغيير ترخيص النواة محكوم عليها بالفشل المؤكد تقريبا. هنالك القليل من السيناريوهات العملية التي يمكن فيها الحصول على موافقة من جميع أصحاب حقوق الملكية الفكرية المساهمين في النواة (أو يتم إزالة شفراتهم من النواة). لذلك، لا يوجد أي احتمال بالتحول إلى الإصدار 3 من GPL في المستقبل القريب.


 تنزيل الينوكس:

طريقة تنزيل اي توزيعة لينوكس :
1-الذهاب الى الموقع الرسمي للتوزيعة .
2-اختيار download 
3-اختيار معمارية المناسبة لجهازك 32bits 64bits
4-التحميل ثم الاستمتاع باللينوكسبعد تثبيته.

هنا ساريكم بالفيديو طريقة تحميل بعض التوزيعات الجميلة:

ubuntu :  افضل نظام لمبتدئي اللينوكس

الفيديو هنا :

http://www.youtube.com/watch?v=a2dChEXIlGM&feature=youtu.be

netrunner :  التوزيعة الاجمل (made in germany)

الفيديو هنا:


elementary OS

الفيديو هنا :


 مراجع الينوكس :

للمزيد من المعلومات                     http://www.linux.com/
لمعرفة الاصدارات الجديدة               http://distrowatch.com/
لتنزيل جديد التطبيقات                   http://www.linuxsoftware.org/
                                                  https://apps.ubuntu.com/cat/
لتعلم سطر الاوامر                         http://linuxcommand.org/
للبحث اكثر حول تطوير لينوكس       http://www.linuxfoundation.org/

الدرس القادم سيكون انشاء الله عن طريقة تثبيت نظام الينوكس الى جانب الويندوز وشكرا على متبعاتكم لنا و في الاخير تواصل معنا عبر صفحتنا على الفايسبوك



A quoi dois-je faire attention lors de la mise en oeuvre d'un amplificateur opérationnel?

Par ordre du plus important au moins important:
  1. La tension d'alimentation maximale
    La tension d'alimentation ne doit pas excéder la valeur maximale renseignée dans la datasheet (supply voltage dans Absolute Maximum Ratings)
    Exemple, pour le LM741:


    Donc la différence entre l'alimentation positive (V+) et l'alimentation négative (V-) ne doit pas excéder 44V.
  2. La tension d'alimentation minimale de fonctionnement
    Celle-ci n'est pas toujours renseignée dans la datasheet, il faut parfois la déduire d'autres paramètres, comme les tensions de mode commun.
  3. Le mode commun des entrées (inputs common-mode voltage, ou bien inputs voltage range)
    Les tensions de l'entrée inverseuse (-) et non-inverseuse (+) doivent impérativement rester dans une fenêtre comprise quelque part entre le négatif et le positif de l'alimentation. Le « quelque part » est toujours défini dans la datasheet
    Exemple, pour le LM741:


    Cela veut dire que pour une tension d'alimentation de -15V/+15V, la fenêtre commence à 3V au dessus de -15V, soit -12V et se termine à 3V en dessous de +15V, soit 12V. Donc si on alimente le LM741 avec du -5V/+5V, la fenêtre permise pour les tensions des entrées vaudra -2V/2V.
    Exemple pour le LMC6482:

    Ici la fenêtre permise comprend le négatif et le positif de la tension d'alimentation, ce qui est remarquable. Dans ce cas on dit que l'ampli-op est "rail-to-rail" pour les entrées.

  4. Le mode commun de la sortie (output common-mode voltage ou bien output voltage swing)
    La tension de sortie varie entre le négatif et le positif de l'alimentation. En général, elle n'arrive pas à atteindre ces extrêmes.
    Exemple pour le LM741:

    On le voit, les tensions minimales et maximales atteintes dépendent de la charge (RL). Plus l'ampli-op devra fournir ou tirer du courant, plus la fenêtre sera petite.
    Un ampli-op dont la sortie peut varier jusqu'aux tensions d'alimentation est dit "rail-to-rail" pour la sortie. Mais même dans ce cas, lorsque la sortie fournit ou tire un courant, la fenêtre des valeurs diminue.
    Exemple pour le LMC6482:
    a) Output voltage swing


    b) Variation de la tension max (min) de sortie en fonction du courant fourni (tiré)

  5. Le courant de sortie maximal à ne pas dépasser
    Renseigné dans la rubrique Absolute Maximum Ratings.
  6. La consommation en courant
    Voir aussi dans Absolute Maximum Ratings.
  7. La dissipation maximale
    Voir aussi dans Absolute Maximum Ratings.

Comment dimensionner un régulateur à diode zener ?

Un régulateur à diode zener est simplement constitué d'une résistance en série avec une diode zener (voir schéma). Le dimensionnement consiste à déterminer la bonne valeur de la résistance R et la bonne valeur de la puissance Pz dissipée par la zener. La tension zener (Uz) est directement déterminée par la tension que la charge nécessite (5V, 3V3, 12V,...).
Soit Imin et Imax les courants minimum et maximum de la charge. Le courant maximum détermine R et le courant minimum détermine Pz. Le calcul s'effectue comme suit: pour pouvoir maintenir la tension zener Uz, la diode zener a besoin d'un courant minimal, notons-le Izmin (ce courant est renseigné dans la fiche technique de la diode). Lorsque le courant de charge est maximal, la résistance doit être suffisamment petite que pour pouvoir fournir le courant à la diode zener et à la charge, on a donc R = (Uin-Uz)/(Izmin + Imax). Voilà pour R. Lorsque le courant de charge est minimal, tout le courant est dérivé dans la diode zener, on a Iz = (Uin-Uz)/(R - Imin). Pz est simplement calculé comme suit: Pz = Uz.I et Pz sera la puissance maximale que la diode zener dissipera.