(Ännu) en tråd om att börja programmera

Permalänk
Medlem
Skrivet av CENSTRM:

Kanske lite sent ute men jag rekommenderar www.lynda.com
(kostar pengar, får det gratis genom jobbet så vet inte hur mycket.)

De har förutom kurser i allt datarelaterat mellan himmel och jord en kurs som heter Foundations of programming. Den går igenom likheter och skillnader mellan en mängd olika språk och förklarar grundtankarna i Programmering i stort. Sedan lite tips om vart man gå därifrån. Den är tänkt för folk som precis ska börja programmera.

http://www.lynda.com/JavaScript-tutorials/Foundations-of-Prog...

Jag känner till Lynda, de gör även tutorials i After Effects (som jag jobbar med), men jag har inte riktigt kollat på dem så mycket.
Tack för förslaget iaf, men jag tror jag håller mig till gratisgrejjor i den mån det går.

Permalänk
Medlem

Okej, nu har jag allt kommit igång! Jag har sett några få tutorials och gått igenom ungefär allt som används i koden jag har här. Jag vet inte hur man scannar efter ord än, därför har jag valt att köra helt på siffror.
Problemet är att när jag kör koden så dyker första textraden upp, men oavsett vad jag skriver hoppar den direkt ner till att skriva "funka int". Varför fungerar inget av de andra if-arna?

#include <stdio.h> #include <stdlib.h> int main(void) { int num1; int num2; int num3; int metod; printf("\nChoose 1 for multiply, 2 for div, 3 for add, or 4 for sub\n"); scanf("%d", metod); if (metod==1){ printf("\nChoose two numbers to multiply"); scanf("%d", num1); scanf("%d", num2); num3 = num1 * num2; printf("%d", num3); } else if (metod==2){ printf("\nChoose two numbers to divide"); scanf("%d", num1); scanf("%d", num2); num3 = num1 / num2; printf("%d", num3); } else if (metod==3){ printf("\nChoose two numbers to add"); scanf("%d", num1); scanf("%d", num2); num3= num1 + num2; printf("%d", num3); } else if (metod==4){ printf("\nChoose two numbers to subtract"); scanf("%d", num1); scanf("%d", num2); num3= num1 - num2; printf("%d", num3); } else { printf("funka int"); } getch(); }

Edit: Att det här går att göra på snyggare och bättre sätt förstår jag såklart, men just nu är jag mest nyfiken på vad det är som gör att just detta inte fungerar.

Edit2:
Yey, fick det att funka med switch istället!

#include <stdio.h> #include <stdlib.h> int main(void) { int num1; int num2; int num3; int metod; printf("\nChoose 1 for multiply, 2 for div, 3 for add, or 4 for sub\n"); scanf("%d", &metod); switch(metod){ case 1: printf("\nChoose two numbers to multiply"); scanf("%d", &num1); scanf("%d", &num2); num3 = num1 * num2; printf("%d", num3); break; case 2: printf("\nChoose two numbers to divide"); scanf("%d", &num1); scanf("%d", &num2); num3 = num1 / num2; printf("%d", num3); break; case 3: printf("\nChoose two numbers to add"); scanf("%d", &num1); scanf("%d", &num2); num3 = num1 + num2; printf("%d", num3); break; case 4: printf("\nChoose two numbers to subtract"); scanf("%d", &num1); scanf("%d", &num2); num3 = num1 - num2; printf("%d", num3); } getch(); }

Permalänk
Medlem

är ingen höjadare på c men provade att kompilera och kompilatorn klagade på att scanf tar en int pekare. Referera istället till din int genom att sätta ett & tecken framför. ex scanf("%d", &num1);

Vad gör getch(); i slutet?

Visa signatur

| Ryzen 5800x | Asus prime x470 pro | Asus rtx 3080 tuf oc | Gskill 32gb 3,6ghz | aw3225qf |

Permalänk
Medlem
Skrivet av Ragin Pig:

är ingen höjadare på c men provade att kompilera och kompilatorn klagade på att scanf tar en int pekare. Referera istället till din int genom att sätta ett & tecken framför. ex scanf("%d", &num1);

Vad gör getch(); i slutet?

Var det den första eller andra koden du testade kompilera?

getch() fick jag lära mig skulle stå i slutet. Om jag minns rätt berodde det på vad man skrev i parantesen på "int main(void)". Och om man skriver "void" ska man skriva getch() i slutet.

