ÁðáíôÜù áðü ôçí âüñåéá Åýâïéá, ìå ôï Üñôé áðïêôçèÝí Aurdino Ýôïéìï ãéá ðåéñÜìáôá.
quote:
¸÷ù ôïí ãéï ìïõ ðñùôïåôÞ óôï ÅÌÐ óðáóéêëÜêé êáíïíéêü ìå äåêÜñéá êé Ýôóé.
ÌÜëëïí ï ãéïò óïõ äåí åß÷å ðïõ íá ìïéÜóåé. Åý÷ïìáé óôïí ëåâÝíôç óïõ, êÜèå åðéôõ÷ßá. Åëðßæù ìüíï íá ìçí ìåëåôÜåé ìüíï ãéá heat tanks áëëÜ íá åêìåôáëëåõèåß óôï Ýðáêñï êáé ôï äéáèÝóéìï ïéêïãåíåéáêü think tank.
"ÁéÝí áñéóôåýåéí êáé õðåßñï÷ïí Ýììåíáé Üëëùí, ìçäÝ ãÝíïò ðáôÝñùí áéó÷õíÝìåí».
ÐÜíôá íá åßóáé ðñþôïò êáé áíþôåñïò áðü ôïõò Üëëïõò êáé íá ìçí íôñïðéÜæåéò ôç ãåíéÜ ôùí ðñïãüíùí. ÉëéÜäá, Æ 208
quote:
Ìüíï ðïõ óôïõò Ìç÷áíïëüãïõò ôïõò «áëùíßæïõí» ìå ôçí Fortran êáé Ý÷åé ôá íåýñá ôïõ áí êáé ôïõ ëÝù íá ìÜèåé êé áõôÞí
http://www.computer.org/csdl/mags/co...012070008.html
quote:
¸ôóé êé áëëéþò óôï íá ãñÜøåéò êþäéêá äåí ìåôñÜ ç ãëþóóá áõôÞ êáèåáõôÞ üóï ôï ôáëÝíôï óïõ íá óõíèÝôåéò «ãëùóóéêïýò ìç÷áíéóìïýò» ïé ïðïßïé ôñÝ÷ïõí Üøïãá êáé äß÷ùò ðñïâëÞìáôá.
Ç ãëþóóá åßíáé ôï åñãáëåßï. ÐñÝðåé íá õðïóôçñßæåé ôéò áðáéôïýìåíåò äõíáôüôçôåò. Ç fortran, ç C êáé ç turbo pascal äåí õðïóôçñßæïõí ôïõò ìç÷áíéóìïýò ãéá íá äçëþóåéò êëÜóåéò êáé íá õëïðïéÞóåéò (instantiate) áíôéêåßìåíá.
Ç óýíèåóç, áðü áðëïýóôåñá Þ äïìéêÜ áíôéêåßìåíá ïäçãïýí óå êáôáóêåõÝò, ãëùóóéêÝò Þ ìç, ðïõ åðéëýïõí Ýíá ðñüâëçìá. (bottom-up).
Ç áíÜëõóç, «óðÜåé» Ýíá óýíèåôï áíôéêåßìåíï Þ ðñüâëçìá, óôá óõóôáôéêÜ ôïõ êáé ôï åðéëýåé åðéëýïíôáò ôá åðéìÝñïõò ìéêñüôåñá ðñïâëÞìáôá. (top-down)
quote:
Ðåñéôôü íá ðñïóèÝóù üôé ç éäÝá ôùí objects åßíáé áðüññïéá ôùí öïâåñþí records ôçò Pascal. Ôï çëéáêü ìïõ ðñüãñáììá âáóßóèçêå óå 3 ôÝôïéá records ðïõ äüìçóá üðùò TSunData, THliakosStruc, TBoilerStruc. Ãéá ðáñÜäåéãìá ç èåñìïêñáóßá åîüäïõ áðü ôïí óõëëÝêôç åßíáé éäéüôçôá ôïõ THliakosStruc Þ ç èåñìïêñáóßá åéóüäïõ óôïí åíáëëÜêôç ôïõ boiler åßíáé éäéüôçôá ôïõ TBoilerStruc
Óõìöùíþ, áëëÜ ðáñÝëåéøåò ôéò ñïõôßíåò ðïõ ÷ñçóéìïðïéïýí ôá records. Áõôü ðïõ ðñïêýðôåé êáé áðü ôá äýï, ôï object äçëáäÞ, ëåéôïõñãåß óáí êÜôé åíéáßï. Åíóùìáôþíåé (encapsulates) äåäïìÝíá êáé õðïëïãéóìïýò.
ÅðéóôñÝöù, óôï ðñüãñáììÜ óïõ ãéáôß áðïôåëåß, ìå äåäïìÝíï ôï êïéíü, ôï êáëýôåñï ðáñÜäåéãìá áëëáãÞò áðü äïìçìÝíï óå áíôéêåéìåíïóôñåöÞ ðñïãñáììáôéóìü.
To åã÷åéñßäéï ôùí Çëéáêþí óõóôçìÜôùí http://www.monachos.gr/forum/topic.asp?TOPIC_ID=3832 áðïôåëåß ìéá ðïëý êáëÞ ðåñéãñáöÞ ôùí öáéíïìÝíùí. (stom åõ÷áñéóôþ)
Ï Þëéïò áêôéíïâïëåß óõãêåêñéìÝíç åíÝñãåéá áíÜëïãá ìå ôçí ðåñéï÷Þ êáé ôçí þñá.
Êþäéêáò:
TSunEnergy = class
Public
// ÇëéáêÞ åíÝñãåéá óôï óõãêåêñéìÝíï GeoPlatos, çìÝñá êáé þñá óå W/m2
function Energy:Double; overload;
// ìå ìåôáâëçôÞ ôçí þñá óå W/m2
function Energy(aTime:integer):Double; overload;
property Time:integer; // seconds since midnight
property Month:integer;
property Day:integer;
property GeoPlatos:double;
property SunPerc:double;// ÓõíôåëåóôÞò çëéïöÜíåéáò
End;
Ç ñïÞ åíÝñãåéáò åßíáé ôï ìüíï óôïé÷åßï ôçò çëéáêÞ áêôéíïâïëßáò ðïõ åíäéáöÝñåé Ýíá panel. Ôá õðüëïéðá óôïé÷åßá åßíáé ðáñÜìåôñïé ðïõ ÷ñåéÜæïíôáé ãéá ôïí õðïëïãéóìü ôçò ñïÞò åíÝñãåéáò.
Ç äÞëùóç ôçò êëÜóçò ãßíåôáé óôï áíåîÜñôçôï uSunEnergy.pas
Ï çëéáêüò óõëëÝêôçò áðïöïñÜ ôçí åíÝñãåéá, êáé ôçí ìåôáôñÝðåé óå èåñìéêÞ ìÝóù ôïõ ñåõóôïý ôïõ êëåéóôïý êõêëþìáôïò.
Êþäéêáò:
TSolarPanel = class
public
function Energy(EnergyIn):double; // óõíïëéêÞ ãéá üëç ôçí åðéöÜíåéá kWh
function Flow:double; // ñïÞ Lt/h
property SolarAbsorbtion:double; // ðïóïóôü áðïññüöçóçò çëéáêÞò åíÝñãåéáò
property Slope :double; //êëßóç çëéáêïý
property SouthDeviation:double; // Áðüêëåéóç áðü ôïí Íüôï
property Surface:double; // åìâáäüí óõëëåêôéêÞò åðéöÜíåéáò
property Efficiency:double; // áðüäïóç çëéáêïý
property GlycolePerc : double;
property WaterInTemperature:double; // èåñì. åéóüäïõ êëåéóôïý êõêëþìáôïò
property WaterOutTemperature:double; // èåñì. åîüäïõ êëåéóôïý êõêëþìáôïò
end;
H TSolarPanle.Energy äÝ÷åôáé óáí ðáñÜìåôñï ôçí åéóåñ÷üìåíç åíÝñãåéá êáé õðïëïãßæåé ôçí áðïäéäüìåíç åíÝñãåéá. Ç þñá ôçò çìÝñáò åßíáé ðáñÜìåôñïò ôçò TSunEnergy êáé ü÷é ôïõ panel.
Ç äÞëùóç ôçò êëÜóçò ãßíåôáé óôï áíåîÜñôçôï uSolarPanel.pas
Ôï boiler ìÝóù ôïõ åíáëÜêôç ãéá ôïí çëéáêü Þ ôïõ åíáëÜêôç ãéá ôïí ëÝâçôá Þ ôçí çëåêôñéêÞ áíôßóôáóç, æåóôáßíåé ôï íåñü ðïõ ðåñéÝ÷åé
Êþäéêáò:
THeatSource = (hsSolarPanel, hsBurner, hsElectricity)
ÔBoiler = class
public
// êÜíù ôçí ðáñáäï÷Þ ïôé ìüíï ìßá ðçãÞ åíÝñãåéáò ôñïöïäïôåß ôï boiler
function Heat(inEnergy:double; from:THeatSource):double; // óôéãìéáßá éó÷ýò Kw
function AccumulatedEnergy:double; // áðü ôï ðåñéå÷üìåíï æåóôü íåñü Kwh
function SolarFraction:double; // ðïóü åíÝñãåéáò áðï çëéï / ðïóü åíÝñãåéáò êáôáíÜëùóçò
property WaterVolume:double;
property AverageDayConsuption:double; // lt
property WaterInTemperature:double; // áíÜëïãá ìå ôçí åðï÷Þ.
property WaterOutTemperature:double; // áíÜëïãá ìå ôçí åðï÷Þ.
property SolarHeatExchangeSurface :double; // m2
property BurnerHeatExchangeSurface :double; // m2
end;
To boiler óõóóùñåýåé èåñìüôçôá êáé áðïäßäåé ëßôñá ÆÍ× óå óõãêåêñéìÝíç èåñìïêñáóßá óôçí ìïíÜäá ôïõ ÷ñüíïõ.
Ç äÞëùóç ôçò êëÜóçò ãßíåôáé óôï áíåîÜñôçôï uBoiler.pas
¼ëá ôá objects ó÷åäéÜóôçêáí ãéá íá äßíïõí óôéãìéáßåò ôéìÝò. Ãéá íá ðáñÜîïõìå ôá äéáãñÜììáôá áêôéíïâïëßáò èá ðñÝðåé íá êáëÝóïõìå ôçí TSunEnergy.Energy(aTime) ìå üñéóìá ÷ñüíïõò ðïõ äéáöÝñïõí ìåôáîý ôïõò êáôÜ 15 min.
H êëÜóç TCalculator ãíùñßæåé üëá ôá ðáñáðÜíù áíôéêåßìåíá (TSunEnergy, TSolarPanel, ÔBoiler) âëÝðåé (uses) ôá uSunEnergy.pas, uSolarPanel.pas, uBoiler.pas êáé õðïëïãßæåé
Ýíá óýíïëï ôéìþí,
ãéá ìßá çìåñïìçíßá aDate,
áðü þñá FromTime Ýùò ToTime ìå âÞìá step ëåðôÜ
ãéá ôïí óõëëÝêôç aSolarPanel
êáé ôï boiler aBoiler.
Êþäéêáò:
TCalculator = class
procedure Calc(aDate:TDate; // ãéá óõãêåêñéìÝíç çìåñïìçíßá
FromTime, ToTime:TTime; step: integer;
aSolarPanel:TSolarPanel;
aBoiler:TBoiler);
property CalcCount:integer;
property Time[index:integer]:TTime; //
property SunHeight[index:integer]:degrees;
property SunAzimou8io [index:integer]:degrees;
property BoilerTemp [index:integer]:double;
property CollectorTempIn [index:integer]:double;
property CollectorTempOut [index:integer]:double;
...
end;
Óôï åðüìåíï post èá áíáöåñèþ óôá threads, ôçí âáóéêÞ ïíôüôçôá ðïõ åêôåëåß ôï CPU.