52
Adriano Marinho Graduando em Computação na UFPB Raphael Marques Mestrando em Informática na UFPB

Minicurso Java && Cl

Embed Size (px)

DESCRIPTION

Minicurso sobre Java && C ministrado na I Semana da Computação do DI/UFPB.

Citation preview

Page 1: Minicurso Java && Cl

Adriano Marinho Graduando em Computação na UFPB

Raphael Marques Mestrando em Informática na UFPB

Page 2: Minicurso Java && Cl

São as linguagens mais utilizadas no mundo.

C no Desktop e Java na Web

Porque saber as duas?

Mais conhecimento sobre programação.

Nem tudo se resolve numa linguagem só.

Não seja limitado.

R2

Page 3: Minicurso Java && Cl

Java:

Programação Orientada a Objetos

Compilada para Bytecodes

“Interpretada” em tempo de execução pela JVM

Write once! Run Anywere!

A JVM TEM O PODER!

R3

Page 4: Minicurso Java && Cl

C:

Programação Estruturada

Compilada diretamente para código nativo

VOCÊ TEM O PODER!

A4

Page 5: Minicurso Java && Cl

#include <stdio.h>

int main ()

{

printf(“Hello World!\n”);

return 0;

}

A5

Page 6: Minicurso Java && Cl

public class Classe{

public static void main(String[] args){

System.out.println(“Hello World!”);

}

}

R6

Page 7: Minicurso Java && Cl

Use o console (prompt de comando no Windows) para compilar!

Você deve ter o Java JDK instalado na sua máquina.

Exemplo:

javac NomeDaClasse.java

java NomeDaClasse

R7

Page 8: Minicurso Java && Cl

Em Java, módulo é descrito por uma classe. Classes adicionais são carregadas

automaticamente. Importar outras classes: import pacote.Classe;

import pacote.*;

import static pacote.Classe.campo

import static pacote.Classe.*; Classpath: java –cp biblioteca.jar SuaClasse

R8

Page 9: Minicurso Java && Cl

Use o console (prompt de comando no Windows) para compilar!

Você deve ter algum compilador C instalado na sua máquina.

Exemplo:

gcc nomeDoPrograma.c –o nomeDoPrograma

nomeDoPrograma

A9

Page 10: Minicurso Java && Cl

Para isso escrevemos arquivos de cabeçalho (.h), além dos arquivos .c.

Nos arquivos .h devem ficar:

protótipos das funções, definições de estruturas e variáveis globais.

gcc main.c Arq1.c Arq2.c -o MeuProg

#include<modulo.h>

A10

Page 11: Minicurso Java && Cl

C

char (8 bits) int (? bits c/ sinal) float (tamanho do int) double (?)

JAVA

boolean (false,true) byte (8 bits c/ sinal) short (16 bits c/ sinal) char (16 bits s/ sinal) int (32 bits c/ sinal) long (64 bits c/ sinal) float (32 bits) double (64 bits)

A11

Page 12: Minicurso Java && Cl

Modificadores:

short

long

signed

unsigned

Exemplos:

short int

short

signet char

unsigned long int

A12

Page 13: Minicurso Java && Cl

Em C, um ponteiro contêm um endereço de memória. Um ponteiro pode ser utilizado para qualquer

estrutura na memória.

Ponteiros permitem operações aritméticas.

Em Java, uma referência faz referência a um objeto na memória. Uma referência só é utilizada com objetos.

Referências NÃO permitem operações aritméticas.

R13

Page 14: Minicurso Java && Cl

C

lixo

Ponteiros com lixo podem causar travamentos do SO

Java

null

false

0

0.0

R14

Page 15: Minicurso Java && Cl

Usamos System.out.println() Exemplos:

System.out.println();

System.out.println(x);

System.out.println(“HelloWorld”);

System.out.print(“valor: ” + x);

System.out.println(“valor: ” + x + 1);

System.out.printf(...);

R15

Page 16: Minicurso Java && Cl

Usamos System.in.read()

Lê um byte por vez

A classe Scanner

Scanner scan = new Scanner(System.in)

int x = scan.nextInt();

float f = scan.nextFloat();

String token = scan.next();

String linha = scan.nextLine();

R16

Page 17: Minicurso Java && Cl

Usamos printf(), uma função da biblioteca stdio.h

Exemplos:printf(“%c\n”, 'a‟); →a

printf(“%c\n”, 65); →a

printf(“%d\n”, 1977); →1977

printf(“%ld\n”, 650000L); →650000

printf(“%x\n”, 2748); →0xABC

printf(“%o\n”, 83); →123

A17

Page 18: Minicurso Java && Cl

Exemplos:printf(“%6d \n”, 1977); → 1977

printf(“%06d \n”, 1977); →001977

printf(“%4.2f \n”, 3.1416); →3.14

printf(“%+.0e \n“,3.1416); →????

printf(“%E\n”, 3.1416); →3.1416e1

printf(“%*d \n”, 5, 10); → 10

printf("%s\n”, “Adriano"); →Adriano

printf(“%d + %d = %d”,1,2,3); →1 + 2 = 3

A18

Page 19: Minicurso Java && Cl

Usamos scanf(), uma função da biblioteca stdio.h

Exemplos:char str [80];

scanf ("%s",str);

int i;

scanf ("%d",&i);

scanf ("%x",&i);

scanf ("%d",i);

A19

Page 20: Minicurso Java && Cl

Conversão implícita:

Tipos:

▪ Por atribuição;

▪ Alargamento de inteiros;

▪ Compatibilidade de operandos;

Todos os tipos de C são compatíveis entre si!!!

Conversão explícita: type cast.

(int)x

(float)y

A20

Page 21: Minicurso Java && Cl

Conversão implícita: Onde não houver perda de precisão

Ex:▪ float f = 5;

▪ double d = f + 1.5;

▪ byte b = 1000;

▪ int x = 1.0;

Conversão explícita: type cast (int)x

(float)y

R21

Page 22: Minicurso Java && Cl

Java e C:

Sizeof em C:

sizeof( int )

+ - * / > >= < <= |

& ! ^ -- ++ -= += << >>

= == != % ~ ^ ? : && ||

R22

Page 23: Minicurso Java && Cl

Em C:

O modificador const

▪ const int PI = 3.1415;

Macros

▪ #define PI 3.1415

Em Java:

O modificador final

▪ final int PI = 3.1415;

R23

Page 24: Minicurso Java && Cl

C:

A condição é um inteiro

▪ false: zero

▪ true: qualquer valor diferente de zero

Ex:

▪ if(x == 5){...}

▪ if(x = 5){...}

▪ if(x == 1){...} → if(x != 0){...} → if(x){...}

A24

Page 25: Minicurso Java && Cl

Java:

A condição é sempre um boolean

▪ int x = 4;

▪ if( x == 4 ){...}

▪ if( x ){...} → apenas se x for boolean

A25

Page 26: Minicurso Java && Cl

Java e C:

if

if-else

while

do-while

switch-case

break

continue

A26

Page 27: Minicurso Java && Cl

int i;

for(i = 0; i < 10; i++){

...

}

A27

Page 28: Minicurso Java && Cl

for(int i = 0; i < 10; i++){

...

}

int[] numeros = ...

foreach(int n : numeros){

...

}

R28

Page 29: Minicurso Java && Cl
Page 30: Minicurso Java && Cl

Escreva um programa na sua nova linguagem que leia um valor de raio e calcule a área e o perímetro.

Exiba a área e perímetros calculados.

O programa pergunta o raio até que o usuário digite um valor negativo.

R30

Page 31: Minicurso Java && Cl

Sequência de posições de memória C não faz controle de limite do array Representado por um ponteiro. Estático:

▪ int p[10];▪ int[] p = int[10];▪ int p[x];

Dinâmico▪ int p* = (int*) malloc( sizeof( int ) * tamanho );▪ free(p);

Tamanho de um array: sizeof( array ) / sizeof( tipoDoArray)

▪ sizeof( p ) / sizeof( int )

O mais comum é guardar o tamanho do array numa variável.

A31

Page 32: Minicurso Java && Cl

Arrays são objetos. São acessados pela sua referência. Ex:

int[] a; → referência nula

int[] a = new int[10]; → inicialização

int[] a = new int[x]; → inicialização

int[] a = new int[]{1,2,3,4,5}; → inicialização

int[] a = new {1,2,3,4,5}; → abreviação

a.length → n de elementos

a[2] → 3 elemento do array

int a[10];

a++;

R32

Page 33: Minicurso Java && Cl

Métodos: Ex:

static void imprimeValor(int valor){

System.out.println(valor);

}

static float soma(float valor1, float valor2){

return valor1 + valo2;

}

R33

Page 34: Minicurso Java && Cl

Sobrecarga de métodos:

Java diferencia 2 métodos com o mesmo nome pela quantidade e tipo de parâmetros.

Ex:

static float metodo(float v1, float v2){...}

static float metodo(float v1){...}

static float metodo(float v1, int v2){...}

static int metodo(float v1, float v2){...}

R34

Page 35: Minicurso Java && Cl

Passagem de parâmetro sempre por cópia.

Objeto como parâmetro

▪ É feita uma copia da referência.

▪ Simula passagem de parâmetro por referência.

R35

Page 36: Minicurso Java && Cl

Funções: C diferencia funções apenas pelo nome! Nada de sobrecarga de funções!!!

Ex:int SomarDoisNumeros (int a, int b){

return a + b;

}

void ImprimirOi(){

printf(“Oi!\n”);

}

A36

Page 37: Minicurso Java && Cl

Passagem de parâmetro sempre por cópia. Ex:

int SomarDoisNumeros (int a, int b) Passagem de parâmetro por referência. É emulada utilizando-se ponteiros

Ex:

int SomarDoisNumeros (int *a, int *b){...}

...

int c = SomarDoisNumeros (&a, &b);

A37

Page 38: Minicurso Java && Cl

Strings em C são arrays! (e podem ser alterados) char str[] = “String”;

char *str = “String”; termina com ‘\0’ “String” → „S‟ , „t‟ , „r‟ , „i‟ , „n‟ , „g‟ , „\0‟

Operações (definidas em string.h): strcpy strlen strcmp strstr strtkn

A38

Page 39: Minicurso Java && Cl

Classe String Não precisa de „\0‟ no final!!! Strings não podem ser alteradas!!!

Para isso use StringBuffer.

R39

Page 40: Minicurso Java && Cl

Operações:String nome = “Raphael”

nome.length() → 7

nome + “ Marques” → “Raphael Marques”

nome.charAt(1) → „a‟

nome.contains(“Raphael”) → true

nome.equals(“Raphael”) → false

nome.toLowerCase() → ”raphael marques”

String.valueOf(500) → “500”

R40

Page 41: Minicurso Java && Cl

C: O programador aloca e libera memória.

Não existe gerenciamento automático de memória.

Java: O programador aloca memória

O Garbage Collector libera memória quando um objeto não é mais referenciado.

System.gc() é apenas uma SUGESTÃO.

A41

Page 42: Minicurso Java && Cl
Page 43: Minicurso Java && Cl

Escreva um programa na sua nova linguagem que leia N notas do usuário.

Calcule a média das notas e exiba o resultado.

Informe se o aluno foi aprovado, reprovado ou está na final.

No caso da final, informe quanto ele precisa tirar na prova final para passar.

A43

Page 44: Minicurso Java && Cl

Erros típicos:

Redeclaração de variáveis/funções;

Avisos de variáveis sem inicialização;

Funções com número de parâmetros incorretos;

Etc;

A44

Page 45: Minicurso Java && Cl

Exceções

Param a execução do programa sem travar o SO.

Exceções de vários tipos:

▪ NullPointerException

▪ ArrayIndexOutOfBoundsException

StackTrace:Exception in thread "main“ ArrayIndexOutOfBoundsException: 500

at Teste.metodo2(Teste.java:4)

at Teste.metodo1(Teste.java:8)

at Teste.main(Teste.java:13)

R45

Page 46: Minicurso Java && Cl

JAVA NÃO É C!!!

Deixe o Garbage Collector trabalhar...

objetoInutil = null;

Declare as variáveis quando for utilizá-las.

R46

Page 47: Minicurso Java && Cl

C NÃO É JAVA!!!

Todo cuidado com ponteiros é pouco!!!

Não esqueça do lixo!!!

Cuidado com o tamanho dos tipos primitivos.

Lembre de liberar memória.

A47

Page 48: Minicurso Java && Cl

C: Notas de aula do Prof. Ulysses Oliveira

▪ http://www.ulysseso.com/

Biblioteca padrão de C▪ http://www.utas.edu.au/infosys/info/documentation/C/CStdL

ib.html

Java: Procure no Google: java api 1.6

▪ http://java.sun.com/javase/6/docs/api/

Procure no Google: tutorial sun▪ http://java.sun.com/docs/books/tutorial/

A48

Page 49: Minicurso Java && Cl

C:

math.h

string.h

time.h

Java:

System

File

Math

Arrays

A49

Page 50: Minicurso Java && Cl

C:

Tenha paciência e cuidado!

Java:

Toda classe começa com letra maiúscula:

▪ Pessoa, Carro, String, System, etc...

O nome do arquivo deve ser IGUAL ao nome da classe:

▪ class Pessoa → Pessoa.java

R50

Page 51: Minicurso Java && Cl

C:

Dev C++

CBuilder

NetBeans

Eclipse

Java:

JBuilder

NetBeans

Eclipse

R51

Page 52: Minicurso Java && Cl

Adriano Marinho Graduando em Computação na UFPB

Raphael Marques Mestrando em Informática na UFPB