Wstęp do Informatyki i Programowania



Podobne dokumenty
Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie.

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

Wstęp do Informatyki i Programowania

Praktyka Programowania

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

Podstawy programowania wykład

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Paradygmaty programowania

Wstęp do Informatyki dla bioinformatyków

Programowanie I. Wprowadzenie. Proces programowania

Podstawy programowania.

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

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

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

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA ALGORYTM. Język programowania PROGRAM. instrukcja-dla. instrukcja-przypisania.

Architektura komputerów

Wstęp do programowania

Programowanie komputerów

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

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

Technologie cyfrowe semestr letni 2018/2019

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

KARTA KURSU. Wstęp do programowania

Programowanie w języku Python. Grażyna Koba

Technologie cyfrowe semestr letni 2018/2019

Wstęp do Informatyki. Program, proces tworzenia programu Środowisko programistyczne Języki programowania

Podstawy programowania w języku C

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Informatyczna Wieża Babel, czyli o różnych językach programowania. Informatyczna Wieża Babel, czyli o różnych językach programowania

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Kierunek: Informatyka Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne. Wykład Ćwiczenia

Here comes the sun. Wyk lad niesystematyczny. Marcin Makowski. 24 października Zak lad Chemii Teoretycznej UJ

Język programowania PASCAL

15. Funkcje i procedury składowane PL/SQL

Wykład 1

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Jerzy Nawrocki, Wprowadzenie do informatyki

Języki i metodyka programowania

Język ludzki kod maszynowy

E-1EZ1-03-s2. Elektrotechnika I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

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

Niezawodne Systemy Informatyczne

Jerzy Nawrocki, Wprowadzenie do informatyki

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

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

Języki i paradygmaty programowania. I. Wprowadzenie

Języki programowania zasady ich tworzenia

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Algorytmy od problemu do wyniku

Programowanie w SQL. definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE,

PRZEWODNIK PO PRZEDMIOCIE

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Technologie informacyjne - wykład 12 -

Kierunek: Informatyka Poziom studiów: Studia I stopnia Forma studiów: Stacjonarne. audytoryjne. Wykład Ćwiczenia

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

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

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

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA Realizacja w roku akademickim 2016/17

Szczegółowy program kursów szkoły programowania Halpress

Algorytm. a programowanie -

Algorytmy i struktury danych - opis przedmiotu

Wstęp do programowania

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Podstawy Informatyki Języki programowania

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Informatyka II stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

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

Rok akademicki: 2012/2013 Kod: EAR s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Redis, skrypty w języku Lua

Technologie Informacyjne

Języki programowania Język programowania Język maszynowy Kod maszynowy

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Wykład 0 Informacje Podstawowe

Programowanie obiektowo zorientowane. Mirosław Głowacki Wykład w języku C++

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

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Przegląd języka Python. Łukasz Anwajler

Języki programowania do zastosowań biomedycznych

PROGRAM KOŁA INFORMATYCZNEGO

Algorytmy i struktury danych Metody programowania Języki i paradygmaty programowania Nazwa jednostki prowadzącej przedmiot Instytut Matematyki

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

JĘZYKI PROGRAMOWANIA

Informatyka I. Wyk lad I. Wprowadzenie. Robert Muszyński Instytut Cybernetyki Technicznej Politechnika Wroc lawska

Programowanie deklaratywne

Algorytmy. Programowanie Proceduralne 1

Opis efektów kształcenia dla modułu zajęć

Wstęp do Programowania potok funkcyjny

1 Wprowadzenie do algorytmiki

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Podstawy Programowania Algorytmy i programowanie

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

Zaawansowane metody programowania. Elementy struktury kodu - dyrektywy - biblioteki i moduły zewnętrzne - kompilacja kodu

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Transkrypt:

Wstęp do Informatyki i Programowania Jacek Cichoń Przemysław Kobylański Katedra Informatyki W11/K2 Politechnika Wrocławska J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 1 / 356

Plan wykładu 1 2 Projektowanie algorytmów 3 Elementy języka C 4 Podstawowe typy danych w C 5 Czasowa złożoność obliczeniowa 6 Rekurencja 7 Zasada dziel i zwyciężaj 8 Przeszukiwanie z nawrotami 9 Obliczenia na stosie 10 Programowanie dynamiczne 11 Systemy regułowe 12 Automaty skończone 13 Rozstrzygalność i obliczalność 14 Nierozstrzygalność i nieobliczalność 15 Klasy złożoności J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 2 / 356

Literatura Lektura podstawowa 1 S. Alagić, M.A. Arbib. Projektowanie programów poprawnych i dobrze zbudowanych. WNT,Warszawa,1982. 2 D. Harel, Y. Feldman. Rzecz o istocie informatyki. WNT, Warszawa, 2008. 3 B.W. Kernighan, D.M. Ritchie. Język ANSI C. WNT, Warszawa, 2002. Lektura uzupełniająca 1 M. Kotowski. Wysokie C. LUPUS, Warszawa, 1998. 2 A. Hunt, D. Thomas. Pragmatyczny programista. Od czeladnika do mistrza. WNT,Warszawa,2002. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 3 / 356

Wykład 1 Algorytmy + struktury danych = programy Niklaus Wirth Algorytm = logika + sterowanie Robert Kowalski J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 4 / 356

algorytm program język programowania interpreter kompilator języki algorytmiczne języki deklaratywne J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 5 / 356

Algorytm Algorytm = opis sposobu postępowania Abū Abdallāh Muhammad ibn Mūsā al-khwārizmī (780-850 n.e., Persja) J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 6 / 356

Program Program = formalny zapis algorytmu Program składa się z ciągu operacji jakie ma wykonać komputer. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 7 / 356

