C danner fundamentet for C++. Selv om C++ er mer utbredt for applikasjoner for stasjonære maskiner og spill, er C et utmerket utgangspunkt, særlig for de som er ferske i programmeringsverdenen. Les videre for å forstå hvorfor.
Hva er C?
C er et strukturert programmeringsspråk på høyt nivå. Programmer skrevet i C er overførbare mellom ulike plattformer. C er fortsatt et av de mest anerkjente programmeringsspråkene, grunnet sin robusthet. Det benyttes i avanserte programmer som innebygde systemer, drivere, kjerner, systemapplikasjoner, operativsystemer som Microsoft Windows og Apple OS X, databaser som MySQL, samt visse IoT-løsninger.
C er et kompilert språk, hvilket skaper et abstraksjonslag mellom maskinkode og programmet.
Et enkelt C-program som summerer to tall vil se slik ut:
#include<stdio.h> int main() { int a, b, sum; printf("Skriv inn to tall som skal adderes: "); scanf("%d%d", &a, &b); sum = a + b; printf("Summen av %d og %d er %d", a, b, sum); return 0; }
Her er resultatet:
Resultat fra eksemplet C-program
C-programmer inkluderer stdio.h, som er en standardbibliotek for input/output.
STDIO tilveiebringer grunnleggende input-output-funksjoner som printf og scanf. printf brukes for å vise meldinger eller utdata i konsollen, mens scanf brukes for å motta input fra konsollen. Vi benytter %d for å indikere at tallene er av heltallstypen.
Dersom du bruker desimaltall, kan resultatet bli uventet. For å unngå dette, kan du bruke %f. Funksjonen main() er den første funksjonen som utføres når programmet startes. Syntaksen er forholdsvis enkel – du deklarerer variabeltypene og bruker de deretter.
Hva er C++?
C++ er basert på objektorienterte programmeringsprinsipper, som abstraksjon, polymorfisme, arv og innkapsling. C++ kan betraktes som en utvidelse av C, som inkluderer konseptet med klasser og objekter.
Ved å bruke objekter for å lagre data oppnås en mer organisert struktur i programmene. For eksempel, dersom du ønsker å lagre detaljer om en elev, kan du lage en elevklasse og definere attributter som navn, alder, hobbyer og karakterer under denne klassen. Deretter kan du opprette konkrete studentobjekter etter behov!
class Student { public: char name[20]; int age; float marks; }; //Dette vil opprette et objekt Student student1 = new Student();
I virkeligheten vil objektet først opprettes og minne tildeles under kjøring.
C++ leverer høy ytelse, noe som er grunnen til at det fortsatt er et populært valg for utvikling av avanserte spillmotorer, innebygde systemer, nettlesere, kompilatorer og grafikkbaserte applikasjoner som bildebehandling.
Flere databaser, slik som MongoDB, er skrevet i C++. Akkurat som C er også C++ plattformuavhengig.
La oss skrive det samme tilleggsprogrammet i C++, legg merke til forskjellene i funksjonalitet.
#include <iostream> using namespace std; int main() { int a, b; cout << "Skriv inn tallene: "; cin >> a >> b; int sum = a + b; cout << a << " + " << b << " = " << sum; return 0; }
Legg merke til at vi bruker cout og cin istedenfor printf og scanf. Variabeldeklarasjoner kan plasseres hvor som helst i programmet før variabelen tas i bruk (for eksempel variabelen sum). Utskriftssetningen er enklere, der vi bare refererer til variabelnavnene. Merk også at vi bruker navnerommet std fra iostream-headeren. std inneholder metodene cout, cin og mange andre.
Likheter mellom C og C++
Man kan si at C er en undergruppe av C++. Det er mange likheter mellom C og C++, både i måten programmene er skrevet og applikasjonene de benyttes til. Begge er robuste, overførbare og gir høy ytelse. Her er noen viktige likheter:
Nr. | Funksjon | Beskrivelse |
1. | Syntaks | Begge har en lik syntaks, for eksempel variabeldeklarasjon, semikolon på slutten av linjen og navnekonvensjoner. |
2. | Strukturell og prosedyremessig | Hver kodelinje utføres sekvensielt. Programmene er strukturert på en bestemt måte – først importer, deretter variabeldeklarasjoner, og til slutt selve koden. |
3. | main()-funksjon | All kode som skal utføres må være inne i main()-funksjonen. main() er det første kallet under kjøring av programmet. |
4. | Pekere | Både C og C++ benytter pekere på samme måte. En peker er en variabel som lagrer minneadressen til en annen variabel. For eksempel, int a = 1;. Når denne koden er utført, vil et minne (f.eks. XX0011) tildeles variabelen a. Minneadressen til «a» kan nås ved å bruke &-tegnet, som i int ptr_a = &a. |
5. | Nøkkelord og operatorer | Alle nøkkelord og operatorer som finnes i C er også gyldige i C++. For eksempel scope, static, public, int, etc. C++ har også ytterligere operatorer og nøkkelord. |
Forskjeller mellom C og C++
C++ ble utviklet for å adressere visse mangler i C, og er en utvidelse av C. Derfor vil alle programmer skrevet i C fungere i C++, men det motsatte er ikke tilfellet! Hovedforskjellen mellom C og C++ er at C++ er basert på objektorienterte programmeringsprinsipper (OOP). I tillegg er det større vekt på typesjekking i C++. Det finnes også andre mer subtile forskjeller, som er listet nedenfor:
C | C++ |
Utviklet mellom 1969 og 1973 av Dennis Ritchie ved AT&T Bell Labs. | Utviklet av Bjarne Stroustrup i 1979. |
Følger ikke objektorienterte programmeringsprinsipper. | Basert på OOPS-konseptene, som innkapsling, polymorfisme og arv. |
C inneholder 32 nøkkelord, som char, switch, int, static, union etc. | Alle C-nøkkelord er gyldige i C++, samt 31 ekstra nøkkelord. |
Støtter kun prosedyreprogrammering. | C++ støtter flere programmeringsparadigmer, som OOP, generisk og funksjonell programmering. |
Vi kan ikke implementere funksjoner i OOP i C. | Funksjoner som friends og virtuelle funksjoner i C++ forbedrer essensen av OOP. |
C støtter innebygde datatyper. | C++ støtter både innebygde og brukerdefinerte datatyper gjennom konseptet klasser. |
Det er ingen operatør- eller funksjonsoverbelastning i C. | C++ støtter både operatør- og funksjonsoverbelastning (polymorfisme). |
Minneallokering gjøres gjennom malloc() og calloc() funksjoner, og deallokering med free(). | Minneallokering gjøres med new, og deallokering med delete. |
C støtter ikke unntakshåndtering. | Støtter unntakshåndtering. |
Fokuserer mer på prosedyren eller metoden enn dataene. | Større fokus på data. |
Andre viktige funksjoner som kun finnes i C++ inkluderer:
- Ved å bruke navneområde kan vi lage variabler med samme navn i ulike navnerom.
- Vi kan bruke funksjoner i en struktur. Strukturer kan også ha tilgangsmodifikatorer.
- Støtter referansevariabler.
Når skal du bruke C eller C++
Det er en vanlig diskusjon blant programmerere – hvorfor lære C når jeg kan gjøre alt i C++?
Å lære C vil gi deg et solid fundament i datastrukturer, pekere, nøkkelord og konsepter rundt stack, heap og minneallokering.
I tillegg er C fortsatt mye brukt for applikasjoner med høy ytelse, siden C-kompilatoren er raskere enn C++-kompilatoren. Så hvis du ønsker å skrive kode som ikke krever objekter og klasser, virtuelle funksjoner eller maler, er C et godt valg da C++ kan være overdrevent med sine omfattende biblioteker.
Mye lavnivå-koding, som kjerner, operativsystemer og databaser, vedlikeholdes fremdeles i C. Det å ha kunnskap om C vil også hjelpe deg å lære C++ raskere.
C++ regnes som et av de raskeste og mest effektive språkene. Det er grunnen til at det fremdeles er et av de ledende programmeringsspråkene, spesielt for høyytelsesapplikasjoner som spillmotorer, IoT-enheter og skrivebordsapplikasjoner. Mange applikasjoner benytter en kombinasjon av C- og C++-kode – for å oppnå optimal ytelse og fordelene ved objektorientert programmering.
Sammendrag
I denne artikkelen har vi sett på de grunnleggende aspektene ved C og C++ med enkle eksempler. Vi har diskutert de viktigste likhetene og forskjellene mellom språkene, samt når de bør brukes.
Dersom du er i startfasen av din utviklingsreise, vil det å starte med C gi deg en følelse av mestring, da det er et enkelt språk som dekker alle grunnleggende programmeringskonsepter som datastrukturer, pekere og minnehåndtering.
Du kan være interessert i å benytte online C Compiler og C++ Compiler som er tilgjengelig på tipsbilk.net.