Difference between revisions of "LU-LKP-B10:MD4"
(New page: {{TocRight}} =MD= ===Mērķi=== * ===Uzdevums=== X ===Jāiesniedz=== * Jāiesniedz C programmas pirmkods un Makefile. * Visi iesniedzamie faili jāsapako arhīvā LKP_MD1_vards_uzvards...) |
m (→J: Uzdevums pārāk grūts, vai var pagarināt termiņu?) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{TocRight}} |
{{TocRight}} |
||
=MD= |
=MD= |
||
Procedūru izsaukumu steka izdruka. |
|||
===Mērķi=== |
===Mērķi=== |
||
* Apgūt steka struktūru un komunikācijas mehānismu starp procedūrām. |
|||
* |
|||
* Praktizēt atkļūdošanas metodes kas saistītas ar steka analīzi un procedūru izsaukumu steku. |
|||
===Uzdevums=== |
===Uzdevums=== |
||
Izveidot programmatūras palīg-rīkus, kas nodrošina procedūru izsaukumu steka izdruku. |
|||
X |
|||
Definēt tos failos md4.c un md4.h. |
|||
Izveidot testa failu test.c kas demonstrē izstrādāta palīg-rīka lietojumu ar piemēru, kur izdrukāts izsaukumu steks vismaz 3 izsaukumu dziļumā. |
|||
Failā md4.h deklaretas sekojošas divas (makro) funkcijas, kas izmantojamas analizējamajā failā: |
|||
* PCS_TAG() - birkas makro ko ievieto ka pirmo izsaukumu katras procedūras sākumā. |
|||
* PCS_PRINT(depth) - funkcija, kas (uz stdout) drukā procedūru izsaukumu steku. Parametrs 'depth' norāda izsaukumu steka dziļumu (funkciju un procedūru izsaukumu skaitu), kas jādrukā. |
|||
* Minētās funkcijas daļēji vai pilnīgi realizētas failā md4.c |
|||
Izdrukas formāts ir sekojošs: |
|||
CallStack at Failavārds, rindasNr. |
|||
fails, rindasNr., funkcijasVards, funkcijasAdrese, izsaucējaAtgriešanāsAdrese [,parametru vertības bonusa gadījumā] |
|||
fails, rindasNr., funkcijasVards, funkcijasAdrese, izsaucējaAtgriešanāsAdrese [,parametru vertības bonusa gadījumā] |
|||
fails, rindasNr., funkcijasVards, funkcijasAdrese, izsaucējaAtgriešanāsAdrese [,parametru vertības bonusa gadījumā] |
|||
===Jāiesniedz=== |
===Jāiesniedz=== |
||
* Jāiesniedz C programmas pirmkods un Makefile. |
* Jāiesniedz C programmas pirmkods md4.c, md4.h, test.c un Makefile. |
||
* Visi iesniedzamie faili jāsapako arhīvā |
* Visi iesniedzamie faili jāsapako arhīvā LKP_MD4_vards_uzvards.tgz |
||
* Arhīva fails sūtāms pa epastu piekabē, ar sekojošu "Subject:" LKP |
* Arhīva fails sūtāms pa epastu piekabē, ar sekojošu "Subject:" LKP MD4 vards uzvards |
||
===Vērtējums=== |
===Vērtējums=== |
||
Uzdevums tiks vērtēts sekojoši: |
Uzdevums tiks vērtēts sekojoši: |
||
# 50% - Korekta steka izdruka uz pievienota piemēra, |
|||
# 80% - Korektu ievaddatu apstrāde un pareiza rezultātu izdruka. |
|||
# 50% - Korekta steka izdruka uz jebkura (pasniedzēja) piemēra, |
|||
# 20% - Nekorektu ievaddatu atpazīšana un kļūdas paziņojuma izdruka. |
|||
# +10% bonus - ja netiek izmantots un nav nepieciešams PCS_TAG(); bet var tikt izmantota kompilatora "debug" informācija. |
|||
# +10% bonus - ja tiek izdrukāti funkciju izsaukumi ar visiem parametriem. |
|||
===Piemēri=== |
===Piemēri=== |
||
Piemērs test.c failam |
|||
#include <stdio.h> |
|||
#include "md4.h" |
|||
int c(){ |
|||
PCS_TAG(); |
|||
int z=44; |
|||
PCS_PRINT(4); |
|||
return z-3; |
|||
} |
|||
int b(int i){ |
|||
PCS_TAG(); |
|||
int x; |
|||
x=x*c(); |
|||
return x; |
|||
} |
|||
int a(int i){ |
|||
PCS_TAG(); |
|||
return b(i+4); |
|||
} |
|||
int main(){ |
|||
PCS_TAG(); |
|||
int i=0; |
|||
return a(i); |
|||
} |
|||
===Derīga informācija=== |
===Derīga informācija=== |
||
* [http://www.opengroup.org/onlinepubs/009695399/functions/fgets.html fgets()] |
|||
* Ieteikums: izstrādājiet programmatūru pakāpeniski. Piemēram, vispirms ielasiet un izdrukājiet datus. Tad pievienojiet datu analīzi un reģistrēšanu savās datu struktūrās. Tad pievienojiet datu analīzi lai tos sakārtotu izdrukai. Testējiet vispirms uz pareiziem datiem. tad uz kļūdainiem datiem. |
* Ieteikums: izstrādājiet programmatūru pakāpeniski. Piemēram, vispirms ielasiet un izdrukājiet datus. Tad pievienojiet datu analīzi un reģistrēšanu savās datu struktūrās. Tad pievienojiet datu analīzi lai tos sakārtotu izdrukai. Testējiet vispirms uz pareiziem datiem. tad uz kļūdainiem datiem. |
||
==J&A (jautājumi un atbildes)== |
==J&A (jautājumi un atbildes)== |
||
Line 33: | Line 78: | ||
====J: Uzdevums pārāk grūts, vai var pagarināt termiņu?==== |
====J: Uzdevums pārāk grūts, vai var pagarināt termiņu?==== |
||
A: Noteiktais termiņš paliek spēkā |
A: Noteiktais termiņš paliek spēkā. Iesaku risināt savlaicīgi, lai pietiek laika neparedzētu problēmu risināšanai. |
||
---- |
---- |
Latest revision as of 17:28, 26 October 2010
MD
Procedūru izsaukumu steka izdruka.
Mērķi
- Apgūt steka struktūru un komunikācijas mehānismu starp procedūrām.
- Praktizēt atkļūdošanas metodes kas saistītas ar steka analīzi un procedūru izsaukumu steku.
Uzdevums
Izveidot programmatūras palīg-rīkus, kas nodrošina procedūru izsaukumu steka izdruku. Definēt tos failos md4.c un md4.h. Izveidot testa failu test.c kas demonstrē izstrādāta palīg-rīka lietojumu ar piemēru, kur izdrukāts izsaukumu steks vismaz 3 izsaukumu dziļumā.
Failā md4.h deklaretas sekojošas divas (makro) funkcijas, kas izmantojamas analizējamajā failā:
- PCS_TAG() - birkas makro ko ievieto ka pirmo izsaukumu katras procedūras sākumā.
- PCS_PRINT(depth) - funkcija, kas (uz stdout) drukā procedūru izsaukumu steku. Parametrs 'depth' norāda izsaukumu steka dziļumu (funkciju un procedūru izsaukumu skaitu), kas jādrukā.
- Minētās funkcijas daļēji vai pilnīgi realizētas failā md4.c
Izdrukas formāts ir sekojošs:
CallStack at Failavārds, rindasNr. fails, rindasNr., funkcijasVards, funkcijasAdrese, izsaucējaAtgriešanāsAdrese [,parametru vertības bonusa gadījumā] fails, rindasNr., funkcijasVards, funkcijasAdrese, izsaucējaAtgriešanāsAdrese [,parametru vertības bonusa gadījumā] fails, rindasNr., funkcijasVards, funkcijasAdrese, izsaucējaAtgriešanāsAdrese [,parametru vertības bonusa gadījumā]
Jāiesniedz
- Jāiesniedz C programmas pirmkods md4.c, md4.h, test.c un Makefile.
- Visi iesniedzamie faili jāsapako arhīvā LKP_MD4_vards_uzvards.tgz
- Arhīva fails sūtāms pa epastu piekabē, ar sekojošu "Subject:" LKP MD4 vards uzvards
Vērtējums
Uzdevums tiks vērtēts sekojoši:
- 50% - Korekta steka izdruka uz pievienota piemēra,
- 50% - Korekta steka izdruka uz jebkura (pasniedzēja) piemēra,
- +10% bonus - ja netiek izmantots un nav nepieciešams PCS_TAG(); bet var tikt izmantota kompilatora "debug" informācija.
- +10% bonus - ja tiek izdrukāti funkciju izsaukumi ar visiem parametriem.
Piemēri
Piemērs test.c failam
#include <stdio.h> #include "md4.h" int c(){ PCS_TAG(); int z=44; PCS_PRINT(4); return z-3; } int b(int i){ PCS_TAG(); int x; x=x*c(); return x; } int a(int i){ PCS_TAG(); return b(i+4); } int main(){ PCS_TAG(); int i=0; return a(i); }
Derīga informācija
- Ieteikums: izstrādājiet programmatūru pakāpeniski. Piemēram, vispirms ielasiet un izdrukājiet datus. Tad pievienojiet datu analīzi un reģistrēšanu savās datu struktūrās. Tad pievienojiet datu analīzi lai tos sakārtotu izdrukai. Testējiet vispirms uz pareiziem datiem. tad uz kļūdainiem datiem.
J&A (jautājumi un atbildes)
J: Uzdevums pārāk grūts, vai var pagarināt termiņu?
A: Noteiktais termiņš paliek spēkā. Iesaku risināt savlaicīgi, lai pietiek laika neparedzētu problēmu risināšanai.
Uz LKP kursa sākuma lapu.