3. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
É um programa que controla as funcionalidades de um determinado hardware
e executa um conjunto de softwares de acordo com o seu objetivo. Provê uma
interface intuitiva para um determinado nível de usuário.
Sistema Operacional
O que é?:
SISTEMAS OPERACIONAIS
4. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
• Controlar recursos de hardware:
• CPU.
• Memória.
• E/S.
• Controlar recursos de software:
• Sistemas de Arquivos.
• Processos.
• Execução dos programas.
• Gerenciar os recursos da melhor forma possível.
• Controle de usuários.
• Possuem um Kernel.
Sistemas Operacionais
Objetivos:
SISTEMAS OPERACIONAIS
5. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
• São complexos.
• Multiprogramação.
• Possuem processos.
• Executa vários programas simultâneos.
• Processamento rápido mostra a impressão de execução ao mesmo tempo.
• Sincronização entre processos.
• Memória Virtual (Parece que a memória não tem fim !!!)
• Embarcados.
• Virtualizados.
Sistemas Operacionais
Dias atuais:
SISTEMAS OPERACIONAIS
6. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
Em nossa disciplina, vamos estudar uma API de alto nível que utiliza de
recursos do Sistema Operacional para trabalhar com vários processos
simultâneos. Neste conjunto de API, possuímos funcionalidades para controlar
os processos, iniciar, parar e sincroniza-los.
Detalhes:
SISTEMAS OPERACIONAIS
Sistemas Operacionais
9. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
• Originalmente criado para dispositivos embarcados.
• Iniciou a partir Projeto Green em Junho de 1991 por James Gosling, Mike
Sheridan and Patrick Naughton.
• Denominada inicialmente de Oak.
• Desenvolvido por James Gosling na Sun Microsystems em 1995.
• Em 1996 foi lançado a primeira versão do JDK 1.0.
• Premissas da Linguagem:
• Sem ponteiros (todos ficamos felizes).
• Independente de plataforma.
• Recurso de garbage collector.
• Alta confiabilidade.
• Bytecodes.
Histórico
Origens:
A TECNOLOGIA JAVA
10. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
A TECNOLOGIA JAVA
Fonte: http://viralpatel.net/blogs/java-virtual-machine-an-inside-story/
11. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
Tem como principal funcionalidade executar os bytecodes gerado a partir dos
códigos Java, tornando a linguagem independente de plataforma. Além disso a
JVM possui outras responsabilidades:
• Gerenciamento de memória.
• Controle de threads.
• Comunicação com o Sistema Operacional e acessar métodos nativos.
• Pode executar outras linguagens além do Java como Groovy, Jython e JRuby.
JVM
Java Virtual Machine:
A TECNOLOGIA JAVA
12. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
A TECNOLOGIA JAVA
Java Platform Standard Edition 7
Fonte: http://docs.oracle.com/javase/7/docs/index.html
13. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
• Funcionamento de um programa Java.
• Variáveis.
• Condicionais.
• Laços.
• Vetores.
• String.
• Não vamos entrar em detalhes na Orientação a Objetos.
• Precisamos conhecer somente como instanciar uma classe para a nossa
disciplina.
• E... Conhecer Lógica de Programação !!!
Java
O que vamos ver na revisão:
A TECNOLOGIA JAVA
Vamos começar !!!
14. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
Exemplo 01
package edu.anhanguera.poo.aula03;
public class Exemplo01 {
public static void main(String[] args) {
System.out.println("Olá Pessoal. Tudo Bem?");
}
}
15. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
package edu.anhanguera.poo.aula03;
public class Exemplo02 {
public static void main(String[] args) {
// É uma forma de criar comentários em linha.
System.out.println("Imprimindo na saida do console");
System.err.println("Imprimindo na saida de erro do console");
System.out.print("Está forma não pula linha");
System.err.format("Saida %s formatada", new String("é"));
System.out.format("Esta %s também é formatada", new String("saida"));
// O método abaixo possui o conceito de varargs
System.out.format("%s formatada %s vários %s",
new String("Saida"),
new String("com"),
new String("paramêtros"));
}
}
Exemplo 02
16. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
package edu.anhanguera.poo.aula03;
public class Exemplo03 {
public static void main(String[] args) {
int varInt;
double varDouble;
float varFloat;
long varLong;
boolean varBoolean;
byte varByte;
short varShort;
varInt = 2015;
varDouble = 768.35;
varFloat = 3.14159265f;
varLong = 250000000l;
varBoolean = true;
varByte = 8;
varShort = 3;
System.out.println("int: " + varInt);
System.out.println("double: " + varDouble);
System.out.println("float: " + varFloat);
System.out.println("long: " + varLong);
System.out.println("boolean: " + varBoolean);
System.out.println("byte: " + varByte);
System.out.println("short: " + varShort);
}
}
Exemplo 03
17. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
package edu.anhanguera.poo.aula03;
public class Exemplo04 {
public static void main(String[] args) {
double media = 0;
double notaB1 = 5;
double notaB2 = 6;
media = (notaB1 * 0.4) + (notaB2 * 0.6);
if (media >= 6) {
System.out.println("Aprovado");
} else {
System.out.println("Reprovado");
}
System.out.println(media >= 6 ? "Aprovado" : "Reprovado");
}
}
Exemplo 04
18. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
package edu.anhanguera.poo.aula03;
public class Exemplo05 {
public static void main(String[] args) {
boolean ligar = true;
if (ligar)
System.out.println("Ligado");
if (!ligar)
System.out.println("Desligado");
float soma;
float operador1 = 788.00f;
float operador2 = 3.58f;
soma = operador1 + operador2;
if (soma == 791.58f) {
System.out.println("Resultado da soma é " + soma);
}
}
}
Exemplo 05
19. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
package edu.anhanguera.poo.aula03;
public class Exemplo06 {
public static void main(String[] args) {
String nomeGuerreiro = "Blackwall";
String nomeMago = new String("Solas");
System.out.println("Guerreiro:" + nomeGuerreiro);
System.out.println("Mago:" + nomeMago);
System.out.println("Tamanho:" + nomeGuerreiro.length());
System.out.println("Tamanho:" + nomeMago.length());
if (!nomeGuerreiro.equals(nomeMago)) {
System.out.println("Os nomes são diferentes.");
} else {
System.out.println("Os nomes são iguais.");
}
nomeGuerreiro = nomeGuerreiro.toUpperCase();
nomeMago = nomeMago.toLowerCase();
System.out.println("Guerreiro:" + nomeGuerreiro);
System.out.println("Mago:" + nomeMago);
}
}
Exemplo 06
20. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
package edu.anhanguera.poo.aula03;
public class Exemplo07 {
public static void main(String[] args) {
char linguagem[] = { 'J', 'a', 'v', 'a' };
String java = "";
for (int i=0;i<=linguagem.length-1;i++) {
java += linguagem[i];
}
System.out.println("Linguagem " + java);
int notas[] = new int[2];
notas[0] = 6;
notas[1] = 7;
int i=0;
while (i <= notas.length-1) {
System.out.println("Nota " + (i + 1) + ":" + notas[i]);
i++;
}
boolean ligado = true;
do {
System.out.println("Ligado");
ligado = false;
} while (ligado);
}
}
Exemplo 07
22. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
package edu.anhanguera.poo.aula03;
import java.util.Scanner;
public class Exemplo09 {
public static void main(String[] args) {
double notaB1;
double notaB2;
double media;
Scanner scanner = new Scanner(System.in);
System.out.println("Digite a nota da B1:");
notaB1 = scanner.nextDouble();
System.out.println("Digite a média:");
media = scanner.nextDouble();
notaB2 = (media - (notaB1*0.4)) / 0.6;
System.out.println("Nota necessária para aprovação:" + notaB2);
scanner.close();
}
}
Exemplo 09