книги за програмиране на езика С /си/ <> http://karadev.net/uroci/

пълен списък на книгите за С, процесори и други инфо <> http://karadev.net/uroci/filespdf/

 
 

https://www.programiram.com/home

     
 

уроци, задачи, информация и много други :)
линк >> натисни тук <<<

     
 

1001 задачи в програмирането
линк >> натисни тук <<<

     
 

НАУЧИ МЕ много добър сайт
линк >> натисни тук <<<

     
 

много добра книга с примери за програмирането на езика С от автора Стенли Липман.

Може да си я разпечатате като учебник.

Има примери към всяка функция, цикъл и задача.

линк към фйла >>>
www.karadev.net/uroci/pdf_basic/CPP-Primer-BG.pdf

     
          

Процесори, микропроцесори,
микроконтролери и микрокомпютри
Когато започнете да се занимавате с програмиране на
микроконтролери, ще се сблъскате с термини като процесор,
микропроцесор, микрокомпютър и разбира се
микроконтролер. Често тези термини се използват като
еквивалентни. Въпреки това те обозначават различни неща.
В тази глава ще направя кратък преглед какво означава
всеки един от тези термини.
1) Процесор (CPU - Central Processor Unit)
Процесорът е „мозъка” на една компютърна система. Това е
главният компонент, който управлява работата на системата.
Процесорът сам по себе си не съществува физически
самостоятелно като електронен компонент. Също така
процесорът не е завършена компютърна система, а само част
от нея.

     
 

С е мощен процедурно-ориентиран език, създаден през 1972 година от
Денис Ричи. Създаването на С предизвиква революция в програмирането,
което го прави най-предпочитания език за програмиране
следващите две - три десетилетия.
С развитието на технологиите възникват и по-сложни за
решаване проблеми. Това води до нуждата от нови езици, които да се
справят с това. Така се появяват обектно-oриентираните езици С++, Java и
C#. Всички те "стъпват" на синтаксиса на С. Въпреки че тези езици
ограничават сферата на използване на С, той си остава популярен език за
програмиране и в днешно време. Развитието на микроелектрониката
доведе до създаване на "интелигентни" интегрални схеми, наречени
микроконтролери. Микроконтролерът е малък компютър, събран в един
корпус и с ограничени ресурси в сравнение с един персонален компютър.

     
 

Развитието на микроелектрониката доведе до създаване на
"интелигентни" интегрални схеми, наречени
микроконтролери. Микроконтролерът е малък компютър,
събран в един корпус и с ограничени ресурси в сравнение с
един персонален компютър.
Микроконтролерите се използват във всички сфери на
живота. Почти всички съвременни електронни устройства
използват микроконтролери, от малки домакински уреди до
печки, хладилници и т.н. Всички съвременни автомобили
съдържат редица електронни модули с микроконтролери.

     
 

1.1 Общи сведения
Минималният лексикален елемент, до който една С програма се разбива по
време на компилиране се нарича лексема (token). Лексемите от които се
състои една С програма са:
Лексема:
Ключова дума
Идентификатор
Константа
Операция
Пунктуатор
Предпроцесорна лексема:
Име на хедър-файл
Идентификатор
Предпроцесорно число
Символна константа
Низовa константа
Операция
Пунктуатор

     

Теми по

Софтуерни Технологии

на специалност

Компютърни Науки

  Програмата е последователност от инструкции, които, когато бъдат декодирани от компютър
