Ето и решението на задачата от предишната публикация на Microsoft Basic, която без проблем можете да компилирате на Правец
10 HOME
20 PRINT "-------PROGRAMA ZA RESHAVANE NA KVADRATNI URAVNENIQ-------"
30 PRINT "VAVEDETE A "
40 INPUT A
50 PRINT "VAVEDETE B "
60 INPUT B
70 PRINT "VAVEDETE C "
80 INPUT C
90 D=B^2-4*A*C
100 PRINT "DISCRIMINANTATA E RAVNA NA ",D
110 IF D<0 THEN PRINT "DISKRIMINANTATA E OTRICATELNA ZATOVA URAVNENIETO NQMA RESHENIE"
130 IF D=0 THEN GOTO 200
140 X1 = ((-B)-SQR(D))/(2*A)
150 X2 = ((-B)+SQR(D))/(2*A)
160 PRINT "X1 = ",X1
170 PRINT "X2 = ",X2
180 GOTO 210
190 X = -B/(2*A)
200 PRINT "DISCRIMINANTATA E RAVNA NA NULA ZATOVA URAVNENIETO IMA EDNO RESHENIE: ",X
210 PRINT "EXIT"
неделя, 11 април 2010 г.
петък, 9 април 2010 г.
Квадратно уравнение
Поради скуката която ме налегна, днес реших да сравня езиците за програмиране които съм ползвал до сега и едно сравнително ново отроче в семейството на езиците за програмиране, а именно F# и по-специално Visual F# 2010. Тъй като навсякъде първата програма, която пишат програмистите и я дават като стандарт за първа програма "Hello World", аз преди няколко години реших моята първа програма на всеки нов език който реша да прегледам да е "Решаване на квадратно уравнение", затова тук ще съпоставя тази програма написана на всички езици, с които поради някаква причина съм се сблъсквал до сега като започна от Pascal, мина през C++,C#,Visual Basic и завърша с F#. В този списък са пропуснати обикновения Basic - който се оказа тотално забравен от мен и Assembler на който писах тази програма, но не мога да открия, а нямам сили да я пиша отново, затова ако я намеря и нея ще добавя. А сега да започна с Pascal (Реално сега е компилирана на CodeGear Delphi 2009):
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
a,b,c,D,x1,x2:real;
begin
write('Vavedete a= ');
readln(a);
write('Vavedete b= ');
readln(b);
write('Vavedete c= ');
readln(c);
D:= b*b-4*a*c;
writeln('Diskriminantata e ravna na: ',D);
if D<0>
begin
writeln('Diskriminantata e otricatelna zatova uravnenieto nqma reshenie!');
end
else if D=0 then
begin
x1:=-b/(4*a);
writeln('Diskriminantata e nula zatova uravnenieto ima edno reshenie: x= ',x1);
end
else
begin
x1 := (-b+sqrt(D))/(4*a);
x2 := (-b-sqrt(D))/(4*a);
writeln('x1 = ',x1);
writeln('x2 = ',x2);
end;
end.
A ето и кода на програмата на C++:
#include "stdafx.h"
#include
#include
using namespace std;
void main()
{
cout <<"Vavedete a = ";
double a;
cin >> a;
cout <<"Vavedete b = ";
double b;
cin >> b;
cout <<"Vavedete c = ";
double c;
cin >> c;
double d = b*b-4*a*c;
cout <<"Diskriminantata e: "<<<'\n';
if(d<0)
{
cout <<"Diskriminantata e otricatelna zatova uravnenieto niama reshenie!\n";
}
else if (d==0)
{
cout <<"Diskriminantata e nula zatowa uravnenieto ima edno reshenie: x="<<(-b)/(4*a)<<'\n';;
}
else
{
cout <<"x1 = "<<((-b)+sqrt(d))/(4*a)<<'\n';
cout <<"x2 = "<<((-b)-sqrt(d))/(4*a)<<'\n';
}
}
Следва C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
Console.Write("Въведете а =");
double a = Double.Parse(Console.ReadLine());
Console.Write("Въведете b =");
double b = Double.Parse(Console.ReadLine());
Console.Write("Въведете c =");
double c = Double.Parse(Console.ReadLine());
double d = b * b - 4 * a * c;
Console.WriteLine("Дискриминантата е: " + d.ToString());
if (d <>
{
Console.WriteLine("Дискриминантата е отрицателна затова уравнението няма решение");
}
else if (d == 0)
{
Console.WriteLine("Дискриминантата е равна на нула затова има само едно решение: x=" + ((-b) / (4 * a)).ToString());
}
else
{
Console.WriteLine("x1=" + ((-b + Math.Sqrt(d)) / (4 * a)).ToString());
Console.WriteLine("x2=" + ((-b - Math.Sqrt(d)) / (4 * a)).ToString());
}
}
}
}
A сега Visual Basic:
Module Module1
Sub Main()
Console.Write("Въведете а = ")
Dim a As Double = Double.Parse(Console.ReadLine())
Console.Write("Въведете b = ")
Dim b As Double = Double.Parse(Console.ReadLine())
Console.Write("Въведете c = ")
Dim c As Double = Double.Parse(Console.ReadLine())
Dim D As Double = b ^ 2 - 4 * a * c
Console.WriteLine("Дискриминантата е равна на: " + D.ToString())
If (D <>
Console.WriteLine("Дискриминантата е отрицателна затова уравнението няма решение")
ElseIf (D = 0) Then
Console.WriteLine("Дискриминантата е равна на нула затова има само едно решение: x=" + ((-b) / (4 * a)).ToString())
Else
Console.WriteLine("x1=" + ((-b + Math.Sqrt(D)) / (4 * a)).ToString())
Console.WriteLine("x2=" + ((-b - Math.Sqrt(D)) / (4 * a)).ToString())
End If
End Sub
End Module
Да преминем сега и към F#:
open System
open System.Collections.Generic
open System.Text
Console.Write("Въведете a = ");
let a:Double = Double.Parse(Console.ReadLine())
Console.Write("Въведете b = ")
let b:Double = Double.Parse(Console.ReadLine())
Console.Write("Въведете c = ")
let c:Double = Double.Parse(Console.ReadLine())
let D: Double = (b*b)-(4.0*a*c)
Console.WriteLine ("D = "+D.ToString())
if D<0.0>
Console.WriteLine("Детерминантата е отрицателна и уравнението няма решение")
else if D=0.0 then
Console.WriteLine("Дискриминантата е равна на нула затова има само едно решение: x="+((-b)/(4.0*a)).ToString())
else
Console.WriteLine ("x1 = "+((-b+sqrt(D))/(4.0*a)).ToString())
Console.WriteLine ("x2 = "+((-b-sqrt(D))/(4.0*a)).ToString())
Както виждате между всички езици за програмиране, на които съм писал една и съща програма има доста съществена връзка, например C++ и C# начина на писане на код (като изключим викането на библиотеки при C++ и именитите пространства (namespace) в C#) е доста идентично - декларацията на променливите, начините на писане на класове, операндите са почти еднакви (е има и доста разлики cin>>a - a=Console.Read(); cout<<"Text" - Console.Write("Text")). Visual C#, Visual Basic, Visual F# май има най голяма прилика при писането на код в тези езици, което най-вероятно се дължи на това че и трите са отрочета на Microsoft.
Засега новоизлюпилия се език F# не ме е грабнал, кой знае колко, но ми направи впечатление че мога пропускам типа на променливата при декларирането й (let а:int = 10 е еднакво с let a = 10), другаде не можах (поне засега) да намеря съществени разлики при писането на код. Подразни ме, че не мога на променлива от тип double да присвоя стойността от математическите операции на променливи от тип int.
Етикети:
Квадратни уравнения,
Програмиране,
C#,
C++,
F#,
Pascal,
Visual Basic
вторник, 30 март 2010 г.
Extremesoft Project Studio
Това е един софтуерен продукт състоящ се от 2 програми (към момента), който разработих в продължение на година и половина, който ще разгледам в няколко точки:
1. Предназначение: това е продукт предназначен за използване във фирми и компании занимаващи се като цяло с компютри и обработка на файлове, които имат служители работещи у дома си. В Project Studio Manager могат да се добавят нови потребители, добавят/редактират проекти, назначават тестъри към проект, сключват сделки, разпечатват подробни рапорти за напредъка по проекти и т.н. В Project Studio Employee служителите въвеждат какво са свършили по поверените им задачи, разбиват обемни задачи на подзадачи, мениджърите по проекти разбиват проектите на задачи и ги разпределят на екипите. Тестърите подават рапорти за бъгове и т.н. А сега да проследя хронологията по създаването на продукта:
1. Идея:
На мен ми трябваше програма, с която да си организирам работата, но нищо от което бях намерил не ми вършеше работа - лесен и интуитивен интерфейс, мрежова потдръжка, разбиване на проекти, разбиване на задачи, прикачване на файлове. Имаше софтуерни продукти които покриваxа само отделна част от тези критерии, но не и всичките. Затова реших да си направя малко приложение само за моите нужди, но в последствие продукта нарасна като код и възможности, затова реших да направя готов завършен продукт, който да не е само за мен, но да може да се ползва и от други програмисти, фирми и организации
2. Реализация:
Работата по програмата започна Юни месец 2008 година, когато започнах да нахвърлям идеи в един бележник. Реалната работа по вече планувания проект започна Септември 2008 година, като към Юни месец 2009 година вече имах напълно функционална бета версия с която започнах да организирам работата си (в крайна сметка с тази цел беше разработена), в този момент захвърлих бележниците и до ден днешен организирам работата си с програмата. Към този момент с нея организирам работата по 30 проекта (част от тях са завършени) в които са включени 464 задачи и подзадачи.
3. Финална версия на продукта:
Финалната версия на продукта е компилирана на 16 Януари 2010 година. Пусната в продажба същия ден
4. Бъдеше:
В момента нахвърлям идеи за новата версия на програмния продукт, като реалната работа по продукта ще започне Май месец тази година, а като запланувана дата за финална версия е 31.12.2012 година, така че ако нямам много спънки по разработката на 1 Януари 2013 година всички ще видят новия продукт. Версия 2.0 на Extremesoft Project Studio, няма да се състои само от тези 2 програми (Extremesoft Project Manager и Extremesoft Project Employee), а ще включва още приложения (Extremesoft Employee Pay v1.0 - разпределяне на заплати и бонуси на служителите, Extremesoft Project Studio Messanger v1.0 - приложение за моментни съобщения, пренос на звук и видео, които ще се записват на сървъра, за да може по късно да се преглеждат отново при нужда от служителите, Extremesoft Invoice v.1.0 - приложение за издаване на фактури, Project Studio Gadget - гаджет за Windows Vista и 7, който ще следи за нови задачи, Windows Mobile Remind v1.0 - мобилен софтуер, с който служителия ще може да следи за назначени нови задачи), освен Windows версия 2.0 ще потдържа - някой дистрибуции на Linux, MacOS (Intel) и BSD.
Етикети:
Бази данни,
Отдалечена работа,
Програмиране,
C#
понеделник, 29 март 2010 г.
Първата ми среща с Windows
Както обешах в предишната си публикация ще напиша как за пръв път се срещнах с Windows.
За пръв път се "срещнах" с Windows през не чак до там далечната 1999 година. Привлечен от програмирането на Бейсик в компютърната зала на училището където учех, но макар че там учителя ми по Информатика да ме оставяше с часове, никога не ми стигаше времето да напиша програмата която исках, затова започнах да "мрънкам" на родителите си да ми купят компютър но не усъзнавах че той няма да има нищо общо с компютъра на който пишех код в училището. Не след дълго си поръчах компютър от Ямбол за 2920 лв (да правилно чухте 2920 лева) със следната конфигурация:
CPU: AMD K6-2 450 Mhz
MB: Accorp някакъв не мога да си спомня модела
RAM: 64MB SD-RAM
VGA: Voodoo 3dfx 32 MB RAM
HDD: Quantum 6GB
CD-ROM: На него пишеше 40х нищо повече
и това всичко задвижвано от модерния тогава Windows 98
Когато ми донесоха и сложиха компютъра у дома нямах търпение да го пусна и като го сторих за мое учудване нямаше интерфейса от Правец, а един тигър (Wallpaper-а на десктопа), който ме гледаше гледах го и аз и се чудих защо са ми пробутали такъв боклук и не мога да програмирам на Бейсик на него. Първото ми действие беше да щракна копчето и да го изключа.
неделя, 28 март 2010 г.
Един програмист в самото начало

Вчера реших да отида там, от където тръгнах, а именно от Правец и езика за програмиране Бейсик. Тъй като на компютъра ми е инсталирана операционната система Windows 7 x64 и емулатора който изтеглих от тук не искаше да тръгне, затова използвах Virtual PC 2007, на който инсталирах Windows 95, на който пуснах емулатора и успях да скалъпя тази програмка (на снимката). След това се зачудих, ако сега ми се наложеше да тръгна от там едва ли щях да стана програмист, за което не съжалявам.
Днешните редактори на код доста ни улесняват и вече сме ги приели като даденост, но когато се върнем назад и погледнем от къде сме тръгнали ни се струва, че е било прекалено труднo
В следващата публикация ще разкажа как за пръв път се сблъсках с Windows
Етикети:
Бейсик,
Програмиране,
Basic,
Emulator,
Virtual PC
Абонамент за:
Публикации (Atom)