Język programowania program zapisany jest w języku programowania każdy komputer zna tylko jeden język programowania swój własny język maszynowy wykaz ok. 2500 języków programowania: http://people.ku.edu/~nkinners/langlist/extras/langlist.htm aby komputer mógł wykonać program w innym języku niż maszynowy potrzebna jest interpretacja programu albo jego kompilacja na język maszynowy J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 8 / 356

Interpreter Przykład w języku BASIC 1 : 10 FOR I=1 TO 10 20 PRINT I 30 NEXT I Instrukcja PRINT I jest analizowana dziesięciokrotnie. 1 Język programowania opracowany przez Johna Kemeny i Thomasa Kurtza w roku 1964. Jego nazwa jest akronimem Beginner s All-Purpose Symbolic Instruction Code. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 9 / 356

Interpreter Przykłady zastosowania interpreterów: powłoki systemów operacyjnych (np. bash w Linuxie), języki skryptowe (np. PHP i Javascript), języki operujące na napisach (np. Perl) języki obiektowe z dynamicznym typowaniem (np. Python i Ruby), kalkulatory programowalne J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 10 / 356

Kompilator Translator = program tłumaczący język programowania na język maszynowy Kompilator = program konsolidujący przekład z funkcjami bibliotecznymi J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 11 / 356

Języki algorytmiczne Algorytmy + struktury danych = programy Język algorytmiczny = język programowania, w którym wyraża się algorytm Główne cechy: zmienne będące miejscem przechowywania danych instrukcja przypisania zestaw instrukcji sterujących (np. warunkowe oraz iteracji) J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 12 / 356

Języki algorytmiczne: Fortran FORmula TRANslator (1954; najnowszy standard 2008) DO 10 I=1, 10 PRINT 2, I 10 CONTINUE J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 13 / 356

Języki algorytmiczne: Fortran (przykład z sondy Mariner 1) IF (TVAL.LT. 0.2E-2) GOTO 40 DO 40 M = 1, 3 W0 = (M-1)*0.5 X = H*1.74533E-2*W0 DO 20 N0 = 1, 8 EPS = 5.0*10.0**(N0-7) CALL BESJ(X, 0, B0, EPS, IER) IF (IER.EQ. 0) GOTO 10 20 CONTINUE DO 5 K = 1. 3 T(K) = W0 Z = 1.0/(X**2)*B1**2+3.0977E-4*B0**2 D(K) = 3.076E-2*2.0*(1.0/X*B0*B1+3.0977E-4* *(B0**2-X*B0*B1))/Z E(K) = H**2*93.2943*W0/SIN(W0)*Z H = D(K)-E(K) 5 CONTINUE 10 CONTINUE Y = H/W0-1 40 CONTINUE J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 14 / 356

Języki algorytmiczne: C Dennis Ritchie z AT&T Bell Laboratories (1971) for(i=1; i <= 10; i++) printf("%d\n", i); J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 15 / 356

Języki algorytmiczne: C (przykład literówki) Przykład programu zawierającego błąd: x = 10.0; while(x > 2,3) { printf("%f\n", x); x = x - 0.1; } J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 16 / 356

Języki algorytmiczne: Ada Język na zamówienie Departamentu Obrony Stanów Zjednoczonych (1979; najnowszy standard 2012) for I in 1..10 loop put(i); new_line; end loop; Samolot Boeing 777 jest w 99% oprogramowany w języku Ada: http://archive.adaic.com/projects/atwork/boeing.html J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 17 / 356

Języki algorytmiczne: Ada 2012 (przykład weryfikacji poprawności kodu) x = x gdy x < 0 x gdy x 0 Funkcja w C z biblioteki glibc obliczająca wartość bezwzględną liczby całkowitej: int absolute(int x) { return x < 0? -x : x; } Czy powyższa funkcja jest poprawna? J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 18 / 356

Języki algorytmiczne: Ada 2012 (przykład weryfikacji poprawności kodu) package absolute is function av(x: in Integer) return Integer with post => av Result >= 0; end absolute; package body absolute is function av(x: in Integer) return Integer is begin return (if x < 0 then -x else x); end av; end absolute; Wynik analizy programem GNATprove: analyzing absolute.av, 2 checks absolute.adb:6:29: overflow check not proved [overflow_check] absolute.ads:4:14: postcondition not proved, requires av Result >= 0 [postcondition] J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 19 / 356

Języki algorytmiczne: Python Interpretowany język programowania obiektowego z dynamicznym typowaniem (1991) for i in range(10): print(i) Powyższa pętla drukuje wartości od 0 do 9 gdyż właśnie taki zakres jest wartością funkcji range(10). J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 20 / 356

Języki deklaratywne Język deklaratywny = język programowania, w którym opisuje się problem Algorytm = logika + sterowanie J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 21 / 356

Języki deklaratywne: SQL Język zapytań do relacyjnych baz danych (lata 70-te XX wieku) SELECT CompanyName, ContactName FROM customers WHERE CompanyName LIKE a% W wyniku wykonania powyższej instrukcji zostają odnalezione w bazie costumers informacje o CompanyName i ContactName, przy czym nazwa firmy powinna zaczynać się od litery a. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 22 / 356

Języki deklaratywne: Prolog PROgramming in LOGic (Alain Colmerauer 1972) Język programowania logicznego: lubi(przemko, programowanie). lubi(przemko, X) :- lubi(x, programowanie). Na pytanie co lub kogo lubi Przemko są dwie odpowiedzi:?- lubi(przemko, X). X = programowanie ; X = przemko ; no Z powodu przyjętej w Prologu zasady zamkniętego świata nie ma innych odpowiedzi, bo prawdziwe jest tylko to, co wyrażono w programie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 23 / 356