Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
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
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
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
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
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
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
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
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
Organizacja zajęćŚrodowisko
Pierwszy programSkładnia języka
Program zajęćZasady zaliczenia
Pytania?
J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01
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
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
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
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
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
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
Organizacja zajęćŚrodowisko
Pierwszy programSkładnia języka
Edytory / środowiska programistyczneWindows
Codeblocks
Wybieramy: Aplikacja konsolowa
J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01
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
Organizacja zajęćŚrodowisko
Pierwszy programSkładnia języka
Edytory / środowiska programistyczneWindows
Codeblocks
Piszemy program
J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01
Organizacja zajęćŚrodowisko
Pierwszy programSkładnia języka
Edytory / środowiska programistyczneWindows
Codeblocks
Kompilujemy i uruchamiamy
J. Piersa Pr. C/C++ 2012/2013 Laboratorium 01
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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