Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia...

37
Organizacja zajęć Środowisko Pierwszy program Skladnia języka Programowanie I C / C++ laboratorium 01 — Organizacja zajęć Jaroslaw Piersa Wydzial Matematyki i Informatyki, Uniwersytet Mikolaja Kopernika 2013-02-12 J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Transcript of Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia...

Page 1: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Programowanie I C / C++laboratorium 01 — Organizacja zajęć

Jarosław Piersa

Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika

2013-02-12

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 2: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Program zajęćZasady zaliczenia

Program

operacje wejścia i wyjścia

instrukcje warunkowe

pętle

tablice i wskaźniki

operacje na plikach

przegląd podstawowych plików nagłówkowych

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 3: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Program zajęćZasady zaliczenia

Namiary na prowadzącego

Jarosław Piersa

preferowany sposób e-mail: piersaj (at) mat . umk . pl

gabinet: E307

konsultacje: wt, godz. 16-17

www: http://www.mat.umk.pl/~piersaj

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 4: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Program zajęćZasady zaliczenia

Wspomaganie zajęć

moodle (obowiązkowy!)

https://plas.mat.umk.pl/moodle/course/view.php?id=328

olat:

https://www.mat.umk.pl:8443/dmz/

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 5: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Program zajęćZasady zaliczenia

Zaliczenie

obecność wymagana (maks. 2 nieobecności nieusprawiedliwione)

prace domowe, kolokwia, wejściówki

nieobecność kolokwium lub wejściówce = poprawka nanajbliższych konsultacjach

nieobecność nieusprawiedliwiona na kolokwium = 0p + kara50% z poprawkikary za spóźnienia (prace domowe, poprawa wejściówkii kolokwium)

kara = min(0.1 · 2sp−1, 1) maksymalnej liczby punktówsp = ilość tygodni spóźnienia zaokrąglona w górękara jest subtraktywna (tj odejmowana od podstawowej oceny)

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 6: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Program zajęćZasady zaliczenia

Zaliczenie

Szacowana liczba punktów (maks. 100):

kolokwia: 2 · (20− 25)p

prace domowe: łącznie 40− 50p

wejściówki: łącznie 10− 20p

bonus: 100% frekwencja: 2p

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 7: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Program zajęćZasady zaliczenia

Skala ocen

ocena punktydst [61 – 69)dst+ [69 – 77)db [77 – 85)db+ [85 – 93)bdb [93 – 100]

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 8: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Program zajęćZasady zaliczenia

Programy

programy będą sprawdzane na linuxie, na kompilatorze gccv4.*; jeżeli nie zadziałają, to na ultrze60, na kompilatorze gcc

program, który się nie kompiluje na żadnym otrzymuje ocenę 0

program, który usiłuje wyrządzić szkody w systemie otrzymujeocenę 0

kara 10% punktów za brak informacji o autorze i programie

kara 10% punktów za brak komentarzy w kodzie

kara 100% za plagiaty

programy można poprawiać, jeżeli nie upłynął jeszcze terminoddawania

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 9: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Program zajęćZasady zaliczenia

Pytania?

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 10: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Edytory / środowiska programistyczneWindows

Środowiska programistyczne

Eclipse CDT (Windows, linux) http://www.eclipse.org/cdt/

NetBeans IDE (for C / C++)http://netbeans.org/features/cpp/

Codeblocks (Windows, linux) http://www.codeblocks.org/

MS Visual Studio (Windows)

Bloodshed DevC++ (Windows)http://www.bloodshed.net/devcpp.html

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 11: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Edytory / środowiska programistyczneWindows

Edytory

gVim (wszędzie)

ConTexT (Windows)

Notepad++ (Windows)

gedit (linux)

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 12: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Edytory / środowiska programistyczneWindows

Skąd wziąć kompilator?

[piersaj@Yavarel ]$ yum / aptget / packman install gcc

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 13: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Edytory / środowiska programistyczneWindows

Skąd wziąć kompilator?

CodeBlocks http://www.codeblocks.org/

(ewentualnie) MinGW http://www.mingw.org/

(alternatywa) MS Visual Studio link

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 14: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Edytory / środowiska programistyczneWindows

Codeblocks

Tworzymy: Nowy projekt → Aplikacja konsolowa

Zasada: jeden program — jeden projekt

Budujemy: (Build)

Uruchamiamy: (Run)

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 15: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Edytory / środowiska programistyczneWindows

Codeblocks

Tworzymy: Nowy projekt → Aplikacja konsolowa

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 16: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Edytory / środowiska programistyczneWindows

Codeblocks

Wybieramy: Aplikacja konsolowa

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 17: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Edytory / środowiska programistyczneWindows

Codeblocks

Podajemy: nazwę projektu i lokalizację w systemie plików

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 18: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Edytory / środowiska programistyczneWindows

Codeblocks

Piszemy program

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 19: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Edytory / środowiska programistyczneWindows

Codeblocks

Kompilujemy i uruchamiamy

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 20: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Prosty wydrukWczytywanie danychWydruk zmiennej

Pierwszy program

plik.c:

/* Pierwszy program w C**/

#include <stdio.h>

int main (){// komentarz do konca liniiprintf("hello world\n");return 0;

}

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 21: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Prosty wydrukWczytywanie danychWydruk zmiennej

Jak skompilować (Linux?)

[piersaj@Yavarel ]$ gcc plik.c[piersaj@Yavarel ]$ ./a.outhello world[piersaj@Yavarel ]$

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 22: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Prosty wydrukWczytywanie danychWydruk zmiennej

Wyjaśnienie

