k19 - k01 - logica - de - programação

k19 - k01 - logica - de - programação

(Parte 1 de 4)

TREINAMENTOS Lógica de Programação

Lógica de Programação

16desetembrode2013 As apostilas atualizadas estão disponíveis em w.k19.com.br

Esta apostila contém:

• 61 questões de prova.

Sumário i SobreaK19 1 SeguroTreinamento 2 TermodeUso 3 Cursos 4

1.1 O que é um Computador?1
1.2 Formato Binário3
1.3 Unidades4
1.4 Arquiteturas de Processadores5
1.5 O que é um Programa?7
1.6 Linguagem de Máquina7
1.7 Linguagem de Programação7
1.8 Compilador8
1.9 Máquinas Virtuais9
1.10 Hello World em Java10
1.1 Hello World em C#1
1.12 Método Main13
1.13 Exercícios de Fixação Com Java13
1.14 Exibindo mensagens15
1.15 Comentários16
1.16 Indentação16
1.17 Engenharia Reversa (Conteúdo Extra)17
1.18 Ofuscadores (Conteúdo Extra)17
1.19 Exercícios de Fixação Com Java17
1.20 Erro: Não Fechar os Blocos18
1.21 Erro: Trocar Maiúsculas e Minúsculas19
1.2 Erro: Esquecer o Ponto e Vírgula20
1.23 Erro: Esquecer o Main21
1.24 Exercícios de Fixação Com C#2
1.25 Exercícios Complementares23
1.26 Desafios24
1.27 Resumo do Capítulo24
1.28 Prova26

1 Introdução 1

2.1 O que é um Algoritmo?31
2.2 Como um algoritmo pode ser representado?31
2.3 Exercícios de Fixação3
2.4 Desafios3

2 Algoritmos 31

3.1 O que é uma Variável?35
3.2 Declarando variáveis em Java ou C#35
3.3 Tipos de Básicos36
3.4 String37

3 Variáveis 35 i w.k19.com.br

3.5 Data e Hora (Conteúdo Extra)38
3.6 Valores Literais39
3.7 Números Aleatórios43
3.8 Exercícios de Fixação Com Java4
3.9 Casting45
3.10 Conversão de string47
3.1 Convenções de nomenclatura48
3.12 Regras de nomenclatura50
3.13 Keywords51
3.14 Formatação51
3.15 Formatação de Data e Hora (Conteúdo Extra)53
3.16 Exercícios de Fixação Com Java54
3.17 Erro: Variáveis com nomes repetidos5
3.18 Erro: Esquecer a inicialização de uma variável local56
3.19 Erro: Trocar aspas simples por aspas duplas ou vice-versa57
3.20 Erro: Utilizar o separador decimal errado58
3.21 Erro: Valores incompatíveis com os tipos das variáveis59
3.2 Exercícios de Fixação Com C#60
3.23 Exercícios Complementares63
3.24 Desafios64
3.25 Resumo do Capítulo64
3.26 Prova65

i SUMÁRIO

4.1 Tipos de Operadores69
4.2 Operadores Aritméticos69
4.3 Divisão Inteira70
4.4 Concatenação de Strings71
4.5 Exercícios de Fixação Com Java72
4.6 Operadores de Atribuição74
4.7 Operadores Relacionais76
4.8 Operadores Lógicos76
4.9 Exercícios de Fixação Com Java79
4.10 Operador ternário “?:”81
4.1 Operador “!”82
4.12 Pré e Pós Incremento ou Pré e Pós Decremento82
4.13 Exercícios de Fixação Com Java84
4.14 Operações com Strings85
4.15 Operações com Data e Hora (Conteúdo Extra)8
4.16 Exercícios de Fixação Com Java89
4.17 Erro: Utilizar operadores incompatíveis90
4.18 Exercícios de Fixação Com C#92
4.19 Exercícios Complementares98
4.20 Resumo do Capítulo104
4.21 Prova105
5.1 Instruções de Decisão1
5.2 Instrução if1
5.3 Instrução else114

5 ControledeFluxo 1 w.facebook.com/k19treinamentos i

5.4 Instruções de Decisão Encadeadas117
5.5 Exercícios de Fixação Com Java118
5.6 Instruções de Repetição123
5.7 Instrução while123
5.8 Instrução for128
5.9 Instruções de Repetição Encadeadas132
5.10 Exercícios de Fixação Com Java133
5.1 Instrução break136
5.12 Instrução continue144
5.13 Exercícios de Fixação Com Java148
5.14 Blocos Sem Chaves150
5.15 “Laços Infinitos”151
5.16 Exercícios de Fixação Com Java151
5.17 Erro: Não utilizar condições booleanas152
5.18 Erro: Excesso de “;”153
5.19 Exercícios de Fixação Com C#153
5.20 Exercícios Complementares164
5.21 Resumo do Capítulo174
5.2 Prova175

SUMÁRIO iv

6.1 O que é um Array?181
6.2 Como declarar e inicializar um array?182
6.3 Inserindo valores de um array182
6.4 Acessando os valores de um array183
6.5 Percorrendo um array183
6.6 Array de arrays185
6.7 Percorrendo um array de arrays186
6.8 Exercícios de Fixação Com Java187
6.9 Erro: Acessar uma posição inexistente193
6.10 Exercícios de Fixação Com C#193
6.1 Exercícios Complementares199
6.12 Resumo do Capítulo203
6.13 Prova204
7.1 Parâmetros208
7.2 Resposta209
7.3 Exercícios de Fixação Com Java210
7.4 Erro: Parâmetros incompatíveis215
7.5 Erro: Resposta incompatível216
7.6 Exercícios de Fixação Com C#217
7.7 Exercícios Complementares223
7.8 Resumo do Capítulo230
7.9 Prova230

7 FunçõesouMétodos 207

A.1 Encontrar o maior ou o menor elemento de um array235
A.2 Exercícios de Fixação Com Java236
A.3 Calcular a soma dos elementos de um array237

A Problemas 235 iv w.k19.com.br

A.4 Exercícios de Fixação Com Java238
A.5 Calcular a média dos elementos de um array239
A.6 Exercícios de Fixação Com Java240
A.7 Trocar as posições de dois elementos de um array240
A.8 Exercícios de Fixação Com Java241
A.9 Escolher aleatoriamente um número inteiro dentro de um intervalo242
A.10 Exercícios de Fixação Com Java243
A.1 Gerar apostas da Mega-Sena244
A.12 Exercícios de Fixação Com Java247
A.13 Embaralhar os elementos de um array248
A.14 Exercícios de Fixação Com Java249
A.15 Ordenar os elementos de um array250
A.16 Exercícios de Fixação Com Java250
A.17 Inverter o posicionamento dos elementos de um array251
A.18 Exercícios de Fixação Com Java252
A.19 Números em formato binário253
A.20 Exercícios de Fixação Com Java254
A.21 Exercícios de Fixação Com C#255

v SUMÁRIO B Respostas 265 w.facebook.com/k19treinamentos v

SUMÁRIO vi vi w.k19.com.br

1 SUMÁRIO

SobreaK19

A K19 é uma empresa especializada na capacitação de desenvolvedores de software. Sua equipe é composta por profissionais formados em Ciência da Computação pela Universidade de São Paulo (USP) e que possuem vasta experiência em treinamento de profissionais para área de TI.

OprincipalobjetivodaK19éoferecertreinamentosdemáximaqualidadeerelacionadosàsprincipais tecnologias utilizadas pelas empresas. Através desses treinamentos, seus alunos tornam-se capacitados para atuar no mercado de trabalho.

Visando a máxima qualidade, a K19 mantém as suas apostilas em constante renovação e melhoria, oferece instalações físicas apropriadas para o ensino e seus instrutores estão sempre atualizados didática e tecnicamente.

w.facebook.com/k19treinamentos 1

SUMÁRIO 2

SeguroTreinamento

NaK19 oaluno faz ocurso quantas vezesquiser!

Comprometida com o aprendizado e com a satisfação dos seus alunos, a K19 é a única que possui o Seguro Treinamento. Ao contratar um curso, o aluno poderá refazê-lo quantas vezes desejar mediante a disponibilidade de vagas e pagamento da franquia do Seguro Treinamento.

As vagas não preenchidas até um dia antes do início de uma turma da K19 serão destinadas ao alunos que desejam utilizar o Seguro Treinamento. O valor da franquia para utilizar o Seguro Treinamento é 10% do valor total do curso.

2 w.k19.com.br

3 SUMÁRIO

Termo de Uso

TermodeUso

TodooconteúdodestaapostilaépropriedadedaK19Treinamentos. Aapostilapodeserutilizada livremente para estudo pessoal . Além disso, este material didático pode ser utilizado como material deapoioemcursosdeensinosuperiordesdequeainstituiçãocorrespondentesejareconhecidapelo MEC(MinistériodaEducação)equeaK19sejacitadaexplicitamentecomoproprietáriadomaterial.

