Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Ta reda på ett udda tal

Postades av 2007-03-09 11:50:43 - Magnus Karlsson, i forum asp.net generellt, Tråden har 12 Kommentarer och lästs av 2159 personer


Finns det något inbyggt som kan lämna true eller false om ett tal är udda?


Svara

Sv: Ta reda på ett udda tal

Postades av 2007-03-09 11:57:11 - Simon Dahlbacka

(foo % 2 == 0 ? true : false);


Svara

Sv:Ta reda på ett udda tal

Postades av 2007-03-09 12:13:32 - Magnus Karlsson

Det där var C#. Hur ser detta ut i VB?


Svara

Sv: Ta reda på ett udda tal

Postades av 2007-03-09 12:27:21 - Magnus Karlsson

Kom på det

<code>
if foo Mod 2 = 0 then
return True
else
return False
end if
</code>


Svara

Sv: Ta reda på ett udda tal

Postades av 2007-03-09 12:37:25 - Lars Gottfridsson

(tal Mod 2 = 0)



ex, dr du ger tal ett vrde:

If (tal Mod 2 = 0) Then
MessageBox.Show("jmt")
End If

som du redan kommit fram till! :)


Svara

Sv:Ta reda på ett udda tal

Postades av 2007-03-09 13:02:14 - Per Persson

(foo % 2 == 0 ? true : false);

kan kort och gott skrivas
(foo % 2 == 0)


 if foo Mod 2 = 0 then 
   return True
 else
   return  False
 end if

kan kort och gott skrivas
return (foo Mod 2 = 0)


Brukar ni även skriva
if (((var == 0) == true) == false)

i stället för
if (var != 0)

?


Svara

Sv: Ta reda på ett udda tal

Postades av 2007-03-09 13:54:35 - Andreas Hillqvist

JAg förstår inte varför man använder modelus?

Bitvis and borde väl vara tillräckligt.

För heltal är det den mist signifikanta biten som avgör om talet är jämt eller ojämnt.

Alltså bör en Bitvis and operation med ett ge ett(sant, värdet är skijt från noll) för ojämna tal och noll(falskt) för jämna tal:

Dim x As Integer = 0, y As Integer = 1
If x And 1 Then
	console.Write("X is Odd")
Else
	Console.Write("X is Even")
End If
If y And 1 Then
	Console.Write("Y is Odd")
Else
	Console.Write("Y is Even")
End If


Det kan ur läsbar hets syfte underlätta att kapsa det i en funktion. Men det ger ju en liten prestanda overhead. Ett Makro vor bättre. Stödjer vb.net, c# makro?
Sub Main()
	Dim x As Integer = 0, y As Integer = 1
	If Odd(x) Then
		Console.Write("X is Odd")
	Else
		Console.Write("X is Even")
	End If
	If Even(y) Then
		Console.Write("Y is Even")
	Else
		Console.Write("Y is Odd")
	End If
	Console.Read()
End Sub

Function Odd(ByVal value As Integer) As Boolean
	Return value And 1
End Function

Function Even(ByVal value As Integer) As Boolean
	Return Not value And 1
End Function


Svara

Sv:Ta reda på ett udda tal

Postades av 2007-03-09 14:10:17 - Per Persson

Det stämmer. Men ofta handlar det om att man vill ha "varannan", och då är det naturligare att köra med modulo, eftersom det inte funkar att använda "bitvis och" ifall man vill byta till "var tredje".

Sedan är nog fler vana vid att tolka "mod 2" som "jämn eller udda", och har därför lättare att läsa ett program med "mod 2" än med "bitvis and 1". Läsbarhet är också viktigt.


Svara

Sv: Ta reda på ett udda tal

Postades av 2007-03-09 14:21:53 - Niklas Jansson

...och har man flyttal så fungerar mod-varianten men inte bitvis-varianten om man bara ser till att flyttalen är korrekt inskrivna.

...och i språk där variabler kan ha olika typer beroende på vad man lägger i dem är det ofta så att den bitvisa varianten inte funkar.

...och i en hel del språk (framför allt matematiska) finns inte bitvisa funktioner i någon lättillgänglig form.


Svara

Sv:Ta reda på ett udda tal

Postades av 2007-03-09 15:57:18 - Andreas Hillqvist

Jag bör tilläga att jag inte gillar VB's AND operator. Därför att det är operator för både bitvis och booleansk.
Vilket beror på data typerna hos värdena.


Svara

Sv: Ta reda på ett udda tal

Postades av 2007-03-10 09:12:03 - Martin Adrian

Man bör dock se upp med modulo eftersom det fungerar olika med negativa tal.

"-1 mod 2" kan returnera -1 eller 1 beroende på programspråk och ibland även bereoende på kompilator eller processor.

Jämför därför alltid resultatet med 0 (vilket alla exempel ovan gör iofs)

>Det kan ur läsbar hets syfte underlätta att kapsa det i en funktion. Men det ger ju en liten prestanda
>overhead. Ett Makro vor bättre. Stödjer vb.net, c# makro?

Välkommen till 21a århundradet. Här är makro aldrig bättre eller snabbare än en funktion i kompilerade programspråk.
(Makron är bra till många saker men inte som ersättare för en funktion)
vb.net och C# från Microsoft stöder inte makro, C++/CLI gör det. Vet inte hur det är med andra .net kompilatorer.


Svara

Sv:Ta reda på ett udda tal

Postades av 2007-03-10 10:37:25 - Andreas Hillqvist

Jag kan håller med om att Macro missbrukats till mycket.

JAg antar att du syftar på att kompilatorn förmodligen optimerar koden till in-line. Med andra ord den ser att funktionen är så enkel så att när den kompilerar ersäter den funktionsanropet med kroppen från funktionen.
Eftersom den då slipper läggar parameter på stacken och frigöra dem efter.

Fast nu är det jag som spekulerar.

Jag prioritera läsbarhet för prestanda. Alltså att man använder en funktion.
Men om du skriver en codec eller något där uttrycket görs ofta. Så kan det var att tänka på.

Jag är svag för optimering. ;)

Vilket ibland visar sig vara kontraproduktivt.

Så jag får väl krypa till korset här. Borde inte tagit upp det som optimering.

<info>"More computing sins are committed in the name of efficiency (without necessarily achieving it)
than for any other single reason - including blind stupidity."
- W.A. Wulf
</info>

<info>"Premature optimization is the root of all evil."
- Donald Knuth
</info>

<info>"The First Rule of Program Optimization: Don't do it.
The Second Rule of Program Optimization (for experts only!): Don't do it yet."
- Michael A. Jackson
</info>

Alltså skriv läsbar kod. När ett uppenbart behov av optimering identifierats så kan man ta itu med det då och endast då.


Svara

Sv: Ta reda på ett udda tal

Postades av 2007-03-10 19:09:30 - Lars Gottfridsson

man känner igen sig i det du säger Andreas! ( skäms skäms )
Lite konstigt att frameworket inte har nåt IsEven, IsOdd i system.math.
Det hade väl varit smutt.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 170
27 953
271 705
738
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies