Wykład 2 - Wydział Matematyki i Informatyki UŁ

Transkrypt

Wykład 2 - Wydział Matematyki i Informatyki UŁ
Wstęp
do programowania
wykład 2
Piotr Cybula
Wydział Matematyki i Informatyki UŁ
2012/2013
http://www.math.uni.lodz.pl/~cybula
Język programowania
Każdy język ma swoją składnię:
słowa kluczowe
instrukcje
itd ....
Dozwolone nazwy
Nazwy (identyfikatory, ang. identifiers) mogą
odnosić się do (pod)programów, zmiennych,
stałych...
zazwyczaj nazwą może być dowolnie długi ciąg
liter (nie używamy polskich!), cyfr i znaków
podkreślenia zaczynający się od litery
poprawne nazwy: liczba_1, liczba1, x, d1
niepoprawne nazwy: 1liczba, wężyk, rp2_1/2
niektóre języki rozróżniają rozmiar liter użytych w
nazwach
C/C++ rozróżnia małe i wielkie litery
Pascal i Ada nie rozróżniają
„Trzecia potęga”
w języku Pascal
(*
program obliczajacy trzecia potege liczby *)
program potega;
uses crt;
var a, p2, p3: integer;
begin
writeln('Program oblicza trzecia potege podanej
liczby');
write('Podaj a:'); read(a);
p2 := a * a;
p3 := p2 * a;
write('Wynik wynosi ', p3);
repeat until keypressed;
end.
„Trzecia potęga”
w języku C
/* program obliczajacy trzecia potege liczby */
#include <stdio.h>
int main() {
int a, p2, p3;
printf("Program oblicza trzecia potege
podanej liczby \n");
printf("Podaj a: ");
scanf("%d", &a);
p2 = a * a;
p3 = p2 * a;
printf("Wynik wynosi %d\n", p3);
system("pause");
return 0;
}
„Trzecia potęga”
w języku C++
/* program obliczajacy trzecia potege liczby */
#include <iostream>
int main() {
int a, p2, p3;
std::cout << "Program oblicza trzecia potege
podanej liczby" << std::endl;
std::cout << "Podaj a: " ;
std::cin >> a;
p2 = a * a;
p3 = p2 * a;
std::cout << "Wynik wynosi " << p3 << std::endl;
system("pause");
return 0;
}
„Trzecia potęga”
w języku Ada
-- program obliczajacy trzecia potege liczby
with ada.text_io, ada.integer_text_io;
use ada.text_io, ada.integer_text_io;
procedure potega is
a, p2, p3: integer;
begin
put_line("Program oblicza trzecia potege podanej
liczby");
put("Podaj a: "); get(a);
p2 := a * a;
p3 := p2 * a;
put("Wynik wynosi "); put(p3, 0);
end potega;
Słowa kluczowe
W każdym języku programowania występują
pewne słowa kluczowe. Mają specjalne
znaczenie (np. są elementem instrukcji,
nazwą jakiegoś predefiniowanego typu itp).
Słów kluczowych nie można użyć jako nazw.
Przykładowe słowa kluczowe w C: int, if, else,
float, typedef, for, while ...
Edytor przystosowany do pracy z danym językiem
zazwyczaj wyróżnia słowa kluczowe tego języka
Struktura programu
Program ma najczęściej pewną ustaloną
strukturę:
Pascal:
program
nazwa_programu;
część deklaracyjna
begin
część wykonywalna
end.
Ada:
procedure nazwa_programu is
część deklaracyjna
begin
część wykonywalna
end nazwa_programu;
C/C++:
int main()
{
część deklaracyjna i wykonywalna
}
Poszczególne instrukcje programu
kończymy zazwyczaj średnikami
niekiedy może być nakazane kończenie
pewnych linii kropką (Pascal, ostatnia linia
programu)
Poza nielicznymi przypadkami układ tekstu
w linii czy też fakt rozłożenia go na kilka
linii nie ma znaczenia
Część deklaracyjna zawiera deklaracje
zmiennych, część wykonywalna
(imperatywna) – instrukcje do wykonania
Deklaracje zmiennych
Musimy określić, jakiego typu będą używane
przez nas zmienne (jak interpretować
poszczególne bity) oraz spowodować, żeby
została zarezerwowana pamięć na ich
przechowanie (domyślnie wartość jest
przypadkowa):
C/C++:
typ nazwa_zmiennej;
Ada:
nazwa_zmiennej: typ;
Pascal:
nazwa_zmiennej: typ;
deklaracje poprzedzamy słowem kluczowym var
Przykład:
int a, b = 5;
Deklaracje stałych
Jeżeli zmienna ma mieć chronioną wartość
deklarujemy ją jako stałą, koniecznie
inicjalizując przy deklaracji:
C/C++:
const typ nazwa_stałej = literał;
Ada:
nazwa_stałej: constant typ :=
literał;
Pascal:
nazwa_stałej = literał;
deklaracje stałych poprzedzamy słowem const
Przykład:
const float podatek = 0.19;
Typy predefiniowane
W języku istnieją zazwyczaj pewne
predefiniowane typy, np. liczbowe,
logiczne, znakowe...
C/C++:
do przechowywania liczb całkowitych:
short int
int
long int
do przechowywania znaków alfanumerycznych:
char
wszystkie powyższe typy mogą występować w dwóch wersjach: ze
znakiem (signed) i bez znaku (unsigned). W przypadku typów
całkowitych domyślnie przyjmuje się, że są one ze znakiem
do przechowywania liczb zmiennoprzecinkowych
float
double
long double
Pascal:
do przechowywania liczb całkowitych:
shortint
integer
longint
do przechowywania znaków alfanumerycznych:
char
do przechowywania liczb
zmiennoprzecinkowych
real
Ada:
do przechowywania liczb całkowitych:
short_integer
integer
long_integer
long_long_integer
do przechowywania znaków alfanumerycznych:
character
do przechowywania liczb
zmiennoprzecinkowych
float
long_float
long_long_float
Zakresy typów
Zakresy poszczególnych typów mogą
być albo ściśle określone, albo zależeć
od implementacji (czyli od kompilatora)
ZAWSZE istnieje w każdym typie wartość
największa i najmniejsza
Wyniki działań (operatorów) mogą
przekroczyć dopuszczalny zakres
Operatory
W języku zdefiniowane są pewne
operatory, których można używać do
konstruowania wyrażeń
(arytmetycznych, logicznych...)
zazwyczaj mamy dostępne operatory
arytmetyczne:
+-*/
i możemy przy konstruowaniu wyrażeń
arytmetycznych używać nawiasów
pewne specyficzne operatory
arytmetyczne, jak:
Pascal: div – dzielenie całkowite, mod – reszta
z dzielenia; zdef. dla liczb całkowitych
Ada: rem i mod zdef. dla liczb całkowitych
C/C++: % - reszta z dzielenia, zdef. dla liczb
całkowitych
Typ zwracanego wyniku zależy
zazwyczaj od typu argumentów
operatora (operandów), np. w C/C++
dzielenie liczb całkowitych daje w
wyniku część całkowitą z dzielenia
Kolejność wykonywania operatorów jest
zależna od ich priorytetów (mogą być
różne w różnych językach)
operatory porównywania:
<
<= >
>=
„różne” i „równe” nie wygląda jednakowo
Ada:
Pascal:
C/C++:
=
=
==
/=
<>
!=
operatory logiczne koniunkcji, alternatywy i
negacji:
Ada:
Pascal:
C/C++:
and
and
&&
or
or
||
not
not
!
czasami język udostępnia również pewne
specyficzne operatory:
Ada (logiczne):
or else and then
xor
C/C++ (bitowe): & | ~ ^ << >>
Operacja przypisania
Do przypisania zmiennej wartości innej
zmiennej lub wyrażenia służy operator
przypisania:
Ada, Pascal:
:=
C/C++:
=
w C/C++ przypisanie jest operatorem i
występuje w wersjach uproszczonych, np.:
++
-+= -= *= /= %=
Komentarze w programie
Tekst ujęty w znaki komentarza nie jest
kompilowany / wykonywany
Ada: tekst od dwuznaku -- do końca linii
Pascal: tekst ujęty w znaki (* ... *)
(komentarze tego rodzaju można zagnieżdżać)
C/C++:
tekst ujęty w znaki /* .... */
(komentarzy tego typu nie można zagnieżdżać)
tekst od dwuznaku // do końca linii
(komentarze tego typu można zagnieżdżać, w tym
również w komentarzach /* .... */

Podobne dokumenty