Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AgriculturaAsigurariComertConfectiiContabilitateContracteEconomie
TransporturiTurismZootehnie


STRUCTURI DE DATE - - CALCUL AMORTIZARE SI RATE DE AMORTIZARE ALE UNUI MIJLOC FIX

Economie



+ Font mai mare | - Font mai mic



ACADEMIA DE STUDII ECONOMICE

FACULTATEA DE CIBERNETICa, STATISTICa si INFORMATICA ECONOMICA



Structuri de date

PROIECT

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:

  • valoare de intrare 5.000 lei
  • durata de utilizare 7 ani
  • cota medie de amortizare in regim liniar 14,286 %
  • cota medie de amortizare in regim degresiv 14,286 x 2,5 = 35,715 %
  • durata de utilizare aferenta regimului liniar, recalculata in functie de cota medie anuala de amortizare degresiva 100 : 35,715 % = 3 ani
      • durata de utilizare pentru amortizare integrala 7 - 3 = 4 ani
        • in regim de amortizare degresiva 4 - 3 = 1 an (4 de mai sus, 1 din durata de utilizare recalculata)
        • in regim de amortizare liniara 4 - 1 = 3 ani
  • durata de utilizare aferenta uzurii morale pentru care nu se mai calculeaza amortizare 7 - 4 = 3 ani

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.  

Amortizarea degresiva fara influenta uzurii morale - AD1

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:

  • m si n reprezinta variabila de timp, declarate de tip integer, m fiind perioada pentru care este facut calculul ratelor,iar n este perioada de utilizare;
  • mat e pointer catre matricea de tip struct mijloc_fix, avand ca numar de linii si de coloane, durata de utilizare a mijlocului fix, respectiv perioada pentru care se calculeaza amortizarea;

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.

  • Rata_anuala_amortizare e pointer catre vector de pointeri de float;
  • Anuitate_am, Amort_anuala, Rata_lunara, Amort_lunara, Amortizare_degresiva sunt de asemenea pointeri catre vector de pointeri de float, fiind cotele calculate in proceduri;

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 unei structuri de date
  • Initializarea structurii de date respective folosind date de tip pointeri
  • Alocarea spatiului de memorie
  • Inserarea de informatii in elemntele unei matrici

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
Prof.univ.dr. Ion IVAN; Prep.univ. Doru UNGUREANU; Prep.univ. Adrian POCOVNICU

[SMEU98]

Ion SMEUREANU, Ion IVAN, Marian DArdala - Structuri si obiecte in C++, Editura Cison, 1998.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1856
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved