JĘZYKI PROGRAMOWANIA



Podobne dokumenty
Stefan Sokołowski JĘZYKIPROGRAMOWANIA. Inst. Informatyki UG, Gdańsk, 2012/2013

JĘZYKIFORMALNE IMETODYKOMPILACJI

Wykład I. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Języki i metodyka programowania. Wprowadzenie do języka C

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

JĘZYKI FORMALNE I METODY KOMPILACJI

Podstawy programowania C. dr. Krystyna Łapin

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Praktyka Programowania

Języki i paradygmaty programowania

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Operatory w C++ Operatory arytmetyczne. Operatory relacyjne (porównania) Operatory logiczne. + dodawanie - odejmowanie * mnożenie / dzielenie % modulo

Podstawy Programowania Podstawowa składnia języka C++

Jerzy Nawrocki, Wprowadzenie do informatyki

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

PODSTAWY PROGRAMOWANIA STRUKTURALNEGO (C) SYLABUS A. Informacje ogólne

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane:

Proste algorytmy w języku C

Deklaracje. W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane:

Jerzy Nawrocki, Wprowadzenie do informatyki

Podstawy programowania strukturalnego (C) SYLABUS A. Informacje ogólne

Błędy leksykalne są na ogół nietrudne do znalezienia.

operator zmiany znaku operatory mnożenia, dzielenia, dzielenia modulo operatory dodawania, odejmowania

Wykład 1

wykład I uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Wstęp do języka C wykład I dr Jarosław Mederski Spis Ogólne informacje

PROGRAMOWANIE w C prolog

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Spis treści JĘZYK C - OPERATORY BITOWE. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32

ZAAWANSOWANE JĘZYKI PROGRAMOWANIA

dr inż. Jarosław Forenc

Podstawy programowania skrót z wykładów:

1 Podstawy c++ w pigułce.

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Język C część 1. Sformułuj problem Zanalizuj go znajdź metodę rozwiązania (pomocny może byd algorytm) Napisz program Uruchom i przetestuj czy działa

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Podstawy programowania w języku C i C++

Wykład 2 Składnia języka C# (cz. 1)

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Języki i metody programowania. Omówienie języków C, C++ i Java

Język ludzki kod maszynowy

Programowanie komputerowe. Zajęcia 1

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

Spis treści JĘZYK C - OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE, INSTRUKCJA WARUNKOWA IF. Informatyka 1

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

JĘZYKI FORMALNE I METODY KOMPILACJI

Podstawy programowania w języku C

Rodzaje błędów w programach. Wykład9.UWAGIOGÓLNE,str.1

Spis treści JĘZYK C - INSTRUKCJA WARUNKOWA IF, OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE, ZAGNIEŻDŻANIE IF-ELSE.

Warunki logiczne instrukcja if

KARTA PRZEDMIOTU. Egzamin / zaliczenie. Egzamin / zaliczenie. ocenę*

Spis treści JĘZYK C - INSTRUKCJA WARUNKOWA IF, OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE. Metodyki i techniki programowania

Wstęp do wskaźników w języku ANSI C

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy WSKAŹNIKI KLASOWE

Informatyka- wykład. Podstawy programowania w Pythonie. dr Marcin Ziółkowski

Język C zajęcia nr 11. Funkcje

Spis treści JĘZYK C - INSTRUKCJA WARUNKOWA IF, OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE. Informatyka 1

Część 4 życie programu

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Podstawy Programowania C++

2 Przygotował: mgr inż. Maciej Lasota

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Programowanie I C15

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 4. Karol Tarnowski A-1 p.

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Wstęp do Informatyki i Programowania (kierunek matematyka stosowana)

( wykł. dr Marek Piasecki )

Etapy kompilacji. Wykład 7. Przetwarzanie wstępne, str. 1. #define ILE for(i=0; i<ile; i++)...

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Elementarne wiadomości o języku C

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Odczyt danych z klawiatury Operatory w Javie

Wstęp do programowania Laboratorium - wytyczne

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Struktura pliku projektu Console Application

Spis treści JĘZYK C - INSTRUKCJA SWITCH, OPERATORY BITOWE. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF05

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

Jerzy Nawrocki, Wprowadzenie do informatyki

Programowanie obiektowe

Programowanie strukturalne i obiektowe

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

3. Instrukcje warunkowe

Podstawy Programowania 1 Wstęp. Plan. Informacje organizacyjne. Bibliografia Literatura Podstawowa. Notatki. Notatki. Notatki.

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 3. Instrukcje wyboru

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

dr inż. Jarosław Forenc

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

Transkrypt:

Stefan Sokołowski JĘZYKI PROGRAMOWANIA Inst Informatyki UG, Gdańsk, 2014/2015 Wykład1OGÓLNEINFORMACJEOC,str1 JĘZYKI PROGRAMOWANIA reguły gry Zasadnicze informacje: http://infugedupl/ stefan/dydaktyka/jezprog szkicowy program wykładu i laboratorium spis literatury slajdydowykładów wartorobićnotatki ale nie warto przepisywać slajdów z ekranu zadania z laboratorium w mojej grupie itd

Wykład1OGÓLNEINFORMACJEOC,str2 JĘZYKI PROGRAMOWANIA reguły gry Kontakt ze mną: konsultacje: wtorki 14:15 15:00 w pok 57 e-mail: ssokolowski@infugedupl antyspam: unikać frikoprowajderów, np: o2pl wppl gazetapl najlepiej używać konta mailowego w II UG Zaliczenie przedmiotu: zaliczenie laboratorium, egzamin, znajdowanie błędów w wykładzie Najłatwiej jest zaliczyć laboratoria przez sprawdziany Zaliczenie przez rozbójnika na koniec semestru jest trudniejsze Laboratorium musi być zaliczone przed egzaminem Ramowy program Wykład1OGÓLNEINFORMACJEOC,str3 językc szczegółowo podstawowa książka: K&R, czyli Kernighan BW, Ritchie DM Język ANSI C Wydawnictwa Naukowo-Techniczne, Warszawa 2003 ISBN 83-204-2804-1 Należy ją samodzielnie czytać! językphp podstawy programowanie grafiki informacyjnie Będę oczekiwał od słuchaczy napisania wielu drobnych programów, sprawdzających cechy praktycznych realizacji omawianych języków

Historia C Wykład1OGÓLNEINFORMACJEOC,str4 1971: pierwsza wersja C, Ken Thompson& Dennis Ritchie 1972: system operacyjny UNIX napisany w C, Ken Thompson& Dennis Ritchie 1978: The C Programming Language, Brian Kernighan& Dennis Ritchie podręcznik języka, służący jako jego nieformalna specyfikacja 1989: standaryzacja języka C89, American National Standards Institute 1999: poprawiona standaryzacja języka C99, American National Standards Institute 2011: następna poprawiona standaryzacja języka C11, American National Standards Institute Dlaczego trzeba znać C? Wykład1OGÓLNEINFORMACJEOC,str5 najbardziej rozpowszechniony język programowania ogólnego zastosowania, stosunkowo prosty, więc nietrudny do nauczenia się, pozwala programować blisko maszyny, czyli pisać bardzo wydajne programy(ale to jest żmudne), większość współczesnych języków programowania ma zewnętrzną składnię wzorowaną na C(mimo głębokich różnic) Wady C: niektóre jego cechy stoją w sprzeczności z naturalną intuicją i logiką, słabo wspiera programistę w poszukiwaniu i poprawianiu błędów Łacina jest piękniejsza i logiczniejsza od angielskiego, ale dzisiaj można nie znać łaciny, a trzeba znać angielski