(или от компютър и транслираща програма), водят до решаването от страна на компютъра на зададена задача.
Програмният(софтуерният) продукт е програма или съвкупност от взаимодействащи
програми, записани върху технически носител и придружени от съответна документация.
Софтуерът - това са компютърни програми, процедури, правила и евентуално придружаваща
документация, както и данни, отнасящи се до функционирането на компютърната система
(днес общо понятие за програми и/или програмни продукти).
Характеристики на софтуера:
- необходими ресурси – време/хора; софтуерните продукти, в сравнение с много други, се
отличават невероятно много по отношение на влаганите в тях ресурси, от където следва и
цената им.
- абстрактност на софтуера - софтуерният продукт не може да бъде почувстван с нито едно от
петте човешки сетива. С компютъра това не е така - той може най - малкото да бъде видян или
пипнат. Софтуерът е на много високо ниво на абстрактност.
- уникалност на софтуерното производство - основните усилия при производството на
програмен продукт са преди появата на първото работещо копие, при колите за всяка кола се
влага много труд; - ако има грешка в даден програмен продукт, то тя се отнася до всички
негови копия, при колите е малко вероятно; - когато програмният продукт излезе от употреба,
все повече това става относително едновременно и поради една и съща причина - обикновено
идва нова версия, с някоя и друга възможност повече и най-вече - съобразена с променения
хардуер, при колите причините за „умирането" на даден екземпляр са
индивидуални(катастрофа, повреди, възможности на собственика...).

 
     
 

The Input and Output ports on a PICmicro®MCU are made up from two
registers – PORT and PORT DIRECTION – and are designated PORTA,B,C,D,E and
TRISA,B,C,D,E. Their availability depends upon the PIC being used in the design.
An 8pin PIC has a single GPIO register and TRIS register – 6 I/O lines. The 16C74
has PORTS A,B,C,D and E – 33 I/O lines. A block diagram of PORTA is shown
below. Ports B,C,D and E are similar but the data sheet needs to be consulted
for PIC specifics.
PORTA
05h
OUTPUTS
INPUTS
TRISA
85h
ADCON1
(16C7X ONLY)
DATA BUS
TO A/D
DATA BUS
Port A has 5 or 6 lines – depending on the PIC – which can be configured as
either inputs or outputs. Configuration of the port direction is via the TRISA
register. Inputs are set with a 1 and outputs are set with a 0. The pins have both
source and sink capability of typically 25mA per pin.
The exception to the I/O lines is the A4 pin which has an open collector output.
As a result, the voltage levels on the pin – if tied high with a resistor – is inverted
to the bit in the PORTA register (i.e. a logic 1 in porta,4 turns on the transistor
and hence pulls the pin low).
An example in assembler could be
CLRF PORTA ;set outputs low
PAGE1 ;select register page1
MOVLW B’00000011’ ;A0,1 as inputs, A2-4 as outputs
MOVWF PORTA ;send W to port control register
PAGE0 ;change back to register page 0


питагорова теорема - https://bg.wikipedia.org/wiki/%D0%9F%D0%
условие - да се състави програма за числата от 1 до 100, която пресмята и отпечатва стойностите на решението на питагоровата теорема. уравнението е със условие X на квадрат плюс/+/ Y на квадрат е равно/=/ Z на квадрат. ясно е че не всички числа произволно избрани ще съставят питагоровата теорем. за това трябва да отделим тези които отговарят на пресмятането в уравнението. като за начало сами можем да намерим първите стойности които са верни за това уравнение. това са така наречените числа на питагор, 3, 4, и 5 за които е вярно че 3*3+4*4=5*5. или 9+16=25. това са най малките стойности които решават уравненито. за това са наречени числа на питагор, защото след много пресмятане на различни стойности първите дали резултат числа са именнно 3,4 и 5. както ставя ясно действието - повдигане на квадрат сме изобразили като умножение на стойност сама със себе си, за да се получи функцията повдигане на квадрат на дадена стойност.
------------------------------------
//da se sastavi programa za namirane na niakolko
//celi chisla x , y , z , koito sa reshenie na
// uravnenieto x*x+y*y=z*z
// X kvadrat + Y kvadrat = Z kvadrat
// pitagorovata teorema za chislata ot 1 do 100
// moje da badat vavedeni i po golemi stojnosti
// kato dolnata granica e stoinost 0
// gornata granica e primerno do 65000
// za po golemi stoinosti ima malko promiana
// v registarciyata na promenlivite