É proibida qualquer utilização desse material que não se enquadre nas condições acima sem o prévio consentimento formal, por escrito, da K19 Treinamentos. O uso indevido está sujeito às medidas legais cabíveis.

w.facebook.com/k19treinamentos 3

SUMÁRIO 4

K01- Lógica de Programação

K11 - Orientação a Objetos em Java

K12 - Desenvolvimento Web com JSF2 e JPA2

K21 - Persistência com JPA2 e Hibernate

K22 - Desenvolvimento Web Avançado com JFS2, EJB3.1 e CDI K23 - Integração de Sistemas com Webservices, JMS e EJB

K31 - C# e Orientação a Objetos K32 - Desenvolvimento Web com ASP.NET MVCConheça os nossos cursos w.k19.com.br/cursos

K02 - Desenvolvimento Web com HTML, CSS e JavaScript K03 - SQL e Modelo Relacional

K41 - Desenvolvimento Mobile com Android

K51 - Design Patterns em Java K52 - Desenvolvimento Web com Struts

4 w.k19.com.br

OqueéumComputador?

Atualmente, os computadores estão presentes no cotidiano da maioria das pessoas. Você, provavelmente, já está acostumado a utilizar computadores no seu dia a dia. Mas, será que você conhece o funcionamento básico de um computador? A seguir, listaremos os principais elementos de um computador e suas respectivas funções.

Registradores CPU

HD Memória RAM

Figura 1.1: Principais elementos de um computador

CPU(UnidadeCentraldeProcessamento-Processador): A CPU é o “cérebro” que controla o funcionamento dos outros componentes do computador e realiza todo o processamento necessário. Esse processamento consiste basicamente na realização de operações matemáticas e operações de armazenamento ou recuperação de dados.

Registradores: Os registradores armazenam os dados que estão sendo processados pela CPU. O acesso ao conteúdo dos registradores é extremamente rápido. Por outro lado, eles não possuem muito espaço. Dessa forma, não é possível armazenar uma grande quantidade de informação

MemóriaRAM: Osdadosutilizadospelosprogramasqueestãoabertossãoarmazenadosnamemória RAM. O acesso ao conteúdo da memória RAM é rápido porém mais lento do que o acesso ao conteúdo dos registradores. Por outro lado, o espaço da memória RAM é bem maior do que o espaço dos registradores.

w.facebook.com/k19treinamentos 1

INTRODUÇÃO 2

DiscoRígido: OsdadosarmazenadosnosregistradoresenamemóriaRAMsãodescartadosquando ocomputadorédesligado. Oconteúdoquenãopodeserdescartadoaodesligarocomputador deve ser armazenado no disco rígido. O acesso ao disco rígido é bem mais lento do que o acesso a memória RAM mas, em geral, o espaço é bem maior.

Os computadores são capazes se comunicar com dispositivos periféricos como teclado, mouse, monitor, caixa de som, impressoras, projetores, entre outros. Eles também são capazes de se comunicar com outros computadores. Essa comunicação é realizada através das diversas portas físicas que os computadores possuem. A seguir listaremos algumas portas físicas e as suas respectivas funções.

Ethernet: Utilizadaparaconectarumcomputadoraumaredelocaldecomputadores. Atravésdessa porta, um computador pode enviar e receber dados de outros computadores.

Figura 1.2: Porta Ethernet

Paralela: Essa porta foi criada conectar um computador a uma impressora. Hoje, é utilizada também para conectar computadores a scanners, câmeras de vídeo, entre outros dispositivos.

Figura 1.3: Porta Paralela PS/2: Teclados e mouses antigos são conectados aos computadores através dessa porta.

Figura 1.4: Porta PS/2

USB: Atualmente, é a porta mais utilizada. Diversos dispositivos são conectados aos computadores através das portas USB. Por exemplo, teclados, mouses, impressoras, celulares, HDs externos, entre outros.

Figura 1.5: Porta USB 2 w.k19.com.br

3 INTRODUÇÃO HDMI: Essa porta é utilizada para transmissão digital de áudio e vídeo.

Figura 1.6: Porta HDMI

Para resumir, podemosdizer que umcomputador é uma máquina que executa comandos matemáticos e armazena dados. Você deve estar se perguntando, como os computadores conseguem realizar tarefas tão sofisticadas se eles apenas executam comandos matemáticos e armazenam dados? A resposta é simples. Os computadores são programados por pessoas e essas pessoas conseguem criar programas que realizam tarefas sofisticadas a partir dos recursos básicos oferecidos pelos computadores. Da mesma forma que pessoas são capazes de produzir pinturas sofisticadas utilizando apenas tinta, pincel e quadro.