Wykład1OGÓLNEINFORMACJEOC,str6 Hierarchia bytów w języku programowania WYRAŻENIA WARUNKI LOGICZNE KOMENDY MODUŁY WYRAŻENIA reprezentujące wartości(arytmetyczne i inne) Np x, 0, x+y WARUNKI LOGICZNE reprezentujące relacje między wartościami(spełnione lub nie) Np x<0 KOMENDY nakazujące dokonanie zmiany stanu (np zmiany wartości zmiennych) Np if(x<0) x=-x; MODUŁY stanowiące autonomiczne zestawy komend wykonujące pewną logicznie zamkniętą czynność Np double wartbezwzgl(doublex) { if(x<0) x=-x; return x; Hierarchia bytów w C Wykład1OGÓLNEINFORMACJEOC,str7 Wszystko poplątane WARUNKI LOGICZNE są również WARTOŚCIAMI, w dodatku całkowitymi warunek jest spełniony, jeśli ma wartość różną od zera; warunek jest niespełniony, jeśli ma wartość zero Np komenda if traktuje test-1 jako spełniony; a test 0 jako niespełniony M#include<stdioh> if(-1) printf(" spelniony\n"); else printf(" niespelniony\n"); drukuje spelniony chociaż w zasadzie nie powinno się uzależniać drogi w programie od liczby

Hierarchia bytów w C Wykład1OGÓLNEINFORMACJEOC,str8 Wszystko poplątane WARUNKI LOGICZNE są również WARTOŚCIAMI, w dodatku całkowitymi warunek jest spełniony, jeśli ma wartość różną od zera; warunek jest niespełniony, jeśli ma wartość zero Npwarunek0>1mawartość0;awarunek0<=1mawartośćróżnąodzera M#include<stdioh> printf(" 1+(0>1) ==%i\n", 1+(0>1)); printf(" 1+(0<=1) ==%i\n", 1+(0<=1)); drukuje 1+(0>1)==1 1+(0<=1) == 2 chociaż warunków logicznych w zasadzie nie powinno się dodawać do liczb Hierarchia bytów w C Wykład1OGÓLNEINFORMACJEOC,str9 Wszystko poplątane KOMENDY również mają WARTOŚCI wartością przypisania x = wyr; jest wartość wyrażenia wyr; wartością komendy czytania jest liczba wczytanych rzeczy; wartością komendy drukowania jest liczba wydrukowanych znaków M#include<stdioh> double x; printf("wartosckomendyx=05;:%lf\n",x=05); drukuje wartosckomendyx=05;:0500000 chociaż w zasadzie komendy powinno się wykonywać, a nie drukować

Hierarchia bytów w C Wykład1OGÓLNEINFORMACJEOC,str10 Wszystko poplątane KOMENDY również mają WARTOŚCI wartością przypisania x = wyr; jest wartość wyrażenia wyr; wartością komendy czytania jest liczba wczytanych rzeczy; wartością komendy drukowania jest liczba wydrukowanych znaków M#include<stdioh> intn;doublex,y; n=scanf("%lf%lf",&x,&y); printf(" wartosc komendy czytania:%i\n", n); drukuje wartosc komendy czytania: 2 chociaż w zasadzie czytanie jest czynnością a nie wartością Hierarchia bytów w C Wykład1OGÓLNEINFORMACJEOC,str11 Wszystko poplątane KOMENDY również mają WARTOŚCI wartością przypisania x = wyr; jest wartość wyrażenia wyr; wartością komendy czytania jest liczba wczytanych rzeczy; wartością komendy drukowania jest liczba wydrukowanych znaków M#include<stdioh> intk; k=printf("123456789\n"); printf(" wartosc komendy drukowania:%i\n", k); drukuje 123456789 wartosc komendy drukowania: 11 chociaż w zasadzie drukowanie również jest czynnością a nie wartością

Wykład1OGÓLNEINFORMACJEOC,str12 Typy wyrażeń całkowity int int 012 - +-*/% ==!=<><=>= Wykład1OGÓLNEINFORMACJEOC,str13 Typy wyrażeń rzeczywisty double double int 001 1231 602E-23 -fabsfloorsqrtlogexpsincostan +-*/pow ==!=<><=>=

Wykład1OGÓLNEINFORMACJEOC,str14 Typy wyrażeń znakowy char a W @ char ==!=<><=>= int Wykład1OGÓLNEINFORMACJEOC,str15 Jawne konwersje typów(rzutowania) (int) (char) double int char (double) (int) M (int)(char)(int)357 = =(int)(char)35 =(int) # =35

Niejawne konwersje typów Wykład1OGÓLNEINFORMACJEOC,str16 int double Prawie w każdym kontekście, w którym dopuszczalna jest wartość rzeczywista, można użyć wartości całkowitej Np double x; x=1; powoduje zamianę wartości całkowitej 1 na rzeczywistą 10, potem przypisanie tej rzeczywistej wartości zmiennej x Wyjątek: printf("%lf\n", 1); działa błędnie char int Jak wyżej Ale printf("%i\n", a ); nie drukuje znaku a tylko liczbę97(kodasciiznakua) OinnychtypachwCbędziejeszczemowa Wykład1OGÓLNEINFORMACJEOC,str17 Priorytety i łączność operatorów w C Ponieważ wszystko ma wartość, do wszystkiego można stosować operacje, trzeba tylko wiedzieć, jakie są ich priorytety MCo wydrukuje ten program? #include<stdioh> intx,y; x=0; y=1; if(x==y+y) printf(" TAK\n"); elseprintf("nie\n"); Czy test x==y+y oznacza (x==y)+y? wtedy TAK,czy x==(y+y)? wtedy NIE

Wykład1OGÓLNEINFORMACJEOC,str18 Priorytety i łączność operatorów w C(K&R, str82) Priorytet Operatory Łączność wysoki () [] ->! ++ -- + - * & (typ) sizeof prawostronna * / % + - << >> < <= > >= ==!= & ^ &&?: prawostronna = += -= *= /= %= ^= = <<= >>= prawostronna niski, Ponieważ priorytet porównania == jest niższy od priorytetu dodawania +, test x==y+y oznacza x==(y+y) Wykład1OGÓLNEINFORMACJEOC,str19 Priorytety i łączność operatorów w C Ponieważ wszystko ma wartość, do wszystkiego można stosować operacje, trzeba tylko wiedzieć, jakie są ich priorytety MCo wydrukuje ten program? #include<stdioh> printf(" 4-2-1 ==%i\n", 4-2-1); Czy wyrażenie 4-2-1 oznacza (4-2)-1? wtedy 1,czy 4-(2-1)? wtedy 3

Wykład1OGÓLNEINFORMACJEOC,str20 Priorytety i łączność operatorów w C(K&R, str82) Priorytet Operatory Łączność wysoki () [] ->! ++ -- + - * & (typ) sizeof prawostronna * / % + - << >> < <= > >= ==!= & ^ &&?: prawostronna = += -= *= /= %= ^= = <<= >>= prawostronna niski, Ponieważ odejmowanie - łączy do lewej, wyrażenie 4-2-1 oznacza (4-2)-1 ijegowartościąjest 1 Wykład1OGÓLNEINFORMACJEOC,str21 Priorytety i łączność operatorów w C Trzebauważać MCo wydrukuje ten program? #include<stdioh> if(! 1==2) printf(" nierowne\n"); else printf(" rowne\n"); Jesteśmy skłonni tak czytać: Jeśli nieprawdą jest, że 1==2, to drukować nierowne, w przeciwnym razie drukować rowne Ponieważ 1==2 jest nieprawdą, więc powinno zostać wydrukowane nierowne Tymczasem: Program drukuje rowne!

Wykład1OGÓLNEINFORMACJEOC,str22 Priorytety i łączność operatorów w C(K&R, str82) Priorytet Operatory Łączność wysoki () [] ->! ++ -- + - * & (typ) sizeof prawostronna * / % + - << >> < <= > >= ==!= & ^ &&?: prawostronna = += -= *= /= %= ^= = <<= >>= prawostronna niski, Ponieważ priorytet negacji! jest wyższy niż priorytet równości ==, test! 1==2 oznacza (!1)==2 i jego wartością jest fałsz Wykład1OGÓLNEINFORMACJEOC,str23 Priorytety nie rozstrzygają wszystkich wątpliwości MJaką wartość komenda y =(x=1)+(x=2); nada zmiennej y? x 2 y 4 x=1; x=2; y=x+x; x 1 y 2 x=2; x=1; y=x+x; x 1 1 x 2 2 y 3 x=1; x=2; y=x+x; Testnamoimkomputerzedaje4,alenainnychmożebyćinaczej MCzy komenda i=0; a[i]=(i=i+1); wpisze 0 czy 1, do a[0] czy doa[1]? Testnamoimkomputerzedaje1wa[1],alenainnychmożebyćinaczej

Programowanie trickowe Wykład1OGÓLNEINFORMACJEOC,str24 Programowanie trickowe polega na wykorzystywaniu dziwacznych własnoći języka lub kompilatora, takie jak naruszanie naturalnej hierarchii logicznej, naruszanie dyscypliny typów, korzystanie z komend o nieustalonej kolejności wykonania itp takiego programowania należy zdecydowanie unikać Program ma nie tylko działać, powinien jeszcze być zrozumiały dla innych programistów, łatwy do zmieniania, łatwy do przeniesienia na inne platformy, skalowalny czyli łatwy do zatosowania z większymi danymi, itd Wykład1OGÓLNEINFORMACJEOC,str25 Operatory charakterystyczne dla C ++,-- dodanie(odjęcie) jedynki od zmiennej całkowitej; n++ oznacza n=n+1,n-- oznacza n=n-1 Np a[n++]=0; oznacza a[n]=0; n=n+1; a[++n]=0; oznacza n=n+1; a[n]=0; Toniejesttosamo! +=,-=,*=,/=,%= połączenie operacji z przypisaniem; Np n+=1 oznacza n=n+1 lubn++ n*=4 oznacza n=n*4 &,,, ˆ,<<,>> operacjebitowe(koniunkcja,alternatywa,negacja, różnica symetryczna, przesunięcia)