Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
IMPERATRIZ – MA
2014
Sumário
1. Sobre a disciplina .......................................................................................................... 10
1.1. Sobre o professor ................................................................................................... 10
1.2. Plano de Ensino ..................................................................................................... 10
2. Introdução a Ciência da Computação .......................................................................... 13
2.1. Computadores ........................................................................................................ 14
2.1.1. Hardware ....................................................................................................... 14
2.1.2. Software ......................................................................................................... 32
2.2. Smartphones .......................................................................................................... 38
2.3. Necessidade Social e o Uso de Computadores ....................................................... 40
2.4. Sistema Computacional ......................................................................................... 40
2.5. Questões de Revisão ............................................................................................... 41
3. Álgebra Booleana .......................................................................................................... 42
3.1. Logica Binária ....................................................................................................... 43
3.1.1. Conversões Binário – Decimal ....................................................................... 44
3.1.2. Conversões Decimal – Binário ....................................................................... 44
3.1.3. Faixa de contagem.......................................................................................... 45
3.2. Sistema de Numeração Octal ................................................................................. 45
3.2.1. Conversão Octal – Decimal ............................................................................ 45
3.2.2. Conversão Decimal – Octal ............................................................................ 45
3.2.3. Conversão Octal - Binário ............................................................................. 46
3.2.4. Conversão Binário – Octal ............................................................................. 46
3.2.5. Contando em Octal ........................................................................................ 46
3.2.6. Utilidade do Sistema Octal............................................................................. 47
3.3. Sistema de Numeração Hexadecimal .................................................................... 47
3.3.1. Conversão Hexadecimal – Decimal ............................................................... 47
3.3.2. Conversão Decimal – Hexadecimal ............................................................... 48
3.3.3. Conversão Hexadecimal – Binário ................................................................ 48
3.3.4. Conversão Binário – Hexadecimal ................................................................ 49
3.3.5. Contando em Hexadecimal ............................................................................ 49
3.4. Códigos Alfanuméricos .......................................................................................... 49
3.5. Tabelas – Verdade ................................................................................................. 52
3.5.1. Operador OR (OU) ........................................................................................ 52
3.5.2. Operador AND (E) ......................................................................................... 53
3.5.3. Operador NOT (NÃO) ................................................................................... 53
3.5.4. Teoremas da Álgebra Booleana ..................................................................... 53
3.6. Questões de Revisão ............................................................................................... 55
4. Lógica de Programação................................................................................................. 56
4.1. Formas de Representação Gráfica ........................................................................ 56
4.2. Princípios de Resolução de Problemas .................................................................. 57
4.3. Português Estruturado .......................................................................................... 60
4.4. Conceito de Variável .............................................................................................. 60
4.4.1. Tipo de dados ................................................................................................. 61
4.5. O Uso de Variáveis................................................................................................. 61
4.6. Operadores Aritméticos ........................................................................................ 62
4.7. As Expressões Aritméticas..................................................................................... 63
4.8. Entrada e Saída de Dados...................................................................................... 63
4.9. VisuAlg ................................................................................................................... 66
5. Estrutura de Controle – Tomada de Decisões .............................................................. 71
5.1. Operadores Relacionais ......................................................................................... 73
5.2. Desvio Condicional Composto ............................................................................... 73
5.3. Desvios Condicionais Encadeados ......................................................................... 76
5.4. Operadores Lógicos ............................................................................................... 78
5.5. Exercícios ............................................................................................................... 79
6. Estruturas de Controle – Laços ou Malhas de Repetição ............................................ 83
6.2. Repetição do Tipo: Variável de Controle .............................................................. 89
6.3. Estrutura de Controle Encadeadas ....................................................................... 91
6.3.1. Encadeamento de Estruturas Enquanto com Enquanto ............................... 91
6.3.2. Estrutura Enquanto com Para ...................................................................... 92
6.3.3. Encadeamento de Estrutura Para com Para ................................................. 93
6.3.4. Encadeamento de Estrutura Para com Enquanto ........................................ 94
6.4. Exercícios ............................................................................................................... 97
7. Linguagem de Programação ......................................................................................... 99
7.1. Linguagem C/C++ ................................................................................................. 99
7.2. Compilador de C.................................................................................................. 100
7.3. Estrutura Sequencial em C/C++ ......................................................................... 102
7.3.1. Declaração de variáveis................................................................................ 103
7.3.2. Comando de atribuição ................................................................................ 104
7.3.3. Comandos de entrada em C/C++................................................................. 104
7.3.4. Comando de Saída em C/C++ ...................................................................... 106
7.3.6. Operadores e funções predefinidas em C/C++ ............................................ 110
7.4. Exercícios ............................................................................................................. 112
8. Estrutura Condicional................................................................................................. 113
8.1. Estrutura Condicional Simples ........................................................................... 113
8.2. Estrutura Condicional Composta ....................................................................... 113
8.3. Operadores Lógicos ............................................................................................. 114
8.4. Exercícios ............................................................................................................. 114
9. Estrutura de Repetição. .............................................................................................. 116
9.1. Estrutura de Repetição For ................................................................................. 116
9.2. Estrutura de Repetição While.............................................................................. 117
9.3. Exercícios ............................................................................................................. 117
10. Estrutura de Dados Homogêneas ............................................................................ 119
10.1. Matrizes de uma Dimensão ou Vetores ........................................................... 119
10.2. Operações Básicas com Matrizes do Tipo Vetor ............................................. 120
10.2.1. Atribuição de uma Matriz ........................................................................... 120
10.2.2. Leitura dos Dados de uma Matriz ............................................................... 120
10.2.3. Escrita dos Dados de uma Matriz ................................................................ 122
10.3. Exercício de Aprendizagem ............................................................................. 124
10.4. Vetor em C/C++ ............................................................................................... 128
10.4.1. Declaração de Vetor ..................................................................................... 128
10.4.2. Atribuindo Valores ao Vetor ....................................................................... 128
10.4.3. Carregando um Vetor .................................................................................. 128
10.4.4. Imprimindo um Vetor .................................................................................. 128
10.4.5. Exercícios ..................................................................................................... 129
11. Estruturas de Dados Homogêneas II ...................................................................... 130
11.1. Matrizes com Mais de uma Dimensão ............................................................. 130
11.2. Operações Básicas com Matrizes de Duas Dimensões .................................... 130
11.2.1. Atribuição de uma Matriz ........................................................................... 131
11.2.2. Leitura dos Dados de uma Matriz ............................................................... 131
11.3. Exercício de Aprendizagem ............................................................................. 134
11.4. Matriz em C/C++ ............................................................................................. 143
11.4.1. Declaração de Matriz ................................................................................... 143
11.4.2. Atribuindo Valores à Matriz ....................................................................... 144
11.4.3. Carregando uma Matriz .............................................................................. 144
11.4.4. Mostrando os Elementos de uma Matriz ..................................................... 144
11.5. Exercícios ......................................................................................................... 145
12. Referências Bibliográficas ....................................................................................... 147
Lista de Figuras
Figura 1: Periféricos de Entradas. (a) Teclado. (b) Mouse. (c) Webcam. .................................. 15
Figura 2: Periféricos de Saída. (a) Monitor. (b) Impressora 3D. (c) Impressora 2D. ................. 15
Figura 3: Placa Mãe. ............................................................................................................... 16
Figura 4: Placas de Vídeo ........................................................................................................ 17
Figura 5: Placas de Som .......................................................................................................... 17
Figura 6: Placas de rede. (a) Placa ethernet com um cabo de par trançado e o conector RJ-45. (b)
Placa ethernet wireless. ........................................................................................................... 18
Figura 7: Dispositivos de Armazenamentos. Disquetes, cartões de memória, pendrives, CDs e
HDs. ....................................................................................................................................... 21
Figura 8: MROM utilizada para jogos de vídeo game como “Garfield”, "Virtual Fighter" e
"Sonic" no Game Gear da Sega. .............................................................................................. 22
Figura 9: Memória PROM. A memória foi criada a pedido da Força Aérea dos Estados Unidos,
que procurava uma maneira mais flexível e segura de armazenar as constantes de alvo no
computador digital do Atlas E/F ICBM. .................................................................................. 22
Figura 10: Memória EPROM. Alguns micro controladores, frequentemente aqueles de antes da
era da memória flash, usam EPROM interna para armazenar seus programas. Isto é útil para
desenvolvimentos, pois usar dispositivos programáveis apenas uma vez seria terrivelmente
difícil de depurar. .................................................................................................................... 23
Figura 11: Memória EEPROM. Muito utilizada em alguns micro controladores devido ao seu
baixo custo em relação as memórias flash. .............................................................................. 23
Figura 12: Memória flash. É uma variação moderna da EEPROM, mas existe na indústria uma
convenção para reservar o termo EEPROM para as memórias de escrita bit a bit, não incluindo
as memórias de escrita bloco a bloco, como as memórias flash. Pen drivers e cartões de
memórias são exemplos deste tipo de memória. ....................................................................... 24
Figura 13: Resumo das Memórias ROM. ................................................................................. 24
Figura 14:Memórias DDR1, DDR2 e DDR3. Esta útlima mais comum nos computadores atuais.
............................................................................................................................................... 27
Figura 15: Comunicação unidade central de processamento e as memórias RAM. A memória
cache (SRAM) serve de intermediário entre um operador de um processo e o dispositivo de
armazenamento ao qual esse operador acede. A vantagem principal na utilização de um cache
consiste em evitar o acesso ao dispositivo de armazenamento - que pode ser demorado -
armazenando os dados em meios de acesso mais rápidos. A memória principal (DRAM) tem
uma velocidade inferior comparada a memória cache mas consegue armazenar uma quantidade
maior de informação a um custo menor. .................................................................................. 27
Figura 16: Unidade Central de Processamento com seus respectivos barramentos de
comunicação. .......................................................................................................................... 28
Figura 17: Evolução dos microprocessadores no decorrer do tempo. ........................................ 30
Figura 18: Gabinetes Slim e Gabinete torre são alguns exemplos de case. ................................ 32
Figura 19:Exemplos da parte traseira de gabinetes. Pode-se observar as diferentes conexões para
periféricos. .............................................................................................................................. 32
Figura 20: Logos dos principais sistemas operacionais. (a) Windows. (b) Linux. (c) MAC OS
(chamado atualmente de OS X). .............................................................................................. 33
Figura 21: (a) MS-DOS. Sistema operacional que não tem uma interface gráfica amigável,
funcionando exclusivamente através de comandos. (b) Windows 1.0. Nesta versão ele ainda não
era considerado um sistema operacional pois funcionava apenas como uma interface gráfica do
MS-DOS................................................................................................................................. 34
Figura 22: Windows 8.1. Interface da mais nova versão do windows. ...................................... 34
Figura 23: (a) Logo do SO Ubuntu com o seu lema: "Linux para seres humanos". (b) Interface
gráfica do Ubuntu. .................................................................................................................. 35
Figura 24: Interface gráfica do OS X. ...................................................................................... 36
Figura 25: Logos de Softwares Aplicativos. Microsoft Office, Flash Player, Adobe Reader e os
browsers de internet são alguns exemplos de softwares aplicativos. ......................................... 37
Figura 26: Tela inicial de um smartphone com o Android. ....................................................... 38
Figura 27: iOS7 em um Iphone. .............................................................................................. 39
Figura 28: Windows mobile 8 embarcado em smartphone da Nokia. ....................................... 39
Figura 29: O Sistema computacional é formado por hardware, software e peopleware. ............ 40
Figura 30: George Simon Boole. ............................................................................................. 42
Figura 31: Claude B. Shannon. ................................................................................................ 42
Figura 32: Conversão do número binário 11011 no seu equivalente 27 em decimal.................. 44
Figura 33: Conversão do número binário 10110101 no seu equivalente 181 em decimal. ......... 44
Figura 34: Conversão do número decimal 25 para o seu equivalente 11001 em binário. ........... 44
Figura 35: Conversão do número octal 372 para o seu equivalente 250 em dicimal. ................. 45
Figura 36: Conversão do número decimal 266 no seu equivalente 412 octal. ........................... 45
Figura 37: Conversão do número octal 472 no seu equivalente binário 100111010. ................. 46
Figura 38: Conversão do binário 100111010 para o seu equivalente 472 em octal. ................... 46
Figura 39: Conversão dos números hexadecimais 356 e 2AF nos seus respectivos equivalentes
em decimais 854 e 687. ........................................................................................................... 48
Figura 40: Conversão do número decimal 423 no seu equivalente em hexadecimal 1A7. ......... 48
Figura 41: Conversão do número hexadecimal 9F2 no seu equivalente em binário
100111110010. ....................................................................................................................... 49
Figura 42: Conversão do binário 1110100110 para o seu equivalente em hexadecimal 3A6. .... 49
Figura 43: Exemplos de tabelas verdade. (a) Tabela com duas variáveis de entrada (A e B). (b)
Tabela com 3 variáveis de entrada (A, B e C). (c) Tabela com 4 variáveis de entrada (A, B, C e
D). Todas as tabelas têm uma única saída x. ............................................................................ 52
Figura 44: Teoremas da Álgebra Booleana com uma variável. ................................................. 54
Figura 45: Equações dos teoremas da Álgebra Booleana com mais de uma variável. ............... 54
Figura 46: Teoremas de DeMorgan. ........................................................................................ 54
Figura 47: Diagrama de bloco para o cálculo da média escolar. ............................................... 58
Figura 48: Diagramas apresentando a entrada das notas e saída se houve aprovação. ............... 58
Figura 49: Uso de uma condição em um diagrama de blocos. .................................................. 59
Figura 50: Exemplo da utilização das variáveis. ...................................................................... 59
Figura 51: Estruturas dos símbolos para as instruções leia e escreva. ....................................... 64
Figura 52: Diagrama de blocos para a leitura, soma de dois valores e apresentação dos
resultados. ............................................................................................................................... 65
Figura 53: Tela Inicial do VisuAlg. ......................................................................................... 67
Figura 54: Estrutura do símbolo para a instrução se...então...fimse. ......................................... 71
Figura 55: Fluxograma para a resolução deste problema. ......................................................... 72
Figura 56: Estrutura do símbolo para a instrução se...entao...senao...fimse. ............................. 74
Figura 57: Fluxograma para a resolução deste problema. ......................................................... 75
Figura 58: Estrutura condicional composta ou encadeada. ....................................................... 76
Figura 59: Exemplo de utilização de uma estrutura condicional encadeada. ............................. 77
Figura 60: Diagrama de Blocos. .............................................................................................. 84
Figura 61: Diagrama de blocos para a solução do problema. .................................................... 85
Figura 62: Diagrama de blocos para a solução deste problema. ................................................ 87
Figura 63: Estrutura do símbolo da instrução para...fim_para. ............................................... 89
Figura 64: Exemplo da utilização da estrutura para..de...até...passo...faça...fim_para. ........... 90
Figura 65: Encadeamento Enquanto com Enquanto. ................................................................ 91
Figura 66: Encadeamento Enquanto com Para. ........................................................................ 92
Figura 67: Encadeamento de Para com Para. ........................................................................... 93
Figura 68: Encadeamento de Para com Enquanto. ................................................................... 94
Figura 69: Fatorial com estrutura Enquanto. ............................................................................ 95
Figura 70: Fatorial com estrutura Para. .................................................................................... 97
Figura 71: Dennis Ritchie. Criador da linguagem C. ................................................................ 99
Figura 72: Bjarne Stroustrup. Criador da linguagem C++. ..................................................... 100
Figura 73: Tela do compilador Dev C++. .............................................................................. 101
Figura 74: Tela do compilador Code::Blocks. ........................................................................ 102
Figura 75: Saída após executar o programa acima. ................................................................ 108
Figura 76: Saída após executar o programa acima. ................................................................ 109
Figura 77: Diagrama de blocos para leitura dos elementos de uma matriz tipo vetor. ............. 121
Figura 78: Diagrama de bloco para escrita dos elementos de uma matriz tipo vetor. ............... 123
Figura 79: Diagrama de blocos para o 1º Exemplo. ................................................................ 125
Figura 80: Diagrama de blocos para o 2º exemplo. ................................................................ 127
Lista de Tabelas
Tabela 1: Tabela comparativa entre DRAM e SRAM. Em vermelho características negativas e
em verde características positivas. ........................................................................................... 26
Tabela 2: Evolução dos microprocessadores com as informações detalhadas de alguns modelos.
............................................................................................................................................... 31
Tabela 3: Evolução dos microprocessadores em um mesmo modelo e os seus respectivos
valores em dólares americanos. ............................................................................................... 31
Tabela 4: Múltiplos do Byte. Pode-se observar os prefixos binários da IEC (Comissão
Eletrotécnica Internacional) onde 1 kibibyte = 1024 bytes. Nos múltiplos utilizandos pelo SI 1
Kilobyte = 1000 Bytes. ........................................................................................................... 43
Tabela 5: Equivalência da numeração octal com o sistema binário. .......................................... 46
Tabela 6: Relação entre os número Hexadecimais, Decimais e Binários. ................................. 47
Tabela 7: Listagem parcial do código ASCII. .......................................................................... 51
Tabela 8: Tabela verdade do operador booleano OR (OU). ...................................................... 52
Tabela 9: Tabela verdade do operador booleano AND (E). ...................................................... 53
Tabela 10: Tabela verdade do operador booleano NOT (NÃO). ............................................... 53
Tabela 11: Prioridades nas operações matemáticas. ................................................................. 63
Tabela 12: Valores das variáveis antes e durante a execução do looping. ................................. 96
Tabela 13: Tabela constando os tipos de dados, suas faixas de valores e o seu tamanho
aproximado. .......................................................................................................................... 104
Tabela 14: Especificadores para a função scanf..................................................................... 105
Tabela 15: Parâmetros para especificar o tipo de dados que será impresso. ............................ 107
Tabela 16: Operador de atribuição. ....................................................................................... 110
Tabela 17: Operadores matemáticos. .................................................................................... 110
Tabela 18: Operadores matemáticos de atribuição. ................................................................ 110
Tabela 19: Operadores Relacionais........................................................................................ 111
Tabela 20: Funções matemáticas. .......................................................................................... 111
Tabela 21: Palavras reservadas de C/C++. ............................................................................. 111
Tabela 22: Tabela verdade. ................................................................................................... 114
Tabela 23: Exemplo para o aprendizado de vetores e matrizes. Notas e médias dos alunos..... 119
Tabela 24: Valores armazenados dentro do vetor MD em seus respectivos índices. ................ 122
Lista de Equações
Equação 1: Exemplo de simplificação utilizando os Teoremas de DeMorgan. .......................... 54
Equação 2: Exemplo de simplificação utilizando os teoremas (13a), (8) e (6). ......................... 54
1. Sobre a disciplina
PLANO DE ENSINO
1. IDENTIFICAÇÃO DA DISCIPLINA
NOME DA DISCIPLINA CÓDIGO DA DISCIPLINA
INTRODUÇÃO A CIÊNCIA DA COMPUTAÇÃO COEA0073
Nº. HORAS-AULAS SEMANAIS Nº. HORAS-AULAS SEMESTRAIS
Teóricas Práticas 60h
2h 2h
2. PROFESSOR
Prof. Dr. Daniel Duarte Costa
3. EMENTA
Noções de sistemas de computação. Formulação de algoritmos e sua representação.
Descrição de algumas aplicações típicas.
4. OBJETIVOS
Introduzir o aluno no mundo da informática através do uso teórico e prático do computador
por meio do estudo de algoritmos e da programação em uma linguagem de alto nível.
5. CONTEÚDO PROGRAMÁTICO
INTRODUÇÃO A INFORMÁTICA
Histórico e evolução; Noções de arquitetura de computadores (componentes); Noções de
sistemas operacionais; Linguagens de programação.
NOÇOES DE ALGORITMOS
Definições básicas e exemplos de algoritmos em forma textual; Variáveis e tipos de dados;
Entrada e saída e estruturas de controle de fluxo; Formas de representação de algoritmos:
Pseudocódigo; Fluxogramas; Algoritmos estruturados; Relacionamento entre as diversas
representações de algoritmos; Exemplo de algoritmos.
7. METODOLOGIA DE AVALIAÇÃO
Assiduidade, participação em aulas, Avaliações.
8. BIBLIOGRAFIA BÁSICA
Curso essencial de Lógica de Programação, Marilane Almeida, São Paulo, Digerati Books,
2008.
Estudo Dirigido de Linguagem C, José Augusto N. G. Manzano, 13ª Ed., Editora Érica.
___________________________ ______________________________
Professor Coordenador de Curso
2. Introdução a Ciência da Computação
2.1. Computadores
2.1.1. Hardware
Figura 2: Periféricos de Saída. (a) Monitor. (b) Impressora 3D. (c) Impressora 2D.
REALTEK: http://www.realtek.com.tw/
VIA Technologies: http://www.via.com.tw/
Creative Labs: http://us.creative.com/
Figura 6: Placas de rede. (a) Placa ethernet com um cabo de par trançado e o conector RJ-45. (b) Placa
ethernet wireless.
Uma memória somente de leitura propriamente dita vem com seu conteúdo
gravado durante a fabricação. Atualmente, o termo Memória ROM é usado
informalmente para indicar uma gama de tipos de memória que são usadas apenas para a
leitura na operação principal de dispositivos eletrônicos digitais, mas possivelmente
podem ser escritas por meio de mecanismos especiais. Entre esses tipos encontramos as
PROM, as EPROM, as EEPROM e as memórias flash. Ainda de forma mais ampla, e de
certa forma imprópria, dispositivos de memória terciária, como CD-ROMs, DVD-ROMs,
BD-ROMs, também são algumas vezes citados como memória ROM.
Figura 8: MROM utilizada para jogos de vídeo game como “Garfield”, "Virtual Fighter" e "Sonic" no
Game Gear da Sega.
Figura 9: Memória PROM. A memória foi criada a pedido da Força Aérea dos Estados Unidos, que
procurava uma maneira mais flexível e segura de armazenar as constantes de alvo no computador digital
do Atlas E/F ICBM.
Figura 10: Memória EPROM. Alguns micro controladores, frequentemente aqueles de antes da era da
memória flash, usam EPROM interna para armazenar seus programas. Isto é útil para desenvolvimentos,
pois usar dispositivos programáveis apenas uma vez seria terrivelmente difícil de depurar.
Figura 11: Memória EEPROM. Muito utilizada em alguns micro controladores devido ao seu baixo
custo em relação as memórias flash.
Memória Flash
o Memória não-volátil de alta velocidade de acesso e baixo custo.
Figura 12: Memória flash. É uma variação moderna da EEPROM, mas existe na indústria uma
convenção para reservar o termo EEPROM para as memórias de escrita bit a bit, não incluindo as
memórias de escrita bloco a bloco, como as memórias flash. Pen drivers e cartões de memórias são
exemplos deste tipo de memória.
Algumas das aplicações mais comum entre das memórias ROM são:
Firmware
o Disponíveis no processo de inicialização de sistemas microprocessados.
o Ex: Computadores, DVD players, microondas e diversos tipos de
máquinas industriais.
Tabela de Dados
o Usadas para armazenar valores que não mudam.
o Ex: Tabelas Trigonométricas e tabelas de conversão de código.
Conversor de Código
o É necessária quando precisamos converter de um código para outro, por
exemplo, um computador está fornecendo uma saída em binário simples e
queremos convertê-lo para BCD para que possa ser mostrado em um
display de 7 segmentos.
Gerador de funções
o Circuito capaz de formar ondas como senóides, triangulares e quadradas.
o Ex: Gerador de função e sintetizador de voz.
Armazenamento auxiliar
o Por serem memórias não-voláteis, de alta velocidade, com baixo consumo
e não possuírem partes móveis, módulos de memória flash estão se
tornando alternativas aos discos magnéticos.
o Ex: Cartões de memória, pendrive, SSDs, celulares, câmeras e players de
mídia com armazenamento interno.
Tabela 1: Tabela comparativa entre DRAM e SRAM. Em vermelho características negativas e em verde
características positivas.
Comparativo entre as memórias DRAM e SRAM
DRAM SRAM
Maior complexidade Menor complexidade
Maior capacidade de armazenamento Menor capacidade de armazenamento
Maior consumo de energia Menor consumo de energia
Menor custo Maior custo
Menor tamanho Maior tamanho
Menor velocidade Maior velocidade
Memória Cache:
o Para computadores pessoais alcançarem maiores desempenhos, são
utilizadas memórias de altas velocidades para acompanhar o processador.
Memória First-In, First-Out (FIFO)
o Útil como um buffer de transferência de dados, entre sistemas que
transferem dados a taxas diferentes.
o Ex: Computador – Impressora ou Teclado – Computador.
Figura 15: Comunicação unidade central de processamento e as memórias RAM. A memória cache (SRAM) serve de
intermediário entre um operador de um processo e o dispositivo de armazenamento ao qual esse operador acede. A
vantagem principal na utilização de um cache consiste em evitar o acesso ao dispositivo de armazenamento - que
pode ser demorado - armazenando os dados em meios de acesso mais rápidos. A memória principal (DRAM) tem
uma velocidade inferior comparada a memória cache mas consegue armazenar uma quantidade maior de
informação a um custo menor.
Figura 16: Unidade Central de Processamento com seus respectivos barramentos de comunicação.
Sobre a arquitetura de von Neumann a CPU pode ser uma instrução de leitura,
escrita de dados de memória, ou para memória. Ambas as instruções, não podem ocorrer
ao mesmo tempo, uma vez que as instruções e os dados fazem o uso do sistema de
barramento. Em um computador que utiliza a arquitetura Harvard, a CPU pode ler uma
instrução e executar um acesso à memória de dados ao mesmo tempo, mesmo sem cache,
pode assim ser mais rápido para um circuito de complexidade dada porque a instrução
busca o acesso a dados, sem acontecer por uma via única de memória.
Tabela 3: Evolução dos microprocessadores em um mesmo modelo e os seus respectivos valores em dólares
americanos.
2.1.1.10. Gabinete
Figura 18: Gabinetes Slim e Gabinete torre são alguns exemplos de case.
Na parte de trás do gabinete é onde encontramos as conexões para os
periféricos de entrada e saída de dados do computador. A Figura 19 ilustra estas conexões
nos gabinetes.
Figura 19:Exemplos da parte traseira de gabinetes. Pode-se observar as diferentes conexões para
periféricos.
2.1.2. Software
Entre esses vários softwares de sistemas convêm falar um pouco mais sobre
o sistema operacional que é um programa ou um conjunto de programas cuja função é
gerenciar os recursos do sistema (definir qual programa recebe atenção do processador,
gerenciar memória, criar um sistema de arquivos, etc.), fornecendo uma interface entre o
computador e o usuário. Embora possa ser executado imediatamente após a máquina ser
ligada, a maioria dos computadores pessoais de hoje o executa através de outro programa
armazenado em uma memória ROM chamado BIOS (Basic Input/Output System -
Sistema Básico de Entrada/Saída) num processo chamado bootstrapping, conceito em
inglês usado para designar processos autossustentáveis, ou seja, capazes de prosseguirem
sem ajuda externa. Após executar testes e iniciar os componentes da máquina (monitores,
discos, etc), o BIOS procura pelo sistema operacional em alguma unidade de
armazenamento, geralmente o disco rígido, e a partir daí, o sistema operacional assume o
controle da máquina. O sistema operacional reveza sua execução com a de outros
programas, como se estivesse vigiando, controlando e orquestrando todo o processo
computacional.
Figura 20: Logos dos principais sistemas operacionais. (a) Windows. (b) Linux. (c) MAC OS (chamado
atualmente de OS X).
2.1.2.1.1. Windows
Figura 21: (a) MS-DOS. Sistema operacional que não tem uma interface gráfica amigável, funcionando
exclusivamente através de comandos. (b) Windows 1.0. Nesta versão ele ainda não era considerado um
sistema operacional pois funcionava apenas como uma interface gráfica do MS-DOS.
2.1.2.1.2. Linux
Figura 23: (a) Logo do SO Ubuntu com o seu lema: "Linux para seres humanos". (b) Interface gráfica do
Ubuntu.
2.1.2.1.3. Mac OS
De início as pastas eram criadas renomeando-se uma "Pasta Vazia" que estava
sempre na raiz do disco. A partir do System 2.0 o sistema foi modificado, com a inclusão
do comando "Nova Pasta" no menu Arquivo do Finder.
Existem diferentes tipos de licenças para estes softwares, a mais conhecidas são:
2.2. Smartphones
Android
o É um sistema operacional baseado no núcleo do Linux para dispositivos
móveis, desenvolvido pela Open Handset Alliance, liderada pelo Google
Inc.
o Utilizado por vários fabricantes de celulares, como HTC, Samsung, Sony,
Motorola, LG e etc.
Windows Mobile
o É um sistema operacional compacto, desenvolvido para rodar em
dispositivos móveis como Pocket PCs, Smartphones e aparelhos de
multimídia em geral. Projetado para ser capaz de realizar boa parte do que
é possível em uma versão PC do Windows, o sistema vem com um
conjunto de aplicações básicas bem conhecidas no mundo dos PCs, tais
como o Word, Excel, PowerPoint, Windows Media Player Pocket.
o Atualmente os Windows Phone são produzidos pela Samsung e pela
Nokia.
Para resolver problemas do cotidiano e facilitar o dia a dia das pessoas, muitas
aplicações computacionais tornaram-se corriqueiras e passam despercebidas por olhos
desatentos. Por exemplo:
Armazenamento de grandes volumes de informações e sua
recuperação em tempo hábil;
Computação de cálculos matemáticos complexos em intervalos de
tempo relativamente muito inferiores aos modos convencionais;
Comunicação segura, rápida e confiável;
Automação, controle e monitoração de sistemas complexos;
Computação rápida de cálculos repetitivos envolvendo grandes
volumes de dados;
Processamento de voz e imagem;
Jogos e ferramentas para suporte ao ensino/aprendizagem;
Realidade virtual com aplicações aos fins mais diversos
(entretenimento, medicina, robótica);
Ferramentas para suporte a projetos (arquitetura, desenho industrial
engenharias);
Ferramentas para geoprocessamento de dados (engenharia agrícola,
agronomia, planejamento urbano, meio ambiente).
Bit (Binary Digit): é a menor unidade de informação que pode ser armazenada ou
transmitida. Usada na Computação e na Teoria da Informação. Um bit pode
assumir somente 2 valores, por exemplo: 0 ou 1, verdadeiro ou falso.
Byte (Binary Term): é um dos tipos de dados integrais em computação. É usado
com frequência para especificar o tamanho ou quantidade da memória ou da
capacidade de armazenamento de um certo dispositivo, independentemente do
tipo de dados. A codificação padronizada de byte foi definida como sendo de 8
bits.
Tabela 4: Múltiplos do Byte. Pode-se observar os prefixos binários da IEC (Comissão Eletrotécnica
Internacional) onde 1 kibibyte = 1024 bytes. Nos múltiplos utilizandos pelo SI 1 Kilobyte = 1000 Bytes.
Múltiplos do Byte
Prefixo Binário (IEC) Prefixo do SI
Nome Símbolo Múltiplo Nome Símbolo Múltiplo
Byte B 20 byte B 100
10
Kibibyte KiB 2 Kilobyte kB 103
20
mebibyte MiB 2 megabyte MB 106
30
Gibibyte GiB 2 gigabyte GB 109
40
Tebibyte TiB 2 terabyte TB 1012
50
Pebibyte PiB 2 petabyte PB 1015
60
Exbibyte EiB 2 exabyte EB 1018
Zebibyte ZiB 270 zettabyte ZB 1021
Yobibyte YiB 280 yottabyte YB 1024
Note que a letra “B” é escrita em maiúscula, caso o símbolo esteja escrito com letra
minúscula trata-se de bit e não Byte.
3.1.1. Conversões Binário – Decimal
Figura 33: Conversão do número binário 10110101 no seu equivalente 181 em decimal.
Figura 34: Conversão do número decimal 25 para o seu equivalente 11001 em binário.
3.1.3. Faixa de contagem
Figura 35: Conversão do número octal 372 para o seu equivalente 250 em dicimal.
Figura 36: Conversão do número decimal 266 no seu equivalente 412 octal.
3.2.3. Conversão Octal - Binário
Figura 37: Conversão do número octal 472 no seu equivalente binário 100111010.
Figura 38: Conversão do binário 100111010 para o seu equivalente 472 em octal.
A facilidade com que as conversões podem ser feitas entre octal e binário
torna o sistema octal atrativo como um modo compacto de expressar número binários
grandes. No trabalho com computadores, número binários com até 64 bits não são
incomuns e quando lidamos com uma grande quantidade de números binários, de vários
bits, é conveniente e mais eficiente escrevermos os números em octal em vez de binário.
Não devemos esquecer, no entanto, que circuitos e sistemas digitais trabalham
exclusivamente em binário; usamos octal somente por conveniência para os operadores
do sistema.
Figura 40: Conversão do número decimal 423 no seu equivalente em hexadecimal 1A7.
Figura 42: Conversão do binário 1110100110 para o seu equivalente em hexadecimal 3A6.
Figura 43: Exemplos de tabelas verdade. (a) Tabela com duas variáveis de entrada (A e B). (b) Tabela
com 3 variáveis de entrada (A, B e C). (c) Tabela com 4 variáveis de entrada (A, B, C e D). Todas as
tabelas têm uma única saída x.
Até este ponto observou-se como a álgebra booleana pode ser usada para nos
ajudar a analisar uma combinação lógica e expressar sua operação matematicamente. Em
seguida poderá ser observado os teoremas booleanos que podem nos ajudar a simplificar
expressões e circuitos lógicos.
Figura 45: Equações dos teoremas da Álgebra Booleana com mais de uma variável.
𝑍 = ̅̅̅̅̅̅̅̅̅̅
𝐴 ∙ 𝐵 ∙ 𝐶̅ = 𝐴̅ + 𝐵̅ + 𝐶̅ = 𝐴̅ + 𝐵̅ + 𝐶
Equação 1: Exemplo de simplificação utilizando os Teoremas de DeMorgan.
Do ponto de vista deste trabalho, problema é uma questão que foge a uma
determinada regra, ou melhor, é o desvio de um percurso, o qual impede de atingir um
determinado objetivo com eficiência e eficácia.
As formas de representação gráfica são nada mais do que uma maneira mais
simples e concisa de representar os dados sobre uma superfície plana, por meio de
diferentes formas, de modo a facilitar a visualização completa e imediata de dados ou
fenômenos tabulados.
Sabe-se que existe uma grande variedade de símbolos usados nas mais
diversas áreas administrativas, bem como dentro das áreas técnicas da Tecnologia da
Informação, tais como: programação, teleprocessamento, análise de sistemas, etc.
A seguir alguns dos símbolos mais conhecidos e utilizados ao longo dos anos
pelos profissionais de processamento de dados.
4.2. Princípios de Resolução de Problemas
Figura 48: Diagramas apresentando a entrada das notas e saída se houve aprovação.
Como foi visto até agora, o diagrama de blocos é a primeira forma de notação
gráfica, mas existe outra, que é uma técnica narrativa denominada pseudocódigo,
também conhecida como português estruturado ou chamada por alguns de portugol.
É muito comum lidarmos com expressões aritméticas, uma vez que a maior
parte do todo trabalho computacional está relacionado e envolve a utilização de cálculos.
Estas expressões são definidas pelo relacionamento existente entre variáveis e constantes
numéricas por meio da utilização dos operadores aritméticos.
O sinal implicado ou atribuído (<-) é utilizado para indicar que o valor de uma
expressão aritmética ou fórmula matemática está sendo armazenado em uma variável. No
caso da fórmula para o cálculo de área de um circunferência, ela é escrita em Portugol da
seguinte forma: 𝐴𝑅𝐸𝐴 < − 3.14159 ∗ RAIO ∗ RAIO.
Algoritmo:
Figura 52: Diagrama de blocos para a leitura, soma de dois valores e apresentação dos resultados.
4.9. VisuAlg
4.10. Exercícios
4.10.2. Classifique os conteúdos das variáveis a seguir de acordo com seu tipo,
assinalando com I para inteiros, R para reais, L para lógicos e C para literais:
4.10.3. Assine com um X os nomes de variáveis válidos:
Algoritmo:
Observe que após a definição dos tipos de variáveis, é solicitada a leitura dos
valores para as variáveis A e B, depois esses valores são implicados na variável X, a qual
possui o resultado da adição dos dois valores. Neste ponto, é questionado no programa
uma condição que permitirá imprimir o resultado da soma adicionado de 5, caso esta seja
maior ou igual a 10, e não sendo, o programa apresentará o resultado subtraindo 7.
5.3. Desvios Condicionais Encadeados
Algoritmo:
Perceba que o problema em questão estabelece três condições para calcular o
reajuste do salário do funcionário, sendo:
• Salário < 500, reajuste será de 15%
• Salário >= 500, mas <= 1000, reajuste será de 10%
• Salário > 1000, reajusto será de 5%
(j) Elaborar um programa que efetue a leitura de um valor que esteja entre a
faixa de 1 a 9. Após a leitura do valor fornecido pelo usuário, o programa
deverá indicar uma de duas mensagens: "O valor está na faixa permitida",
caso o usuário forneça o valor nesta faixa, ou a mensagem "O valor está
fora da faixa permitida", caso o usuário forneça valores menores que 1 ou
maiores que 9.
Cuidado para não confundir esta nova estrutura com a estrutura de decisão
usada anteriormente. Aqui existe um retorno à condição após a execução do bloco de
operações, até que a condição se torne falsa.
Algoritmo:
1. Criar uma variável para servir como contador com valor inicial 1;
2. Enquanto o valor do contador for menor ou igual a 5, processar os passos
3, 4 e 5;
3. Ler um valor para a variável X;
4. Efetuar a multiplicação do valor de X por 3, implicando o resultado em R;
5. Apresentar o valor calculado contido na variável R;
6. Acrescentar +1 a variável contador, definida no passo 1;
7. Quando o contador for maior que 5, encerrar o processamento do looping.
Figura 61: Diagrama de blocos para a solução do problema.
Algoritmo
Veja que o contador foi substituído pela variável RESP, que enquanto for
igual a “sim” executará a rotina existente entre as instruções enquanto e fimenquanto.
Neste caso, o número de vezes que a rotina irá se repetir será controlado pelo usuário e
será encerrada somente quando alguma informação diferente de “sim” for fornecida para
a variável RESP.
c) Elaborar um programa que apresente no final o somatório dos valores pares existentes
na faixa de 1 até 500.
f) Elaborar um programa que apresente como resultado o valor de uma potência de uma
base qualquer elevada a um expoente qualquer, ou seja, de BE, em que B é o valor da
base e E o valor do expoente. Observe que neste exercício não pode ser utilizado o
operador de exponenciação do portuguol (^).
g) Escreva um programa que apresente a série de Fibonacci até o décimo quinto termo. A
série de Fibonacci é formada pela sequência: 1, 1, 2, 3, 5, 8, 13, 21, 34, ..., etc. Esta série
se caracteriza pela soma de um termo atual com o seu anterior subsequente, para que seja
formado o próximo valor da sequência. Portanto começando com os números 1, 1 o
próximo termo é 1+1=2, o próximo é 1+2=3, o próximo é 2+3=5, o próximo 3+5=8, etc.
l) Elaborar um programa que efetue a leitura de valores positivos inteiros até que um valor
negativo seja informado. Ao final devem ser apresentados o maior e o menor valores
informados pelo usuário.
Algoritmo
Fatorial é o produto dos números naturais desde 1 até o inteiro n. Sendo assim,
o cálculo de um fatorial é conseguido pela multiplicação sucessiva do número de termos.
No caso do cálculo de uma fatorial de número 5, este é o número de termos a ser utilizado.
Desta forma, o programa deverá executar as multiplicações sucessivamente e acumulá-
las a fim de possuir o valor 120 após 5 passos. O número de passos deverá ser controlado
por um contador.
Algoritmo
Pelo fato de ter que efetuar o cálculo de uma fatorial de 5 (5!), isto implica
que o contador deverá variar de 1 a 5, e por este motivo deverá ser a variável
CONTADOR inicializada com valor 1. Pelo fato de a variável FATORIAL possuir ao
final o resultado do cálculo da fatorial pretendida, esta deverá ser inicializada com valor
1. Se ela for incializada com zero, não existirá resultado final, pois qualquer valor
multiplicado por zero resulta zero.
6.4. Exercícios
f) Apresentar todos os números divisíveis por 4 que sejam menores que 200. Para verificar
se o número é divisível por 4, efetuar dentro da malha a verificação lógica desta condição
com a instrução se, perguntando se o número é divisível; sendo, mostre-o; não sendo,
passe para o próximo passo. A variável que controlará o contador deve ser iniciada com
o valor 1.
h) Elaborar um programa que apresente como resultado o valor de uma potência de uma
base qualquer elevada a um expoente qualquer, ou seja, de BE, em que B é o valor da base
e E o valor do expoente. Observe que neste exercício não pode ser utilizado o operador
de exponenciação do portuguol (^).
i) Escreva um programa que apresente a série de Fibonacci até o décimo quinto termo. A
série de Fibonacci é formada pela sequência: 1, 1, 2, 3, 5, 8, 13, 21, 34, ..., etc. Esta série
se caracteriza pela soma de um termo atual com o seu anterior subsequente, para que seja
formado o próximo valor da sequência. Portanto começando com os números 1, 1 o
próximo termo é 1+1=2, o próximo é 1+2=3, o próximo é 2+3=5, o próximo 3+5=8, etc.
k) Elaborar um programa que apresente como resultado o valor do fatorial dos valores
ímpares situados na faixa numérica de 1 a 10.
7. Linguagem de Programação
7.2. Compilador de C
Este compilador tem uma licença freeware e pode ser baixado a partir da
página http://www.bloodshed.net/dev/devcpp.html.
Bibliotecas são arquivos contendo várias funções que podem ser incorporadas
aos programas escritos em C/C++. A diretiva #include faz com que o texto contido dentro
da biblioteca especificada seja inserido no programa.
Exemplos:
Declara uma variável chamada X, onde pode ser armazenado um número real.
A linguagem C/C++ possui quatro tipos básicos que podem ser utilizados na
declaração de variáveis. São eles: int, float, double, e char. A partir desses tipos básicos,
podem ser definidos outros, conforme apresentado na tabela a seguir.
Tabela 13: Tabela constando os tipos de dados, suas faixas de valores e o seu tamanho aproximado.
Exemplo:
Exemplos:
Este mesmo programa também pode ser feito utilizando apenas uma linha de
comando do scanf.
Exemplos:
Este mesmo programa pode ser reescrito utilizando apenas uma linha para
leitura das variáveis uma linha para a escrita dos dados.
Observe que a saída pode ser personalizada de diferentes formas
Exemplo:
7.4.3. Faça um programa que receba o ano de nascimento de uma pessoa e o ano
atual, calcule e mostre:
a) A idade dessa pessoa em anos;
b) A idade dessa pessoa em meses;
c) A idade dessa pessoa em dias;
d) A idade dessa pessoa em semanas;
7.4.5. Sabe-se que para iluminar de maneira correta os cômodos de uma casa,
para cada m2, deve usar 18W de potência. Faça um programa que receba as
duas dimensões de um cômodo (em metros), calcule e mostre a sua área (em
m2) e a potência de iluminação que deverá ser utilizada.
7.4.8. Faça um programa que receba o valor dos catetos de um triângulo, calcule
e mostre o valor da hipotenusa.
7.4.9. Faça um programa que receba a quantidade de dinheiro em reais que uma
pessoa que vai viajar possui. Essa pessoa vai passar por vários países e
precisa converter seu dinheiro em dólares, marco alemão e libra esterlina.
Sabe-se que a cotação do dólar é de R$ 1,80, do marco alemão é de R$ 2,00
e da libra esterlina é de R$ 1,57. O programa deve fazer as conversões e
mostrá-las.
7.4.10. Faça um programa que receba a quantidade de dinheiro em reais que uma
pessoa que vai viajar possui. Essa pessoa vai passar por vários países e
precisa converter seu dinheiro em dólares, marco alemão e libra esterlina.
Sabe-se que a cotação do dólar é de R$ 1,80, do marco alemão é de R$ 2,00
e da libra esterlina é de R$ 1,57. O programa deve fazer as conversões e
mostra-las.
8. Estrutura Condicional
Os operadores lógicos são &&, || e ! significam e, ou, não e são usados para
conjunção, disjunção e negação respectivamente.
Quando existe mais de uma condição, essas devem estar entre parênteses
assim como todas as condições.
8.4. Exercícios
8.4.1. Faça um programa que receba quatro notas de um aluno, calcule e mostre
a média aritmética das notas e a mensagem de aprovado ou reprovado,
considerando para aprovação média 7.
8.4.4. Faça um programa que receba dois números e execute uma das operações
listadas a seguir de acordo com a escolha do usuário. Se for digitada uma
opção inválida mostrar mensagem de erro e terminar a execução do
programa. As opções são:
1 - Média entre os dois números.
2 - Diferença do maior pelo menor.
3 - O produto entre os dois números.
8.4.5. Uma empresa decide dar um aumento de 30% aos funcionários com
salários inferiores a R$ 500,00. Faça um programa que receba o salário do
funcionário e mostre o valor do salário reajustado ou uma mensagem, caso
o funcionário não tenha direito ao aumento.
8.4.7. Faça um programa que receba a idade de uma pessoa e mostre a mensagem
de maioridade ou não.
8.4.8. Faça um programa que verifique a validade de uma senha fornecida pelo
usuário. A senha é 4531. O programa deve mostrar uma mensagem de
permissão de acesso ou não.
8.4.9. Faça um programa que receba o preço de um produto e o seu código de
origem e mostre a sua procedência. A procedência obedece à tabela a seguir.
8.4.10. Uma empresa decidiu dar uma gratificação de natal aos seus funcionários,
baseada no número de horas extras e no número de horas que o funcionário
faltou ao trabalho. O valor do prêmio é obtido pela consulta na tabela a seguir
em que:
A primeira parte atribui um valor inicial à variável i, que tem como função
controlar o número necessário de repetições.
Exemplo:
Exemplo:
No exemplo anterior, a variável a é inicializada com o valor 15 e vai sendo
decrementada em duas unidades e, a cada decremento, o bloco de comando que está entre
as chaves { ... } é executado. Esse processo se repete até o valor da variável a se tornar
menor que 1 (quando a condição a>=1 assumir valor falso).
Neste tipo de estrutura o teste condicional ocorre no início, isso significa que
existe a possibilidade da repetição não ser executada, quando a condição assumir valor
falso logo na primeira verificação.
Enquanto a condição for verdadeira, os comandos que estão dentro das chaves
serão executados (comando1, comando2, comando3, ...).
9.3. Exercícios
9.3.1. Faça um programa que verifique e mostre os números entre 1000 e 2000
(inclusive) que, quando divididos por 11, produzam resto igual a 5.
9.3.2. Faça um programa para calcular n! (Fatorial de n), sendo que o valor
inteiro de n é fornecido pelo usuário. Sabe-se que:
𝑛! = 1 ∗ 2 ∗ 3 ∗ ⋯ ∗ (𝑛 − 1) ∗ 𝑛
9.3.3. Faça um programa que receba a idade de dez pessoas e que calcule e
mostre a quantidade de pessoas com idade maior ou igual a 18 anos.
9.3.5. Faça um programa que receba a idade e o sexo de sete pessoas e que calcule
e mostre:
A idade média do grupo;
A idade média das mulheres;
A idade médias dos homens.
9.3.6. Faça um programa que receba várias idades e que calcule e mostre a média
das idades digitadas. Finalize digitando idade igual a zero.
9.3.7. A prefeitura de uma cidade fez uma pesquisa entre seus habitantes,
coletando dados sobre o salário e o número de filhos. A prefeitura deseja
saber:
A média do salário da população;
A média do número de filhos;
O maior salário;
A percentagem de pessoas com salários até R$ 150,00.
O final da leitura de dados dar-se-á com a entrada de um salário negativo.
9.3.8. Faça um programa que receba como entrada uma lista de números
positivos ou negativos, terminada com o número zero. O programa deve
fornecer como saída a soma dos números positivos, a soma dos números
negativos e a soma das duas somas parciais.
9.3.10. Uma agência bancária possui vários clientes que podem fazer
investimentos com rendimentos mensais, conforme a tabela a seguir:
Rendimento
Tipo Descrição
Mensal
1 Poupança 1,5%
2 Poupança Plus 2%
Fundos de renda
3 4%
fixa
Uma matriz de uma dimensão ou vetor será representada por seu nome e seu
tamanho (dimensão) entre colchetes. Para ter uma ideia de como utilizar esta estrutura,
considere o seguinte problema: “Calcular a média geral de uma turma de 8 alunos. A
média a ser obtida deve ser a média geral das médias de cada aluno obtida durante o ano
letivo”. Desta forma será necessário somar as médias e dividi-las por 8. A tabela seguinte
apresenta o número de alunos, suas notas bimestrais e respectivas médias anuais. É da
média de cada aluno que será efetuado o cálculo da média da turma.
Tabela 23: Exemplo para o aprendizado de vetores e matrizes. Notas e médias dos alunos
Observe que o nome é um só. O que muda é a informação indicada dentro dos
colchetes. A esta informação dá-se o nome de índice, sendo este o endereço em que o
elemento está armazenado. É necessário que fique bem claro que elemento é o conteúdo
da matriz, neste caso os valores das notas. No caso de MD[1] = 4.5, o número 1 é o índice;
o endereço cujo elemento é 4.5 está armazenado.
1º Exemplo
Algoritmo
Diagrama de Blocos
Algoritmo
Diagrama de Blocos
Observe que quando se faz menção ao índice indica-se a variável que controla
o contador de índice, e no caso do exemplo anterior, a variável i. Quando se faz menção
ao elemento, indica-se: A[i], pois desta forma está se pegando o valor armazenado e não
a sua posição de endereço.
Figura 80: Diagrama de blocos para o 2º exemplo.
10.4. Vetor em C/C++
No exemplo acima, o vetor chamado vet possui dez posições, começando pela
posição 0 e indo até a posição 9 (tamanho do vetor – 1). Em cada posição poderão ser
armazenados números inteiros, conforme especificado pelo tipo int na declaração.
O comando:
Atribui o nome Maria ao vetor nome (um vetor de seis posições, declarado
assim: char nome[6]).
Anteriormente, houve contato com o uso de uma única variável indexada com
apenas uma dimensão (uma coluna e várias linhas), quando foi utilizado o exemplo para
efetuar o cálculo da média geral das médias dos oito alunos. A partir deste ponto, serão
apresentadas tabelas com mais colunas, sendo assim, teremos variáveis no sentido
horizontal e vertical.
A leitura de uma matriz de duas dimensões, assim como das matrizes de uma
dimensão é processada passo a passo, um elemento por vez, sendo utilizada a instrução
leia() seguida da variável mais os seus índices. A seguir são apresentados o diagrama de
blocos e codificação em português estruturado da leitura das 4 notas bimestrais de 8
alunos, sem considerar o cálculo da média.
Observe que está sendo considerada a leitura das 4 notas de 8 alunos. Assim
sendo, a tabela em questão armazena 32 elementos. Um detalhe a ser considerado é a
utilização de duas variáveis para controlar os dois índices de posicionamento de dados na
tabela. Anteriormente, foi utilizada a variável i para controlar as posições dos elementos
dentro da matriz, ou seja, a posição em nível de linha. Neste exemplo, a variável i continua
tendo o mesmo efeito e a segunda variável, a j, está controlando a posição da coluna.
Analisando o diagrama de blocos, temos a inicialização das variáveis i e j
como 1, ou seja, a leitura será efetuada na primeira linha da primeira coluna. Em seguida
é iniciado em primeiro lugar o looping da variável i para controlar a posição em relação
às linhas e depois é iniciado o looping da variável j para controlar a posição em relação
às colunas.
1º Exemplo
Algoritmo
Para resolver este problema, você precisa uma tabela com 10 linhas (pessoas)
e 5 colunas (dados pessoais). Assim sendo, imagine esta tabela como sendo:
Em cada coluna é indicado o seu número, sendo 5 colunas, uma para cada
informação pessoal e o número de linha totalizando um conjunto de 10 informações.
Diagrama de Blocos
Neste exemplo, não estão sendo utilizados para a entrada de dados dois
loopings para controlar o posicionamento dos elementos na matriz. Note que as
referências feitas ao endereço das colunas são citadas como constantes, durante a variação
do valor da variável i.
Diagrama de Blocos
Neste segundo exemplo está sendo levado em consideração apenas para o
diagrama de blocos o trecho correspondente a ordenação.
2º Exemplo
Algoritmo
Depois a instrução para i de 1 até 8 faça inicializa o primeiro looping que tem
por finalidade controlar o posicionamento dos elementos no sentido linear. Neste ponto,
a variável SOMA_NT é inicializada com o valor zero pra o primeiro aluno. Esta variável
irá guardar a soma das quatro notas de cada aluno durante a execução do segundo looping.
Neste momento, é solicitado antes do segundo looping o nome do aluno.
Após a disposição dos alunos por ordem alfabética de nome, é dado início à
apresentação dos nomes de cada aluno e suas respectivas médias. Ao final, a variável
MEDIA_GP determina o cálculo da média do grupo (média das médias), através do valor
armazenado na variável SOMA_MD dividido por 8 (total de alunos).
11.4. Matriz em C/C++
Atribui o valor 5 à posição referente à linha 1 (2ª linha) coluna 4 (5ª coluna)
da matriz.
Atribui a letra D à posição referente à linha 3 (4ª linha) coluna 2 (3ª coluna)
da matriz.
Para ler dados do teclado e atribuir a uma matriz, supondo que a mesma tenha
sido declarada como int MAT [7][3], pode-se executar os comandos a seguir.
11.5. Exercícios
a) Ler duas matrizes A e B, cada uma com uma dimensão para 12 elementos.
Construir uma matriz C de duas dimensões, sendo que a primeira coluna
da matriz C deverá ser formada pelos elementos da matriz A
multiplicados por 2 e a segunda coluna deverá ser formada pelos
elementos da matriz B subtraídos de 5. Apresentar a matriz C.
b) Ler uma matriz A de duas dimensões com 8 linhas e 6 colunas. Construir
uma matriz B de uma dimensão que seja formada pela soma de cada linha
da matriz A. Ao final apresentar o somatório dos elementos da matriz B.
c) Elaborar um programa que efetue a leitura de 20 valores inteiros em uma
matriz A de duas dimensões com 4 linhas e 5 colunas. Construir uma
matriz B de uma dimensão para 4 elementos que seja formada pelo
somatório dos elementos correspondentes de cada linha da matriz A.
Construir tam’bem uma matriz C de uma dimensão para 5 elementos que
seja formada pelo somatório dos elementos correspondentes de cada
coluna da matriz A. Ao final o programa deverá apresentar o total do
somatório dos elementos da matriz B com o somatório dos elementos da
matriz C.
d) Ler duas matrizes A e B de duas dimensões com 5 linhas e 5 colunas. A
matriz A deverá ser formada por valores que não seja divisíveis por 3,
enquanto a matriz B deverá ser formada por valores que não sejam
divisíveis por 6. As entradas dos valores nas matrizes deverão ser
validadas pelo programa então pelo usuário. Construir e apresentar uma
matriz C de mesma dimensão e número de elementos que contenha a soma
dos elementos da matrizes A e B.
12.Referências Bibliográficas
LEONARDO MÜLLER (10 de Janeiro de 2014), Intel se prepara para colocar RAM
DDR4 no mercado até o fim de 2014. Tecmundo. Disponível em <
http://www.tecmundo.com.br/intel/48936-intel-se-prepara-para-colocar-ram-ddr4-no-
mercado-ate-o-fim-de-2014.htm >. Acessado em: 26/02/2014.
LUCAS SFAIR (9 de fevereiro de 2009). Entenda sobre placas de som e saiba escolher a
sua. Tecmundo. Página visitada em 25 de fevereiro de 2014.