Permalänk
Medlem
Skrivet av hapone:

Var det den första eller andra koden du testade kompilera?

getch() fick jag lära mig skulle stå i slutet. Om jag minns rätt berodde det på vad man skrev i parantesen på "int main(void)". Och om man skriver "void" ska man skriva getch() i slutet.

ah det var ditt första exempel. anledningen tillatt det funkade med switch var för att du i det exemplet använder scanf som jag skrev ovan
ang getch() så är det säkert så isåfall. har inte sett det tidigare bara.

Visa signatur

| Ryzen 5800x | Asus prime x470 pro | Asus rtx 3080 tuf oc | Gskill 32gb 3,6ghz | aw3225qf |

Permalänk
Medlem

getch() är "get character" och anledningen till att du har den i slutet är för att kommandoprompten ska stanna kvar och vänta på en knapptryck, innan den avslutar programmet och stänger ner. Det har inget med main() i övrigt att göra, utan bara en medveten paus i slutet av programmet.

Visa signatur

We shall never cease from exploration And the end of all our exploring Will be to arrive where we started And know the place for the first time.
- T. S. Eliot

Permalänk
Medlem

Jag har nu kollat igenom de 15 tutorials som finns på thenewboston. Någon som har något tips på var jag hittar fler tutorials? Gärna som tar vid ungefär där han slutade. (Vilket jag tycker var lite väl tidigt.)

Permalänk
Medlem
Skrivet av Prodhe:

getch() är "get character" och anledningen till att du har den i slutet är för att kommandoprompten ska stanna kvar och vänta på en knapptryck, innan den avslutar programmet och stänger ner. Det har inget med main() i övrigt att göra, utan bara en medveten paus i slutet av programmet.

Precis:) En lite snyggare version av det brukar vara att istället använda

system("pause");

Så får man "Press any key to continue . . ."

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem
Skrivet av Gnejs:

Precis:) En lite snyggare version av det brukar vara att istället använda

system("pause");

Så får man "Press any key to continue . . ."

I min mening är det inte så snyggt att använda sig av plattformsberoende kommandon för att införa en sådan paus, i synnerhet inte med något som flyttar kontrollen från sitt eget program till något som exekveras av systemets kommandotolk. Om någon illvillig person bytte ut programmet "pause" mot ett som raderar hårddisken kan det ju få ganska tråkiga konsekvenser. Notera att även getch() är plattformsberoende och bör inte användas ifall man tänkt köra sin kod på andra plattformar än windows.

Permalänk
Medlem
Skrivet av pelleplu:

I min mening är det inte så snyggt att använda sig av plattformsberoende kommandon för att införa en sådan paus, i synnerhet inte med något som flyttar kontrollen från sitt eget program till något som exekveras av systemets kommandotolk. Om någon illvillig person bytte ut programmet "pause" mot ett som raderar hårddisken kan det ju få ganska tråkiga konsekvenser. Notera att även getch() är plattformsberoende och bör inte användas ifall man tänkt köra sin kod på andra plattformar än windows.

Känns rätt försumbart när det handlar om någon som lär sig programmera och fipplar med tutorials osv. Om någon nu skulle vilja radera hårddisken känns detta scenario rätt osannolikt också^^ yeye, kan va bra att tänka på i framtiden, men då är det tusen andra saker att tänka på också, om man ska ha produktionsduglig kod>.>

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem

Mina två cent:

Skulle börja med att lära mig grunderna i Java istället för C, bättre som nybörjarspråk IMO då du slipper tex. minneshantering, pekare osv (samt att du får lära dig objektorienterad programmering vilket används i ganska stor skala). Sen när grunderna är klara så kan det va bra att ha koll på MVC (Model-View-Control) design som används en hel del i App-utveckling.

När du väl kan ett språk är det inte så svårt att gå över till andra. Från Java är steget inte särskilt stort till C och C#. Objective C (iOS) skiljer sig lite från de andra i syntax och liknande men är inte heller det särskilt svårt att lära sig, rekommenderar Stanfords iOS5 föreläsningsvideor som finns på iTunes U.

Visa signatur

Dator: MacBook Pro 16 M1 Max
Tangentbord: Totem, Sweep, Kyria
Layout: Colemak-DH + Canary