#include <stdio.h> // vklyuchvane na standartna
                             // vhodno-izhodna biblioteka
                          // za pokazvane na rezultatite
                              // na ekrana na kompuytara

int main(void)        // inicializacia na glavnata funkcia
                             // za vsiaka edna programa na C/C++
                    
{
int x = 0;
            // inicializacia na promenliva ot tip celochislena
int y = 0;            // inicializacia na promenliva ot tip celochislena
int z = 0;            // inicializacia na promenliva ot tip celochislena

int xkvadrat = 0;    // inicializacia na promenliva ot tip celochislena
int ykvadrat = 0;    // inicializacia na promenliva ot tip celochislena
int zkvadrat = 0;    // inicializacia na promenliva ot tip celochislena

int sumakvadrat = 0;    // inicializacia na promenliva ot tip celochislena
int counter     = 0;    // inicializacia na promenliva ot tip celochislena
// int reshenie    = 0;    // inicializacia na promenliva ot tip celochislena
// v momenta e komentar

for(x=1;x<=100;x=x+1) //nachalo na parvi cikal za presmiatane na formulata
{
    xkvadrat = x*x;        // prisvoiavane na stoinost ot tekushtata stonost na
                                  //na promenlivata v cikala
    
    for(y=1;y<=100;y=y+1)    //nachalo na vtori /vlojen/ cikal za presmiatane na formulata
{
    ykvadrat = y*y;            // prisvoiavane na stoinost ot tekushtata stoinost
                                     //na promenlivata vav vtoria cikal

    for(z=1;z<=100;z=z+1)    //nachalo na treti /vlojen vav vtoria /
                                        //cikal za presmiatane na formulata
{
    zkvadrat = z*z;            // prisvoiavane na stoinost ot tekushtata stoinost
                                       //na promenlivata vav tretia cikal /vlojen vav vtoria/
    
    sumakvadrat = xkvadrat + ykvadrat; // sumirane na rezultatite ot presmiataneto
                                                            // na dvete promenlivi
    
    if(sumakvadrat == zkvadrat)            // proverka za ravenstvo po stoinost na dvete
                                                            // promenlivi
        {counter = counter +1;               // ako dvete stoinosti sa ravni = promenlivata        
                                                          // broiach se uvelichava s 1 , koeto oznachava che
                                                           // za tezi stoinosti na tekushtite promenlivi ot trite
                                                           // cikala ima reshenie na uravnenieto
    printf("counter =%d ",counter);        // otpechatvane na tekushtia nomer na reshenieto
    printf("x = %d ",x);                        // otpechatvane na tekushtata stoinost za parvata promenliva
    printf("y = %d ",y);                          // otpechatvane na tekushtata stoinost za vtorata promenliva
    printf("z = %d ",z);                       // otpechatvane na tekushtata stoinost za tretata promenliva
        printf("\n\n");                          // otpechatvane na dva prazni reda za razdelenie na rezultatite
    
        }                                         // zatvariashti skobi na ciklite i proverkite
    
}
    
}
    
}
    printf("press ENTER key for end"); //otpechatvane na napdis za o4akvane za natiskane na klavish
    getchar();                                       // za krai na programata
}    // zatvariashta skoba na glavnata funkcia
    // krai na sors koda

някои от резултатите на програмата, началните стойности може да видите ако напишете и компилирате сорс кода в компилатора.
тъй като стойността започва от 1 на всички променливи, първите числа които трябва да излязат са : за X=3, Y=4, Z=5. това са известните числа на питагор, който вцъщност са основата на теоремата. останалите стойности до края на трите вложени цикъла ще получите когато направите програмата със сорс кода който съм написал.




показния резултат може да пресметнете някои от посочените числа за да видите дали програмата е работила вярно до края. ако забелешите че някои резултати се повтарят, това е така защото във вложените цикли са превъртяни всички комбинации на променливите, като не е сложена проверка дали има повторение на резлутата със друга комбинация. в някои случаи проверка за повторение се налага, в други не, за това в този пример не съм сложил такава проверка за повторение на резултата.