Analogia

Figura 1.7: Analogia entre programar e pintar

FormatoBinário

Os computadores são capazes de receber, armazenar e enviar dados. Contudo, esses dados são definidos em um formato que não é comum no dia a dia das pessoas. Eles são definidos em formato binário. Por exemplo, as pessoas estão acostumadas a lidar com os números em formato decimal. Poroutrolado, oscomputadorestrabalhamcomnúmerosemformatobinário. Vejaaseguir, arepresentação decimal e binária de alguns números.

w.facebook.com/k19treinamentos 3

INTRODUÇÃO 4

Tabela 1.1: Representação decimal e binária

Os textos também são manipulados pelos computadores em formato binário. Normalmente, cada caractere de um texto corresponde a uma sequência de oito 0s e 1s. Os caracteres são mapeados para formato binário através de padrões como ASCII (http://pt.wikipedia.org/wiki/ASCII) e Unicode (http://pt.wikipedia.org/wiki/Unicode). Veja a seguir, a representação binária de alguns caracteres de acordo com o padrão ASCII.

Tabela 1.2: Representação binária de caracteres seguindo o padrão ASCII

Como vimos, os números e os caracteres de um texto são facilmente representados em formato binário. Contudo, os computadores também são capazes de manipular imagens, áudio e vídeo. Para esses tipos de dados, a transformação para formato binário é bem mais complicada. Pesquise por PNG, MP3 e AVI que são formatos binários de imagens, áudios e vídeos através dos seguinte endereços:

Unidades 4 w.k19.com.br

5 INTRODUÇÃO

Éimportantesercapazdemensuraraquantidadededadosqueumcomputadorpodearmazenar ou transmitir. Essa mensuração pode ser realizada com ajuda das unidades de medida. A unidade de medida básica é o Bit. Cada 0 ou 1 que um computador armazena ou transmite é um Bit. Além dessa unidade básica, existem várias outras. Veja a seguir, algumas delas.

Byte (B)

Quilobyte (kB)

Megabyte(MB)

Gigabyte(GB)

Terabyte (TB)

Arquiteturas de Processadores

Os comandos que os processadores dos computadores executam são definidos em formato binário. Considere o exemplo fictício a seguir com algumas instruções para um determinado processador.

w.facebook.com/k19treinamentos 5

REG-1

REG-2

REG-2 REG-3REG-1 REG-3

EXIBE Figura 1.8: Instruções de processador

A primeira instrução indica ao processador que o valor 19 deve ser armazenado no registrador 1. A segunda instrução indica que o valor 1 deve ser armazenado no registrador 2. Já a terceira instrução determina a realização da soma dos valores anteriormente armazenados nos registradores 1e2 alémdeindicarqueoresultadosejaarmazenadonoregistrador3. Porúltimo,aquartainstrução determina ao processador que o valor do registrador 3 deve ser exibido na tela.

Não há um padrão universal para o formato das instruções que os processadores podem executar. Consequentemente, as mesmas operações podem ser definidas de formas diferentes em dois processadores distintos. Considere o exemplo fictício a seguir com algumas instruções para dois processadoresdetiposdiferentes.0110001100100001REG-2 REG-1REG-3SOMAArquitetura X

Arquitetura Y 010001010011REG-2 REG-3REG-1SOMA Figura 1.9: Instruções de processadores diferentes

Observe que as duas instruções indicam aos processadores que o valor do registrador 1 deve ser somado ao valor do registrador 2 e o resultado deve ser armazenado no registrador 3. Contudo, as sequências binárias dessas instruções são diferentes porque os processadores são de arquiteturas diferentes.

As instruções que um processador pode executar são definidas pela arquitetura do seu processador. As principais arquiteturas de processadores são:

6 w.k19.com.br

7 INTRODUÇÃO

OqueéumPrograma?

Oscomandosqueosprocessadoresdoscomputadoresoferecemsãoextremamentebásicos. Normalmente, são comandos para realizar operações aritméticas como soma, subtração, divisão e multiplicação. Qualquer tarefa mais complexa deve ser resolvida através de uma sequência desses comandos básicos.

Por exemplo, para calcular a média aritmética dos números 10, 15 e 20, devemos obter o valor da somatória desses números através de operações básicas de soma. Depois, podemos utilizar uma operação básica de divisão para dividir o valor dessa somatória por 3 e assim obter o valor 15 que é a média dos números.

Uma sequência de comandos básicos de processador que resolve uma determinada tarefa recebe o nome de programa. Os programas são armazenados em arquivos comumente chamados de executáveis.

Na prática, os programas são formados por instruções que dependem da arquitetura do processador e do sistema operacional. Consequentemente, um mesmo programa pode não funcionar em sistemas operacionais diferentes ou em processadores de arquiteturas diferentes.

LinguagemdeMáquina

Como vimos anteriormente, o formato dos comandos que um computador pode executar depende basicamente da arquitetura do seu processador. Como existem diversas arquiteturas diferentes, um mesmo comando pode funcionar em um computador e não funcionar em outro. O formato doscomandosquefuncionamemumdeterminadoprocessadordefinealinguagemdemáquinaou códigodemáquina desse processador.

Comandos definidos em linguagem de máquina são perfeitos para os computadores processarem. Por outro lado, eles são extremamente complexos para as pessoas entenderem. Podemos verificar essa complexidade, observando o trecho de comandos em linguagem de máquina da figura abaixo:

LinguagemdeProgramação

Devido a complexidade, escrever um programa em linguagem de máquina é inviável. Para tornar viável o desenvolvimento de programas, existem as linguagens de programação que tentam se aproximar das linguagens humanas. Confira um trecho de código escrito com a linguagem de pro- w.facebook.com/k19treinamentos 7

INTRODUÇÃO 8 gramação Java:

1 while (lineMeasurer.getPosition() < paragraphEnd) { 2 TextLayout layout = lineMeasurer.nextLayout(formatWidth); 3 drawPosY += layout.getAscent(); 4 float drawPosX; 5 6 if (layout.isLeftToRight()) { 7 drawPosX = 0; 8 } else { 9 drawPosX = formatWidth - layout.getAdvance(); 10 } 1 }

Código Java 1.1: Exemplo de código em Java

Por enquanto, você não precisa se preocupar em entender o que está escrito no código acima.

Apenas, observe que um programa escrito em linguagem de programação é bem mais fácil de ser lido do que um programa escrito em linguagem de máquina.

MaisSobre A maioria das linguagens de programação são case sensitive. Isso significa que elas diferenciam as letras maiúsculas das minúsculas. Portanto, ao escrever o código de um programa, devemos tomar cuidado para não trocar uma letra maiúscula por uma letra minúscula ou vice-versa.

Compilador

Vimos que os computadores são capazes de processar o código escrito em linguagem de máquina. Tambémvimosqueéinviáveldesenvolverumprogramaemlinguagemdemáquina. Porisso, existemaslinguagensdeprogramação. Daísurgeumapergunta: seoscomputadoresentendemapenas comandos em linguagem de máquina, como eles podem executar código escrito em linguagem de programação?

Na verdade, os computadores não executam código escrito em linguagem de programação. Esse código que é denominado código fonte deve ser traduzido para código em linguagem de máquina. Essa tradução é realizada por programas especiais chamados compiladores.

CÓDIGO FONTECOMPILADORCÓDIGO DE MÁQUINAPROCESSADOREXECUTA Figura 1.1: Processo de compilação e execução de um programa

8 w.k19.com.br

9 INTRODUÇÃO

Máquinas Virtuais

Como vimos anteriormente, o código fonte de um programa deve ser compilado para que esse programa possa ser executado por um computador. Além disso, vimos que os compiladores geram executáveis específicos para um determinado sistema operacional e uma determinada arquitetura de processador. Qual é o impacto disso para quem desenvolve sistemas para múltiplas plataformas?

A empresa que deseja ter uma aplicação disponível para diversos sistemas operacionais (Windows, Linux, Mac OS X, etc) e arquiteturas de processadores (Intel, ARM, PowerPC, etc) deverá desenvolveremanterumcódigofonteparacadaplataforma(sistemaoperacional+arquiteturadeprocessador). Consequentemente, os custos dessa empresa seriam altos.

PROGRAMA 1PLATAFORMA 1EXECUTA

EXECUTAPROGRAMA 2PLATAFORMA 2

NÃO EXECUTAPROGRAMA 2PLATAFORMA 3 Figura 1.12: Ilustração mostrando que cada plataforma necessita de um executável específico.

Para diminuir os custos e aumentar a produtividade, podemos utilizar máquinas virtuais. Em um ambiente que utiliza máquina virtual, quando o código fonte é compilado, ele é traduzido para um código escrito na linguagem da máquina virtual. A linguagem da máquina virtual também pode ser considerada uma linguagem de máquina. Na execução, a máquina virtual traduz os comandos em linguagem de máquina virtual para comandos em linguagem de máquina correspondente à plataforma utilizada.

(Parte 1 de 4)

Comentários