#include <sdtio.h> — dołączenie pliku nagłówkowegodającego dostęp do instrukcji printf

int main(){...} — definicja głównej części programu

printf(...) — wydruk napisu

return 0 — zakończenie main-a

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 23: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Prosty wydrukWczytywanie danychWydruk zmiennej

Wczytywanie danych

plik.c:

#include <stdio.h>

int main (){int a = 0;printf("podaj liczbe calkowita\n");scanf("%d", &a);printf("podales liczbe %d\n", a);return 0;

} // main

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 24: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Prosty wydrukWczytywanie danychWydruk zmiennej

Wczytywanie danych

plik.c:

#include <stdio.h>

#define SIZE 32int main (){

char zm[SIZE];printf("Jak masz na imie?\n");scanf("%s", zm);printf("Milo Cie poznac , %s!\n", zm);return 0;

} // main

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 25: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Prosty wydrukWczytywanie danychWydruk zmiennej

Wyjaśnienie

int a — deklarujemy zmienną o identyfikatorze a

scanf(¨%d¨, &a) — wczytanie wartości dla zmiennej a zklawiatury

%d — zmienna będzie całkowitoliczbowa w zapisie dziesiętnym(Decimal)

%s — zmienna będzie napisowa (string) (dokładniej — tablicaznaków)

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 26: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Prosty wydrukWczytywanie danychWydruk zmiennej

Wydruk zmiennej

plik.c:

#include <stdio.h>#define SIZE 32

int main (){int a = 2;float b = 1.4;char c = ’a’;char d[SIZE]= "ala ma kota";printf("%d %.2f %c %s\n", a, b,c ,d);return 0;

} // main

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 27: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Prosty wydrukWczytywanie danychWydruk zmiennej

Wyjaśnienie

int — typ całkowitoliczbowy (formatowanie %d)

float — typ zmiennoprzecinkowy (%f)

char — typ znakowy (%c)

char zmienna[32] — tablica znaków (napis) (%s)

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 28: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Instrukcja warunkowaPętla whileCzym może być warunekPętla forPętla do

Instrukcja warunkowa

plik.c:

#include <stdio.h>

int main (){long a = 1000000000L, b = 999999999L;

if (a>b)printf("a jest wieksze\n");

else {printf("b jest wieksze\n");

}return 0;

} // main

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 29: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Instrukcja warunkowaPętla whileCzym może być warunekPętla forPętla do

Wyjaśnienie

if — obowiązkowe słowo kluczowe, pisane z małych liter

(warunek) — warunek, nawiasy są obowiązkowe

else — słowo kluczowe, klauzula jest opcjonalna

nie ma elif-a!

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 30: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Instrukcja warunkowaPętla whileCzym może być warunekPętla forPętla do

Pętla while

plik.c:

#include <stdio.h>

int main (){unsigned long a = 15L, b = 40L;

while (a<b) {printf("%ld ^2 = %4ld\n",

a, a*a);a = a+1;

} // whilereturn 0;

} // main

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 31: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Instrukcja warunkowaPętla whileCzym może być warunekPętla forPętla do

Wyjaśnienie

while — obowiązkowe słowo kluczowe, pisane z małych liter

(warunek) — warunek pętli, nawiasy są obowiązkowe

%ld — format zmiennej long (long decimal)

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 32: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Instrukcja warunkowaPętla whileCzym może być warunekPętla forPętla do

Czym może być warunek

#include <stdio.h>int main (){

long a = 1000000000L, b = 999999999L;if (a> b) printf("%d\n", 1);if (a>=b) printf("%d\n", 2);if (a<b) printf("%d\n", 3);if (a<=b) printf("%d\n", 4);if (a==b) printf("%d\n", 5);if (a!=b) printf("%d\n", 6);return 0;

} // main

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 33: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Instrukcja warunkowaPętla whileCzym może być warunekPętla forPętla do

Operatory logiczne

#include <stdio.h>int main (){

long a = 1000000000L, b = 999999999L;if (0) printf("%d\n", 1);if (a) printf("%d\n", 2);if (!a) printf("%d\n", 3);if (1 && a>b) printf("%d\n", 4);if (0 || a>b) printf("%d\n", 5);return 0;

} // main

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 34: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Instrukcja warunkowaPętla whileCzym może być warunekPętla forPętla do

Pętla for

#include <stdio.h>int main (){

int i=0, a=30;for (i=1; i<a; i=i+2){

printf("0x%02x\n", i);} // forreturn 0;

} // main

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 35: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Instrukcja warunkowaPętla whileCzym może być warunekPętla forPętla do

Wyjaśnienie

for — obowiązkowe słowo kluczowe

(instr1; warunek2; instr3 ):

instr1 — wykonywana przed pierwszym obrotem pętli

warunek2 — jeżeli jest spełniony to kontynuujemy pętlę

instr3 — wykonywana po każdym obrocie

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 36: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Instrukcja warunkowaPętla whileCzym może być warunekPętla forPętla do

Pętla do

#include <stdio.h>int main (){

int i=200, b=1;do {

printf("%3d\n", i);i -= b;b++;

} while (i >=0);return 0;

} // main

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01

Page 37: Programowanie I C / C++ laboratorium 01 --- Organizacja zajecpiersaj/www/contents/... · Składnia języka Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Organizacja zajęćŚrodowisko

Pierwszy programSkładnia języka

Instrukcja warunkowaPętla whileCzym może być warunekPętla forPętla do

Wyjaśnienie

do — obowiązkowe słowo kluczowe

while — obowiązkowe słowo kluczowe

( instrukcja ) — warunek kontynuowania pętli

J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01