CATEGORII DOCUMENTE |
Agricultura | Asigurari | Comert | Confectii | Contabilitate | Contracte | Economie |
Transporturi | Turism | Zootehnie |
Structuri de date
CALCUL AMORTIZARE SI RATE DE AMORTIZARE ALE UNUI MIJLOC FIX
1.Introducere
Amortizarea reprezinta reflectarea monetara a partii din costul imobolizarilor transferata asupra rezultatelor procesului productiv (produselor obtinute). Aceasta este semnificatia economica a amortizarii.
Din punct de vedere econimic, amortizarea reprezinta includerea unei cote din costul imobilizarilor in cheltuielile perioadei in care s-a folosit activul imobolizat. Dupa cum am precizat, viata unei imobilzari este mai mare de un an, deci se intinde pe parcursul mai multor exercitii financiare. Este important atunci de determinat cat din valoarea activelor imobilizate se va regasi in cheltuielile fiecarui exercitiu financiar care intra in durata de viata utila a imobilizarii corporale sau necorporale.
Semnificatia contabila a amortizarii este legata de corectarea (reducerea) valorii imobilizarilor ca urmare a utilizarii lor, a actiunii unor factori externi (naturali si de progres tehnic) sau a unor prevederi legale(in cazul unor imobilizari necorporale).
Trebuie precizat ca nu toate imobilzarile sunt supuse amortizarii. Imobilizarile financiare nu se amortizeaza, deprecierea lor fiind reflectata prin provizioane (reduceri) pentru depreciere.
Din categoria imobilizarilor corporale sunt excluse din sfera amortizarii bunurile a caror folosinta nu este limitata in timp (terenuri, lacuri, paduri, etc).
Un element indispensabil determinarii amortizarii este durata de functionare, durata de viata a mijlocului fix.
Durata de viata utila este perioada pe parcursul careia se estimeaza ca intreprinderea va utiliza activul supus amortizarii. Baza de calcul a amortizarii o constituie costul mijlocului fix sau, daca acesta a fost reevaluat, valoarea rezultata dupa ultima reevaluare.
Estimarea duratei de viata utila a unui mijloc fix se face luand in considerare uzura fizica estimata, uzura morala si prevederile legale.
Metode de calcul a amortizarii mijloacelor fixe
Amortizarea mijloacelor fixe se face utilizind unul din urmatoarele regimuri de amortizare:
amortizarea liniara
amortizarea degresiva
amortizarea accelerata
Amortizarea liniara
Prin aceasta metoda valoarea de intrare a mijloacelor fixe este repartizata uniform pe toata durata de utilizare a acestora.
Presupunem existenta unui mijloc fix cu valoare de intrare 2.000 lei si durata de utilizare 5 ani:
100 100
1. Rata anuala a amortizarii =-------- ----- ------ = -------- = 20 %
durata normata de utilizare 5
2. Anuitatea amortizarii = Rata amortizarii x Valoarea de intrare = 20 % x 2.000 = 400 lei
valoarea de intrare 2000
3. Amortizarea anuala = -------- ----- ------ -------- =
------------ = 400 lei
durata normata de utilizare 5
4. Rata lunara de amortizare = 20 / 12 = 1.666 %
Amortizarea lunara: 2.000 x 1.666% = 33.32 lei sau 400 / 12 = 33.32
Amortizarea degresiva Consta in multiplicarea cotelor de amortizare liniara cu unul din coeficientii urmatori:
1. 1,5 pentru mijloace fixe cu durata normala de utilizare intre 2 si 5 ani
2. 2,0 pentru mijloace fixe cu durata normala de utilizare intre 5 si 10 ani
3. 2,5 pentru mijloace fixe cu durata normala de utilizare mai marede 10 ani
In cadrul acestei metode de amortizare exista doua posibilitati de tratare a problemei:
tinand cont de uzura morala - AD2
fara influenta uzurii morale - AD1
Amortizarea degresiva cu influenta uzurii morale - AD2
Se iau urmatoarele date:
Amortizarea degresiva fara influenta uzurii morale - AD1
Consideram mijlocul fix din exemplul de amortizare liniara. In aceasta situatie, cota de amortizare in regim degresiv = 20 x 1,5 = 30% (20 rata anuala a amortizarii in regim liniar). In momentul in care nivelul amortizarii obtinute prin inmultirea cotei de amortizare degresiva cu valoarea ramasa este mai mic sau egal cu amortizarea anuala determinata prin raportul dintre valoarea ramasa si numarul de ani de functionare ramasi, se ia in calcul aceeasi suma, egala pe anii de functionare ramasi.
Perioada |
Calculul amortizarii anuale |
Valoarea amortizarii degresive |
Valoare ramasa |
anul I |
2000 x 30 % | ||
anul II |
1400 x 30 % | ||
anul III |
980 x 30 % | ||
anul IV | |||
anul V | |||
Tabelul 5.1
Amortizarea degresiva cu influenta uzurii morale - AD2
Perioada |
Valoare de amortizat |
Cota medie anuala de amortizare degresiva |
Amortizare anuala degresiva |
Valoare ramasa |
anul I | ||||
anul II | ||||
anul III | ||||
anul IV | ||||
anul V |
Nu se mai calculeaza amortizare - se vor completa spatiile din tabela cu valoarea 0 |
|||
anul VI |
||||
anul VII |
Tabelul 5.2
Amortizarea accelerata
Consta in amortizarea in primul an de exploatare a pina la 50 % din valoarea de intrare a mijlocului fix. Pentru exercitiile urmatoare valoarea ramasa este trecuta pe cheltuieli in regimul de amortizare liniar. A se face distinctie intre anul de exploatare si anul calendaristic.
Obiectivul proiectului este alegerea structurii eficiente destinate rezolvarii
problemei de calcul, determinare in valoare absoluta a amortizarii, pe transe,
a valorii unui mijloc fix intrat in patrimoniul unitati economice.
Pentru rezolvarea problei se
considera o serie de H structuri de date, H >2.
Pentru fiecare structura se construieste o varianta de program.
Aceste variante au aceleasi:
- date de intrare
- formule de calcul
- rezultate finale.
Difera numai structurile de date, expresiile de referire, nivelul de
generalitate, procedurile de lucru cu structuri de date.
Necesitatea este data de:
- economisirea de timp
- reutilizarea de proceduri din biblioteci
- obtinerea unui program cat mai usor de actualizat.
Mijloacele de realizare: implementare cod sursa in limbajul de programare C++.
2.Structura programului
Datele de intrare sunt cele initiale de la care se vor calcula ratele de amortizare. Acestea sunt: valoare de intrare si durata de utilizare a mijloacului fix, fiind repartizata uniform pe toata durata de utilizare a acestuia.
Rezultatele ce se obtin vor fi:
Rata anuala a amortizarii
Anuitatea amortizarii
Amortizarea anuala
Rata lunara de amortizare in functie de amortizarea lunara
Amortizarea degresiva fara influenta uzurii morale - AD1
Amortizarea degresiva cu influenta uzurii morale - AD2
Se va lucra cu structuri de date si cu functii predefinite care vor calcula rezultatele prevazute in problema de natura economica.Pentru aceasta am definit si denumit o structura de date de tip "mijloc_fix' generalizand astfel natura acestuia si evidentiind datele de intrare.
struct mijloc_fix ;
Procedurile "calcAmortizareLin", "calc_AD1" si "calc_AD2" vor returna rezultate pentru fiecare an in care s-a utilizat respectivul mijloc fix.
void calcAmortizareLin(int m, int n, struct mijloc_fix*** mat, float** Rata_anuala_amortizare,float** Anuitate_am,float** Amort_anuala,float** Rata_lunara,float** Amort_lunara)
void calc_AD1(float* Amortizare_degresiva,float* Rata_anuala_amortizare, int m, int n)
void calc_AD2(int m,int n)
Programul in cod sursa utilizat este:
#include <stdio.h>
#include <malloc.h>
#include <string.h>
struct mijloc_fix ;
void calcAmortizareLin(int m, int n, struct mijloc_fix*** mat, float** Rata_anuala_amortizare,float** Anuitate_am,float** Amort_anuala,float** Rata_lunara,float** Amort_lunara)
for(i=0;i<m;i++)
}
void calc_AD1( int m, int n, float* Amortizare_degresiva,float* Rata_anuala_amortizare)else
}
void calc_AD2(int m,int n,struct mijloc_fix*** mat, float* cota_medie_am_liniar, float* cota_medie_am_degresiva,float* durata_utiliz_liniara,float* durata_am_integrala)else
}
for(i=0;i<m;i++)
for (j=0;j<n;j++)
void main()
}
calcAmortizareLin(DurataUtilizare, Perioada, matr, &RataAnuala, &Anuitate, &AmortAnuala, &RataLunara, &AmortLunara);
calc_AD1(DurataUtilizare, Perioada, matr, &AmDegresiva);
calc_AD2(DurataUtilizare, Perioada, matr, &CotaMedieLiniara, &CotaMedieDegresiva, &DurataLiniara, &DurataIntegrala);
3.Structurile de date utilizate intern
Structurile de date utilizate intern au fost definite in cadrul procedurilor astfel:
Matricea este o structura statica formata din elemente de acelasi tip, referite cu doua expresii indiciale, corespunzatoare liniilor si coloanelor. Ca structura agregata, matricea este un vector de vectori.
Este o structura
definita ca numar de linii si numar de coloane in care cea mai mare majoritate
a elementelor este formata din valori nenule.
Matricea completa se defineste prin:
- tip
- nume
- numar de linii
- numar de coloane.
Referirea elementelor se efectueaza prin doua structuri repetitive imbricate.
Tipul de date privind criteriul alocarii memoriei au fost de tip static si dinamic.
Cele din urma se obtin in procesul alocarii de zone de memorie, initializarii si crearii de legaturi, din aproape in aproape, iar cele statice se obtin din alocarea memoriei inainte de lansarea in executie a programului si nu-si modifica numarul de componente in timpul executiei. Matricele, vectorii, variabilele de grup definite prin program sunt structuri de date statice. Dimensiunile acestor structuri cresc prin procesul de alocare de noi zone sau descresc prin dealocarea zonelor de memorie de care nu mai este nevoie in program.
Datele din program au fost referite folosind pointeri dupa ce au fost alocate pe stiva Heap utilizand fisierul header al bibliotecii "malloc". Astfel elementele matricei utilizate au fost incarcate cu informatii utile calculate in proceduri, respectiv ratele si cotele de amortizare.
Pointerii la structura isi dovedesc utilitatea in adresarea facila a membrilor unor masive de structuri, precum si in transferul intre functii a unor structuri, prin adresa.
S-a utilizat in apelul procedurilor, din programul main(), transmiterea ca parametru a pointerului matr la strcutura de date de tip mijloc_fix.
Desi ansambluri de date, structurile se trannsmit in functii implicit prin valoare, nu prin adresa ca masivele. Transmiterea ca parametru a unui pointer la structura in locul structurii, face mai rapid transferul, evitand incarcarea pe stiva a intregii structuri si asigura totodata lucrul pe structura original, nefiind necesar returnarea rezultatului.
calcAmortizareLin(DurataUtilizare, Perioada, matr, &RataAnuala, &Anuitate, &AmortAnuala, &RataLunara, &AmortLunara);
calc_AD1(DurataUtilizare, Perioada, matr, &AmDegresiva);
calc_AD2(DurataUtilizare, Perioada, matr, &CotaMedieLiniara, &CotaMedieDegresiva, &DurataLiniara, &DurataIntegrala);
Transmiterea structurii prin valoare asigura insa unica modalitate de a transmite un masiv ca parametruin functie prin valoare, facandu-l element al unei strcucturi.
Operatiile elementare utilizate au fost cele de :
creare si initializare elemente matrice;
traversare structura de date;
manipulare de legauri si de informatii utile;
modificare campuri;
Modificarea este un
proces prin care se schimba continutul unei zone de memorie, informatie utila
sau legaturi. Modificarile la nivelul structurilor de date vizeaza in sens mai
larg:
- schimbarea numarului de elemente prin stergere sau prin adaugare
- schimbarea legaturilor dintre elemente, modificand ordinea si sensul
referirilor.
In acest caz, modificarile au fost facute cu ajutorul procedurilor de calcul pe care le-am apelat in "main()", adica programul principal si care returneaza lista de parametri ce contine informatii despre structura care face obiectul prelucrarii si informatii despre un anumit element.
Procedurile care
lucreaza cu structuri de date se caracterizeaza prin:
- tipul de date returnat care este void daca nu returneaza ceva special, tip
int daca returneaza un rezultat intreg obtinut prin calcule, pointer spre tipul
ce defineste elemente daca returneaza referirea unei noi structuri, referirea
unui element cautat din structura;
- lista de parametri ce contine informatii despre structura care face obiectul
prelucrarii si informatii despre un anumit element;
- instructiune care asigura stocarea informatiilor privind adresa primului
element din structura, pentru a relua prelucrari de la acesta;
- secventa de instructiuni repetitive, instructiunea care asigura avansul spre
elementul urmator din structura;
- returnarea rezultatului prelucrarii.
4.Descrierea implementarii operatiilor de baza
Operatiile de baza utilizate sunt:
Crearea structurii de date care constituie baza acestui proiect este struct mijloc_fix, care poseda campuri reprezentative, si anume numele activului a carui amortizare este analizata, data de tip char. Alte campuri declarate sunt de tip int, cum ar fi durata de utilizare a mijlocului fix si perioada pentru care se fac calculele, iar campul pentru valoarea de intrare a activului este de tip float.
O alta structura de date este matricea care este alocata in memorie cu elemente de tip pointeri la structura descrisa mai sus. Inserarea de informatii in elemntele matricei de face prin referrirea la elementele ei care sunt referinte la campurile structurii de la inceputul programului.
Aceasta matrice de tine numarul de linii n si numarul de coloane m, de tip int, care sunt de fapt informatii despre durata de utilizare si perioada calculului curent al amortizarii.
Inserarea de informatii in elementele structurii matriceale se face odata cu apelul procedurilor in main().
5.Concluzii
Prin utilizarea de structura de tip matrice se obtine la afisare si apel rezultate sub forma tabelara.
Utilizarea structurilor are ca avantaj ca acestea se trannsmit in functii implicit prin valoare, nu prin adresa ca masivele.
Transmiterea ca parametru a unui pointer la structura in locul structurii, face mai rapid transferul, evitand incarcarea pe stiva a intregii structuri si economisind spatiul de memorie.
Cunoasterea structurilor de date permite programatorilor sa priveasca procesul de dezvoltare software ca proces de alocare si nivelare de resurse.
6.Bibliografie
[IVAN97] |
Ion IVAN, Alexandru BALOG - Extensii ale matricei Halstead pentru sisteme de programare, PC World, vol. 5, nr. 5, 1997, pg. 86-87. |
Structuri de date -
Ghid pentru elaborarea proiectelor |
|
[SMEU98] |
Ion SMEUREANU, Ion IVAN, Marian DArdala - Structuri si obiecte in C++, Editura Cison, 1998. |
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1856
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved