O (o)programowaniu. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

Podobne dokumenty
Programowanie komputerów

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Języki programowania zasady ich tworzenia

Technologie informacyjne - wykład 12 -

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

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

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

Podstawy programowania

Programowanie w języku C++ Grażyna Koba

Podstawy Informatyki Języki programowania

Lokalizacja Oprogramowania

Translacja wprowadzenie

Programowanie w języku Python. Grażyna Koba

Technika mikroprocesorowa. Struktura programu użytkownika w systemie mikroprocesorowym

Języki i metodyka programowania

Programowanie w C. dr inż. Stanisław Wszelak

Algorytmy od problemu do wyniku

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

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


Java EE produkcja oprogramowania

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

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy


SOFTWARE CZYLI WSZYSTKO O OPROGRAMOWANIU

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU

Informatyka. Michał Rad

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Metody Kompilacji Wykład 1 Wstęp

Podstawy programowania. Wprowadzenie

Środowiska i platformy programistyczne

Zapisywanie algorytmów w języku programowania

NAZWA PRZEDMIOTU/MODUŁU KSZTAŁCENIA:

Wprowadzenie do programowania

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

Podstawy programowania wykład

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

Język programowania PASCAL

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU

PRZEWODNIK PO PRZEDMIOCIE

Definicje. Algorytm to:

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

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

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Architektura komputerów

Wprowadzenie: języki, symbole, alfabety, łańcuchy Języki formalne i automaty. Literatura

biegle i poprawnie posługuje się terminologią informatyczną,

PRZEWODNIK PO PRZEDMIOCIE

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

Podstawy Informatyki Języki programowania c.d.

Rok akademicki: 2014/2015 Kod: CCB s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Diagramy ERD. Model struktury danych jest najczęściej tworzony z wykorzystaniem diagramów pojęciowych (konceptualnych). Najpopularniejszym

TEST KOŃCOWY DLA KLASY III GIMNAZJUM- POGRAMOWANIE. Szkoła Podstawowa Nr 5. im. Księcia Mazowieckiego Siemowita IV w Gostyninie.

rozdział 1: PROGRAMOWANIE

Wstęp do Informatyki. Klasyfikacja oprogramowania

Informatyka Informatics

Spis treści. Podstawy posługiwania się komputerem

INFORMATYKA Informatics. forma studiów: studia stacjonarne. Liczba godzin/tydzień: 2W, 2L PRZEWODNIK PO PRZEDMIOCIE

14. Przedmiot: N/PM2012/11/14/I1 INFORMATYKA moduł 1 Semestr. Liczba tygodni Liczba godzin w tygodniu Liczba godzin w semestrze ECTS

Kierunek:Informatyka- - inż., rok I specjalność: Grafika komputerowa, Inżynieria oprogramowania, Technologie internetowe

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu.

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++

Logika dla socjologów Część 2: Przedmiot logiki

Wstęp do programowania

Algorytm. a programowanie -

EGZAMIN MATURALNY Z INFORMATYKI CZERWIEC 2011 POZIOM PODSTAWOWY CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

Aplikacje w środowisku VBA. Visual Basic for Aplications

INFORMATYKA TECHNICZNA Badanie możliwości wykorzystania języka AutoLISP i środowiska VisualLISP w systemie CAx

Wymagania - informatyka

Podstawy programowania. Wykład 1 Wstęp. Krzysztof Banaś Podstawy programowania 1

Języki i paradygmaty programowania - 1

Podstawy programowania

INŻYNIERIA OPROGRAMOWANIA

Program nauczania informatyki w gimnazjum Informatyka dla Ciebie. Modyfikacja programu klasy w cyklu 2 godzinnym

Algorytmika i pseudoprogramowanie

S YSTEM O PERACYJNY L INUX W PARCOWNI

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Historia modeli programowania

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

Aplikacje biurowe pakiet Microsoft Office kurs podstawowy

SIGMA KWADRAT. Wykorzystanie programu MS Excel do opracowań statystycznych CZWARTY LUBELSKI KONKURS STATYSTYCZNO-DEMOGRAFICZNY

Wykorzystanie programu MS Excel do opracowań statystycznych

KONSTRUKCJA KOMPILATORÓW

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Podstawa programowa Technik informatyk PODSTAWA PROGRAMOWA KSZTAŁCENIA W ZAWODZIE TECHNIK INFORMATYK SYMBOL CYFROWY 312[01]

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Wstęp do Informatyki dla bioinformatyków

WPROWADZENIE DO UML-a

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

Informatyka. dr inż. Paweł A. Mazurek

KARTA PRZEDMIOTU. wyjaśnia podstawy budowy i obsługi komputera. przetwarza dokumenty w formie elektronicznej. nakład

Transkrypt:

O (o)programowaniu R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski www.il.pw.edu.pl/~rg s-rg@siwy.il.pw.edu.pl

Próba klasyfikacji Nie jest możliwa jednoznaczna klasyfikacja oprogramowania! Oto jedna z wielu subiektywnych prób:! systemy operacyjne,! oprogramowanie narzędziowe,! języki programowania,! programy aplikacyjne. 2 10

Systemy operacyjne Systemy operacyjne (dla komputerów PC)! DOS! Windows 95, 98, Millenium! Windows NT, 2000, XP! OS/2! Linux 3 10

Oprogramowanie narzędziowe Oprogramowanie narzędziowe staje się coraz częściej składową systemu operacyjnego Oprogramowanie narzędziowe! nakładki na system operacyjny ułatwiające niezbyt wprawnym użytkownikom posługiwanie się komputerem! bardziej zaawansowane programy służące zaawansowanym użytkownikom do szczegółowej diagnostyki sprzętu. 4 10

Generacje języków (1) Języki programowania są to (w pewnym uproszczeniu) narzędzia, które umożliwiają tworzenie nowych programów.! I generacja -języki poziomu maszynowego (MLL, Machine Level Languages) powstały wraz z narodzinami pierwszych komputerów; wymagały od programistów pracy na poziomie pojedynczych bitów.! II generacja -języki symboliczne określane mianem języków niskiego poziomu (Intermediate Level Languages) powstały jako ułatwienie pracy programisty; są one nadal językami zorientowanymi maszynowo, ich używanie jest już jednak znacznie prostsze. 5 10

Generacje języków (1)! III generacja -języki wysokiego poziomu (High Level Languages) są to języki ogólnego przeznaczenia o dużym stopniu uniwersalności; ich rozwój ewoluował w kierunku języków problemowo zorientowanych.! IV generacja -użytkownik komputera czasami jest też programistą! " języki arkuszy kalkulacyjnych, " systemy zarządzania bazami danych, " systemy graficzne " systemy ekspertowe i oprogramowanie zintegrowane! V generacja: wizualny (graficzny) interfejs, by stworzyć kod źródłowy, kompilowany zwykle kompilatorem języka 3. czy 4. generacji: VisualAge for Java, Visual C++ 6 10

Rozwiązanie zadania Celem wielu działań jest rozwiązanie zadania. Na proces ten składa się wiele różnych powiązanych ze sobą pojęć takich jak:! metoda, która będzie stosowana,! plan stosowania tej metody w konkretnym zadaniu,! opis czynności wykonywanych podczas realizacji planu,! wynik końcowy wykonywanych czynności. Dodatkowymi istotnymi elementami rozwiązania zadania są:! dowód poprawności zbudowanego rozwiązania (zarówno każdego kroku z osobna, jak i też kroków wykonywanych w określonym porządku),! stwierdzenie jednoznaczności rozwiązania. 7 10

Algorytm 8 10 W każdym przepisie możemy wyróżnić:! opis obiektów (prostych i złożonych)! opis czynności prostych i złożonych, które możemy rozpisać na proste. Algorytm to opis obiektów łącznie z opisem czynności, które należy wykonać z tymi obiektami aby osiągnąć określony cel. Każdy algorytm powinien być zapisany w notacji zrozumiałej! dla programisty (zapis konkretnego algorytmu w określonej notacji)! dla komputera (ciąg rozkazów zrozumiałych przez procesor).

Język programowania Oba te wymogi reprezentują dwa przeciwstawne bieguny:! to co jest zrozumiałe dla programisty jest nieczytelne dla procesora! ciągi rozkazów procesora są zrozumiałe jedynie dla bardzo wprawnych programistów. Język programowania jest zbiorem odpowiednich konwencji umożliwiających komunikatywność algorytmu. Algorytm wyrażony w języku programowania to program. Implementacja to realizacja języka programowania dla określonego komputera lub systemu operacyjnego. 9 10

Translacja: kompilacja Proces tłumaczenia (translacji) programu może przyjąć postać:! kompilacji! interpretacji. Kompilacja to proces tłumaczenia programu źródłowego napisanego w języku programowania na równoważny mu program (kod) wynikowy w języku maszynowym maszyny docelowej, na której będzie on wykonywany.! tłumaczenia tego dokonuje program zwany kompilatorem;! istnieją kompilatory jednoprzebiegowe i wieloprzebiegowe. 10 10

Translacja: kompilacja Proces tłumaczenia (translacji) programu może przyjąć postać:! kompilacji! interpretacji. Interpretacja polega na wykonywaniu programu źródłowego przez interpreter linia po linii.! Nie jest on nigdy tłumaczony w całości. Czysta interpretacja jest procesem jednostopniowym.! Zapewnia ona większa elastyczność, jest jednak procesem wielokrotnie wolniejszym. 11 10

Programowanie Podstawowym celem każdego języka programowania jest pomoc w budowie programu (programowaniu) w sferze:! projektowania programu (zakres programu, specyfikacja danych);! przejrzystości (wyrażanie akcji w sposób zrozumiały); dokumentacja powinna być integralną częścią procesu programowania; program powinien być zapisany czytelnie, aby umożliwić jego konserwację i dokonywanie w nim poprawek i rozszerzeń;! weryfikacji (łatwość określania poprawności i testowania). 12 10

Implementacja komputerowa Problem implementacji komputerowej łączy się z następującymi sprawami:! dostępnością (dla jakich maszyn i systemów operacyjnych istnieją kompilatory danego języka);! bibliotekami (czy istnieje wsparcie w postaci gotowych podprogramów);! efektywnością (czy kompilator działa szybko i czy produkuje efektywny kod wynikowy);! dokumentacją (czy istnieje precyzyjny opis lub norma języka i dokumentacja kompilatora). 13 10

Syntaktyka i semantyka Syntaktyka języka programowania (składnia) zajmuje się formą pisania programów i jest zbiorem reguł, które definiują sposób konstruowania łańcuchów symboli.! dopuszczalne zbiory łańcuchów nazywamy programami poprawnymi syntaktycznie. Semantyka zajmuje się znaczeniem programów, czyli tym, co się się dzieje podczas wykonywania programów.! reguły semantyczne języka definiują zbiór programów poprawnych semantycznie, a także błędy semantyczne. 14 10

Syntaktyka ~ semantyka Ciąg znaków (instrukcji, zdań) poprawny składniowo (syntaktycznie) może się okazać błędny semantycznie (jest to widoczne podczas wykonywania programu). Granica pomiędzy składnią a semantyka nie jest ściśle i jednoznacznie zdefiniowana. Treść programu może być pisana w formatach:! stałym (od określonej kolumny, odstępy nie mają znaczenia!!!! swobodnym (odstępy są istotnym elementem). 15 10

Zakończenie programu Rozróżnia się trzy warianty zakończenia działania programu:! poprawne zakończenie! przerwanie wykonywania na skutek błędu,! proces nieskończony. 16 10

Komentarze Dla uzyskania komunikatywnego przedstawienia algorytmów programista musi mieć możliwość robienia bezpośrednio w programie adnotacji (komentarzy). Możliwe są różne konwencje pisania w programie komentarzy:! rozpoczęcie komentarza w z góry zadanej kolumnie - obejmuje on wówczas wszystkie znaki do końca wiersza;! użycie specjalnego symbolu, oznaczającego, że wiersz jest komentarzem;! rozpoczęcie i kończenie komentarza symbolami specjalnymi. 17 10

Historia programowania Do 1954 większość programów pisano w języku maszynowym. W następnych latach kody operacji zastąpiono nazwami mnemotechnicznymi (mnożenie MPY - MultiPlY). Kolejny etap to zastąpienia nazwami wartości adresów. Tak napisane w postaci symbolicznej programy były tłumaczone na język maszynowy za pomocą programu zwanego asemblerem. Pisanie programów w języku maszynowym lub symbolicznym określa się mianem kodowania. To co robimy współcześnie (programowanie) obejmuje dodatkowo konstrukcję algorytmu. 18 10

Języki programowania (1) 19 10 Praojcem języków programowania wysokiego poziomu był język Plankakul (1945, Konrad Zuse). Twórca pierwszego kompilatora (1952 Grace Hopper). FORTRAN (FORmula TRANslation) został opracowany w latach 1954-57 przez Backhusa i jego grupę.! Jego celem było automatyczne tłumaczenie różnych wzorów matematycznych. COBOL (Common Business Oriented Language) to język programowania rozwiązujący problemy z rachunkowości i ekonomii.! Stworzony został do przetwarzania dużej liczby danych.

Języki programowania (2) 20 10 Algol (ALGOrythmic Language, ALGEbraic Oriented Language) powstał jako wspólne dzieło Wirtha i Hoare na gruncie pewnych idei FORTRANU;! przeznaczony jest również do obliczeń numerycznych, ale jego możliwości są szersze BASIC (Beginner s All-purpose Symbolic Instruction Code)! jest uniwersalnym językiem programowania dla początkujących Pascal został stworzony przez Wirtha w 1969 na gruncie pewnych idei Algolu! jest językiem zwięzłym o przejrzystej gramatyce C (1972), którego twórcą jest Ritchie! łączy ze sobą właściwości asemblerów i dobre cechy języków wysokiego poziomu

Uczenie się języków Uczenie się i poznawanie języka programowania może się odbywać w jeden z przeciwstawnych sposobów:! podejście syntetyczne (bottom-up), od podstaw; rozpoczyna się od pojęć podstawowych, takich jak typy, identyfikatory, liczby;! podejście analityczne (top-down) rozpoczyna się od konstrukcji najwyższego poziomu (np. programu); posługując się często nie zdefiniowanymi konstrukcjami pozwala na szybsze zrozumienie języka. 21 10

Definicje języków Istnieje naturalna konieczność tworzenia kompletnych definicji języków programowania zawierających omówienie ich wszystkich szczegółów.! kompletność (odpowiedź na każde pytanie dot. składni i semantyki);! przejrzystość (do łatwego zrozumienia każdej definicji powinna być potrzebna minimalna liczba elementów);! zwięzłość (możliwość zwartego zapisu);! naturalność (ważniejsza chyba od zwięzłości); realizm (liczenie się z ograniczeniami konkretnej implementacji). 22 10

Programy aplikacyjne (1) edytory -służą do redagowania tekstów o nieskomplikowanej budowie; procesory tekstu - to bardziej zaawansowane edytory dające więcej możliwości profesjonalnego opracowywania tekstów. programy małej poligrafii (DTP, DeskTop Publishing) są w pełni profesjonalnymi narzędziami służącymi do składu tekstu i grafiki. zintegrowane pakiety biurowe (MS Office ) -służą do automatyzacji prac biurowych: korespondencja, obliczenia tabelaryczne, kartoteki i bazy danych, grafika prezentacyjna; 23 10

Programy użytkowe (2) programy i biblioteki matematyczne -służą do automatyzacji wielu obliczeń matematycznych;! stanowią pomoc przy projektowaniu! programy wspomagające pracę inżyniera (CAD/CAE/CAM) - mogą się różnić zależnie od poszczególnych dyscyplin inżynierskich; pakiety graficzne -charakter zbliżony do CAD i DTP programy edukacyjne - multimedia!!! gry -mogą mieć charakter edukacyjny;! wiele z gier to odpowiedniki symulatorów, profesjonalnych narzędzi do szkolenia pilotów. 24 10